引言 SoC設計的快速發(fā)展是以IP核復用為基礎的。IP核的復用極大地提高了SoC系統設計的開(kāi)發(fā)效率,SoC 片上總線(xiàn)的選擇是IP核間集成與互連的關(guān)鍵技術(shù)之一。目前片上總線(xiàn)的標準協(xié)議眾多,如ARM公司提出的AMBA總線(xiàn)、OPEN CORES組織提出的WishBone總線(xiàn)、IBM公司提出的CoreConnect總線(xiàn)等。SoC片上總線(xiàn)的多樣性對IP核的封裝規范提出了要求。標準的IP核封裝規范有助于提高IP核的復用甚至實(shí)現核的即插即用;谔岣逫P核復用以及即插即用目的,OCP-IP組織提出了OCP-IP標準。 1 OCP-lP標準介紹 1.1 OCP協(xié)議 OCP(Open Core Protoco1)標準是OCP-IP組織制定的一種以提高IP核的復用及實(shí)現IP核的即插即用為目的的IP核標準。SoC芯片設計不再是門(mén)級的設計,而是IP核復用及其接口的設計。IP核要集成到一個(gè)SoC系統中,要考慮很多問(wèn)題,例如:模塊間的同步,如全局執行、數據交換的同步操作等;協(xié)議轉換匹配,不同IP核模塊間可能使用不同的協(xié)議,這樣必須考慮協(xié)議轉換的問(wèn)題。這些問(wèn)題給IP復用帶來(lái)了一定的難度,并使SoC芯片的time-to-market (上市時(shí)間)延長(cháng)。為解決這些問(wèn)題,一些大公司提出了自己的總線(xiàn)接口標準,如ARM的AMBA總線(xiàn)、IBM的CoreConnect總線(xiàn)、Altera的 Avalon總線(xiàn)等。因為核的多樣性,使用完全相同的總線(xiàn)接口是不現實(shí)的。這就意味著(zhù),如果總線(xiàn)A上的一個(gè)IP核要移植到另一系統的總線(xiàn)B上,就需要更改此IP的接口以及數據交換的方式。如果設計者不了解總線(xiàn)B的數據交換協(xié)議,這樣就對SoC系統的開(kāi)發(fā)帶來(lái)一系列困難。OCP-IP正是針對這些問(wèn)題提出的。OCP協(xié)議是免費的,獨立于具體的總線(xiàn)。它將軟件中的分層概念應用到IP核接口,提供一種具有通用結構定義、可擴展的接口協(xié)議,能完全滿(mǎn)足IP內核通信機制的所有要求,方便了IP核與系統的集成。 OCP協(xié)議使IP核的功能與系統的接口無(wú)關(guān),設計人員不需要了解IP核的功能也能利用它進(jìn)行系統設計。OCP接口允許設計者根據不同的目的配置接口,包括接口的數據寬度、交換的握手協(xié)議等,并且在SoC設計中可以裁剪核的功能,降低設計復雜性,減小面積,同時(shí)滿(mǎn)足SoC的要求;OCP接口還保持核在集成到系統的過(guò)程中完全不被改變(即在總線(xiàn)寬度、總線(xiàn)頻率或電氣負載有變化時(shí)核保持不變)。使用OCP接口的設計可以交付即插即用的模塊,同時(shí)支持核的開(kāi)發(fā)與系統設計并行,節省設計時(shí)間。 OCP采用套接口(socket)的方法實(shí)現IP核的即插即用,如圖1所示。Target Bus A表示總線(xiàn)A,Target Bus B表示總線(xiàn)B。不論總線(xiàn)A或者總線(xiàn)B是哪一類(lèi)總線(xiàn)協(xié)議,只要總線(xiàn)上提供了OCP的接口,那么符合OCP協(xié)議的IP核就可以隨意集成到任意總線(xiàn)上去,不需要重新設計IP核的接口。 ![]() 1.2 OCP通信方式 OCP協(xié)議定義了兩個(gè)通信實(shí)體問(wèn)點(diǎn)到點(diǎn)的接口。其中一個(gè)實(shí)體作為通信的主體(Master),另一個(gè)作為從體(Slave)。只有Master可以發(fā)命令,Slave響應Master的命令,接收或發(fā)送數據。封裝接口模塊必須擔當每個(gè)連接實(shí)體的對應端,當連接實(shí)體是Master時(shí),封裝接口模塊就作為對應的Slave;當連接實(shí)體是Slave時(shí),封裝接口模塊作Master。 OCP的系統架構如圖2所示。圖中有3個(gè)IP核,其中左邊標有主控的IP核是通信的發(fā)起方或者主控方,稱(chēng)為Master;最右邊標有目標的是通信的目標對象,稱(chēng)為Slave;中間的IP核既可作為Master又可作Slave;下面的框代表OCP-IP封裝接口模塊;從Master出來(lái)并進(jìn)入Slave的箭頭表示OCP請求命令,從Slave出來(lái)并進(jìn)入Master的箭頭表示OCP的響應。2個(gè)IP核通過(guò)接口通信的過(guò)程是:功能為Master的IP核發(fā)出請求命令給對應的Slave端(總線(xiàn)封裝接口模塊);封裝接口模塊將請求命令轉換成對應的總線(xiàn)命令傳送給接收方的總線(xiàn)封裝模塊;接收方的總線(xiàn)封裝模塊再作為Master,把對應的內部總線(xiàn)傳輸轉換成標準的OCP命令傳送給目標IP核,目標IP核接收到命令并響應命令和返回讀寫(xiě)的數據。 ![]() 2 基于A(yíng)MBA總線(xiàn)的OCP接口設計 AMBA(Advaneed Microcontroller Bus Architecture)總線(xiàn)規范是ARM公司設計的一種用于高性能嵌入式系統的總線(xiàn)標準。AMBA總線(xiàn)規范是開(kāi)放標準,通過(guò)ARM公司的授權就可以免費獲得。它獨立于處理器和制造工藝技術(shù),增強了各種應用中的外設和系統IP核單元的可重用性。2.O版AMBA標準定義了3組總線(xiàn):AHB(AM-BA高性能總線(xiàn))、ASB(AMBA系統總線(xiàn))、和APB(AM-BA外設總線(xiàn))。AHB總線(xiàn)應用于要求高速度高帶寬的系統。本文以AHB總線(xiàn)為例,說(shuō)明OCP -IP如何集成到SoC系統總線(xiàn)上。AMBA總線(xiàn)基本傳輸時(shí)序如圖3所示。HCLK表示AMBA系統時(shí)鐘,HADDR[31:0]表示32位地址總線(xiàn), HWDATA[31:O]表示32位寫(xiě)操作時(shí)的數據總線(xiàn),HREADY是AMBA總線(xiàn)的讀寫(xiě)狀態(tài)信號(狀態(tài)為低電平時(shí),表示一次讀寫(xiě)操作完成), HRDATA[31:0]表示讀操作時(shí)的數據總線(xiàn)。 ![]() OCP-IP核的功能是可裁剪的,即OCP-IP的大部分信號都是可選擇的。根據核的功能,選擇使用不同的信號。OCP協(xié)議中共有三大類(lèi)型號:數據流信號 (dataflowsignals)、邊帶信號(sideband)、測試信號(test signals)。數據流信號主要包括:基本信號(basic signals)、簡(jiǎn)單擴展信號(simple extensions signals)、突發(fā)擴展信號(burst exten-sions signals)和線(xiàn)程擴展信號(thread extensions signals)。邊帶信號主要包括:復位(.Reset)、中斷(Interrupt)、錯誤(Error)等信號。測試信號主要包括用于支持掃描 (Scan)、時(shí)鐘控制和IEEE 1149.1(JTAG)的信號。此處用到的OCP信號包括:Reset(復位)、Clk(時(shí)鐘)、En-ableClk(時(shí)鐘使能)、MAddr(地址)、MCmd(命令)、MData(數據)、SCmdAccept(命令接受)、SData(Slave數據)、SResp(操作成功標志)。簡(jiǎn)單的 OCP讀寫(xiě)時(shí)序如圖4所示。Request Phase表示請求階段,Response Phase表示響應階段。A處由系統Master發(fā)出1個(gè)WR寫(xiě)命令,并給出地址A1和數據D1。隨即Slave發(fā)出命令接受響應ScmdAccept,此處一個(gè)周期完成了一個(gè)寫(xiě)周期操作,不需要Slave給出寫(xiě)操作成功響應。C處系統Master發(fā)出一個(gè)RD讀命令,并給出要讀取的地址A2。Slave 隨即給出命令接受響應信號SCmdAccept,在下一個(gè)時(shí)鐘周期D處Slave給出要讀取的數據D2并在Slave響應信號SResp上給出讀操作成功標志DVA。此處讀操作用了2個(gè)時(shí)鐘周期。 ![]() OCP-IP跟AMBA總線(xiàn)的通信通過(guò)設計2個(gè)狀態(tài)機來(lái)實(shí)現,1個(gè)用于接收AMBA總線(xiàn)上的流水數據,1個(gè)用于發(fā)送接收的數據并以OCP標準的方式發(fā)送。接收數據的狀態(tài)機編碼如下: ![]() H_CTRL_PHASE1用于存儲第1級流水指令,H_CTRL_PHASE2用于存儲第2級流水指令,其狀態(tài)轉移圖如圖5所示。當AMBA總線(xiàn)上發(fā)出第1個(gè)讀寫(xiě)指令,狀態(tài)機進(jìn)入H_CTRL_PHASE1狀態(tài),并將第1個(gè)讀寫(xiě)指令轉換成OCP命令。因為AMBA總線(xiàn)是基于流水的操作,所以第2條指令的發(fā)出不需要等第1條指令執行結束。這時(shí)候,狀態(tài)機進(jìn)入H_CTRL_PHASE2狀態(tài),并將此指令存儲起來(lái),等OCP命令執行結束立即將此存儲的指令轉換成OCP命令。這時(shí)如果AMBA總線(xiàn)上再次發(fā)出第3條指令,則狀態(tài)機進(jìn)入H_CTRL_PHASE1狀態(tài),并存儲此指令。 ![]() 發(fā)送接收到的數據的狀態(tài)機編碼如下: ![]() 狀態(tài)轉移圖如圖6所示。當接收數據的狀態(tài)機接收到AMBA總線(xiàn)上的命令時(shí),狀態(tài)機讓OCP接口進(jìn)入第1個(gè)讀寫(xiě)操作狀態(tài),即READl狀態(tài)或者WRITE1 狀態(tài)。如果AMBA總線(xiàn)上有持續的流水操作命令,狀態(tài)機進(jìn)入READ2狀態(tài)或者WRITE2狀態(tài),即在A(yíng)MBA流水操作的條件下,以1結尾的狀態(tài)的下一個(gè)狀態(tài)一定是以2結尾的狀態(tài),反之以2結尾的狀態(tài)的下一個(gè)狀態(tài)一定是以1結尾的狀態(tài)。 ![]() 3 OCP-IP標準封裝軟件設計 OCP是一種IP的標準,但不僅僅是IP的接口和數據的交換方式,還規定了IP的配置、端口等信息,即所謂的OCP配置文件。讀取OCP配置文件中的內容,就可以知道此IP對應的OCP接口的性能,從而對總線(xiàn)上的接口進(jìn)行配置,進(jìn)而實(shí)現IP的即插即用。雖然IP的功能是多樣的,總線(xiàn)的數據交互方式也是多樣的,但OCP接口的時(shí)序是固定的。這樣就可以通過(guò)設計軟件提取IP的端口信息,并自動(dòng)生成相應的OCP接口模塊。該封裝軟件運行流程如圖7所示。用戶(hù)的 IP可以直接掛在該SoC平臺上進(jìn)行驗證,同時(shí)也可以直接集成到其他帶有OCP接口的SoC系統中去,加快IP的驗證和系統的設計。 ![]() 封裝軟件采用MFC(微軟基礎類(lèi)庫)來(lái)編寫(xiě)。通過(guò)設計用戶(hù)界面,用戶(hù)只要輸入IP的時(shí)鐘、地址、數據、讀寫(xiě)控制信號等,就可以自動(dòng)生成1個(gè)OCP的接口,以及標準的配置文件,從而實(shí)現IP的即插即用以及IP的統一管理。 結語(yǔ) OCP是免費的基于點(diǎn)對點(diǎn)傳輸的IP核的標準協(xié)議,可重配置以及可擴展性很強,可以實(shí)現真正意義上的IP核即插即用,減少SoC系統設計的時(shí)間。本文討論了OCP-IP的協(xié)議與特點(diǎn),設計了基于A(yíng)MBA總線(xiàn)的OCP-IP接口,提出了一種IP自動(dòng)封裝的方法,為IP核的集成和管理帶來(lái)極大的方便。 參考文獻 1. 張麗媛.章軍.陳新華 三種SoC片上總線(xiàn)的分析與比較 [期刊論文] -山東科技大學(xué)學(xué)報(自然科學(xué)版)2005(2) 2. 饒云華.鄢媛媛.朱小虎.周宇.曹陽(yáng) 面向SoC的開(kāi)放式IP核接口協(xié)議(OCP)研究 [期刊論文] -中國集成電路2007(2) 3. OCPIP OCP Specification Rev 2.1 4. ARM AMBA Specification Rev 2.0 作者:電子科技大學(xué) 周小練 王憶文 李平 來(lái)源:《單片機與嵌入式系統應用》 2009(7) |