朱秀斌
(淄博職業(yè)學(xué)院 電子電氣工程系,山東 淄博 255314)
近年來,F(xiàn)PGA器件設(shè)計生產(chǎn)制造技術(shù)的不斷成熟極大地降低了使用FPGA進行產(chǎn)品設(shè)計的成本,半導(dǎo)體工藝技術(shù)的進步與 EDA(Electronic Design Automation)技術(shù)的發(fā)展也降低了ASIC(Application Specific Integrated Circuit)設(shè)計的門檻,再加上系統(tǒng)設(shè)計技術(shù)日新月異,使得基于 SoC(System on Chip)原理的 FPGA設(shè)計及 ASIC設(shè)計如多年前的單片機設(shè)計一樣在嵌入式系統(tǒng)設(shè)計領(lǐng)域得到了廣泛的應(yīng)用。
SoC技術(shù)是一種高度集成化、固件化的系統(tǒng)集成技術(shù)。使用SoC技術(shù)設(shè)計系統(tǒng)的核心思想就是把整個應(yīng)用電子系統(tǒng)全部集成在一個芯片中。SoC的設(shè)計過程中,最具特色的就是基于片上總線OCB(On-Chip Bus)的IP(Intellectual Property)復(fù)用技術(shù)。系統(tǒng)的各個IP模塊與其他系統(tǒng)功能模塊通過片上總線進行互聯(lián)通信,因此片上總線的正確選擇和合理設(shè)計對嵌入式系統(tǒng)應(yīng)用具有重大的影響。
目前較有影響力的總線標準主要有:IBM公司的CoreConnect總線、ARM公司的 AMBA總線、Silicore公司的Wishbone總線和Altera公司的Avalon總線。這4種總線技術(shù)的最大區(qū)別在于各自提供的技術(shù)特性及其規(guī)范的完整性方面的差異。
在這4種總線中,Wishbone總線是唯一一種免費的片上總線標準 并且OpenCores組織選用Wishbone作為片上總線標準,提供了大量的基于Wishbone總線開放IP核。因此,采用Wishbone片上總線進行SoC設(shè)計,可以利用大量的免費資源,從而可以節(jié)省開發(fā)成本,加快系統(tǒng)開發(fā)進程。
Wishbone總線規(guī)范定義了一種IP核之間互連的通用接口,可用于軟核、固核和硬核之間的互連,并且對開發(fā)工具和目標硬件沒有特殊要求,幾乎兼容目前存在的所有主流EDA綜合工具,可以用多種硬件描述語言來實現(xiàn)[1]。
Wishbone總線結(jié)構(gòu)比較簡單,僅僅定義了一條高速總線,并提供了4種不同的IP互連結(jié)構(gòu):
(1)點到點(point-to-point):用于兩IP核直接互連。
(2)數(shù)據(jù)流(data flow):用于多個串行IP核之間的數(shù)據(jù)并發(fā)傳輸。
(3)共享總線(shared bus):多個IP核共享一條總線。
(4)交叉開關(guān)(crossbar switch):同時連接多個主從部件,提高系統(tǒng)吞吐量。
點到點互連允許1臺主設(shè)備與1臺從設(shè)備相互通信;數(shù)據(jù)流互聯(lián)是點到點互聯(lián)的特例;共享總線互聯(lián)允許2臺及以上的主設(shè)備與1臺及以上的從設(shè)備進行通信,但在任意時刻只能有一對主/從設(shè)備相互通信;交叉互聯(lián)允許多對主/從設(shè)備相互通信,數(shù)據(jù)傳輸率高。Wishbone總線的4種互聯(lián)結(jié)構(gòu)如圖1所示。
在這4種互連結(jié)構(gòu)中,目前使用較多的是交叉開關(guān)結(jié)構(gòu)。在這種結(jié)構(gòu)中,多個主設(shè)備可以并行訪問從設(shè)備。雖然這樣會增加硬件邏輯資源,但是在多主設(shè)備的系統(tǒng)中能夠明顯提高系統(tǒng)數(shù)據(jù)吞吐量。
目前OpenCores組織發(fā)布了一些采用交叉互聯(lián)結(jié)構(gòu)的Wishbone總線IP核,如 wb_conmax、wb_conbus以及針對Openrisc處理器參考平臺orp中的tcp_top。大部分的設(shè)計者在完成設(shè)計時采用了以上的IP,但基于這種結(jié)構(gòu)所設(shè)計的SoC系統(tǒng),所有的主設(shè)備與從設(shè)備均通過單一總線進行互聯(lián)。對于低速設(shè)備而言,為達到時序設(shè)計要求,必須通過硬件邏輯降頻處理。但是總線上硬件電路一直工作在高速時鐘,從而增加了系統(tǒng)總體功耗。鑒于此,在進行SoC設(shè)計時,針對外設(shè)速度不同,采用二級Wishbone總線的機制實現(xiàn)IP互聯(lián)。這樣不但可以為系統(tǒng)的后續(xù)開發(fā)與設(shè)計優(yōu)化提供支持,而且能夠方便地擴展與互連更多外設(shè)。
圖1 Wishbone總線的4種IP互聯(lián)結(jié)構(gòu)
本文所設(shè)計的Wishbone二級總線基于wb_conmax IP核,首先簡單介紹wb_conmax核。
wb_conmax是基于Wishbone總線規(guī)范的互連矩陣,采用交叉方式互連結(jié)構(gòu),可以直接用于基于Wishbone總線規(guī)范設(shè)計的IP的集成[2]。它主要有以下特點:
(1)最多支持8個主設(shè)備;
(2)最多支持16個從設(shè)備;
(3)支持 1、2或者4級優(yōu)先級。
其基本結(jié)構(gòu)可以參考圖2。由圖可知,wb_conmax為8×16的結(jié)構(gòu),一般情況下能夠滿足 SoC系統(tǒng)的要求,而且完全可以實現(xiàn)不同主設(shè)備與不同從設(shè)備的并行通信。所以該IP在很多設(shè)計中得到了應(yīng)用。
本文所設(shè)計的Wishbone二級總線基于wb_conmax完成,基本的結(jié)構(gòu)如圖2所示。
圖2 wishbone二級總線基本結(jié)構(gòu)
在上圖結(jié)構(gòu)的具體實現(xiàn)中,wb_conmax0直接采用OpenCores上提供的wb_conmax,地址空間的分配足以滿足常用的SoC系統(tǒng)的各種地址空間的分配。wb_conmax1在wb_conmax0的基礎(chǔ)上對地址譯碼部分做了處理。其中總線橋主要實現(xiàn)wb_conmax0與wb_conmax1之間的數(shù)據(jù)地址信號的互連與同步處理[3]。
2.2.1 wb_conmax地址空間分配
wb_conmax支持16個Slave設(shè)備,默認的地址 空 間 為 0x0000_000,0x1000_0000,0x2000_0000…0xf000_0000,每個Slave設(shè)備的地址空間高達256 MB。在一般的嵌入式系統(tǒng)設(shè)計中,不管對于尋址空間比較大的SDRAM還是Flash,均能夠滿足設(shè)計要求。因此,在本系統(tǒng)中,將二級總線的尋址空間定義在256 MB范圍內(nèi)。
2.2.2 總線橋的設(shè)計
對于Wishbone二級總線設(shè)計的具體應(yīng)用,因為與之進行互聯(lián)的設(shè)備均采用標準Wishbone總線的信號,而不像AMBA中有AHB與APB之分,所以總線橋的設(shè)計中不涉及總線信號轉(zhuǎn)換問題,主要實現(xiàn)地址編碼的實現(xiàn)與不同時鐘域信號的同步操作。
(1)總線橋中的地址編碼
wb_conmax1的地址獨立于wb_conmax進行編碼,為了設(shè)計的方便與滿足系統(tǒng)應(yīng)用,在這里簡單地將wb_conmax1的相對地址分配為0x0000_0000,0x0100_0000,0x0200_0000,0x0300_000…0x0f00_0000。 每個 Slave設(shè)備可分配的地址空間為16 MB,這在嵌入式系統(tǒng)的低速外設(shè)尋址中基本都可以滿足。由圖2所示的總線橋進行連接。如果接在wb_conmax0的slave14上,則實際系統(tǒng)中低速外設(shè)的訪問地址為0xe000_0000,0xe100_0000,0xe200_000,0xe300_0000…0xef00_0000。
(2)總線橋中的同步邏輯設(shè)計
在Wishbone二級總線的設(shè)計中,兩級總線工作在不同時鐘頻率下,以滿足不同設(shè)備應(yīng)用的需求,所以在總線橋中必須做好同步邏輯的設(shè)計。對于一些數(shù)據(jù)量比較大或者突發(fā)傳輸?shù)牟僮?,同步邏輯設(shè)計常采用FIFO來實現(xiàn);而對于其他數(shù)據(jù)量比較小的傳輸,多采用簡單的雙D觸發(fā)器寄存并由響應(yīng)信號等待機制進行實現(xiàn)。
在本設(shè)計中,第二級總線的工作頻率只是第一級總線工作頻率的偶數(shù)分頻,所以同步邏輯采用響應(yīng)信號的等待機制。一般情況下,在多級總線系統(tǒng)中,高速總線與低速總線的工作頻率常為4倍或者2倍的關(guān)系[4]??紤]到二級總線所連接外設(shè)的工作頻率,總線橋?qū)杉壙偩€工作頻率定為4:1的關(guān)系。對于響應(yīng)等待信號的處理,通過判斷硬件計數(shù)器的相應(yīng)位實現(xiàn)。
本文以Wishbone總線接口的開源微處理器AEMB[5]、片上存儲on-chip-ram、gpio及UART控制器構(gòu)成最小SoC系統(tǒng)[6]。SoC系統(tǒng)分別采用單一Wishbone總線與二級Wish-bone總線兩種結(jié)構(gòu)進行互聯(lián)。從SoC系統(tǒng)的外部接口來看,兩種結(jié)構(gòu)的SoC系統(tǒng)分別配備兩組GPIO及UART控制器。其中采用單一Wishbone總線結(jié)構(gòu)互聯(lián)的SoC系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 基于單一總線結(jié)構(gòu)的SoC系統(tǒng)互聯(lián)
SoC系統(tǒng)基于二級總線的互聯(lián)結(jié)構(gòu),如圖4所示。作為分析原型,gpio0與uart0在系統(tǒng)中作為高速設(shè)備連接在第一級總線上,對應(yīng)的gpio1與uart1作為低速外設(shè)連接在第二級總線上。其中第一級總線的頻率設(shè)定為60 MHz,而二級總線頻率與之為四分頻關(guān)系,定為15 MHz。
圖4 基于二級總線結(jié)構(gòu)的SoC系統(tǒng)互聯(lián)
對于上述不同系統(tǒng)結(jié)構(gòu)的SoC系統(tǒng),基于Altera的EP2C50系列FPGA使用QuartusII進行綜合適配得到基于FPGA實現(xiàn)時的資源占用情況報告,如表1所示。
表1 單一總線與二級總線SoC系統(tǒng)的FPGA資源占用
使用QuartusII中所集成的功耗分析工具Powerplay Power Analyzer Tool進行簡單的功耗分析。其中singlebus_soc的總線頻率為單一的 60 MHz,doublebus_soc的第一級總線頻率為60 MHz,第二級總線頻率為15 MHz。兩種系統(tǒng)結(jié)構(gòu)的簡單功耗分析報告如表2所示。
表2 單一總線與二級總線SoC系統(tǒng)的FPGA實現(xiàn)的功耗分析
通過表1所列數(shù)據(jù)的對比分析可知,相比于單一總線結(jié)構(gòu),二級總線結(jié)構(gòu)因為總線橋等相關(guān)邏輯的使用,使得SoC系統(tǒng)的硬件實現(xiàn)面積有所增加。從表2的數(shù)據(jù)對比可知,使用二級總線結(jié)構(gòu)的SoC系統(tǒng)的核心動態(tài)功耗相比單一總線結(jié)構(gòu)的SoC系統(tǒng)有明顯的降低。
本文選用Wishbone總線進行SoC系統(tǒng)設(shè)計。通過對Wishbone總線規(guī)范的分析,發(fā)現(xiàn)了基于Wishbone總線規(guī)范進行系統(tǒng)設(shè)計互連的局限。針對此,本文提出了基于wb_conmax的二級Wishbone總線設(shè)計方法。通過對Wishbone二級總線的擴展,使得在系統(tǒng)設(shè)計中可以方便地根據(jù)系統(tǒng)IP類型進行劃分互連,提高了設(shè)計的重用,同時為低功耗要求比較嚴格的設(shè)計提供了優(yōu)化策略。最后通過搭建簡化SoC系統(tǒng),對基于兩種不同總線結(jié)構(gòu)互聯(lián)實現(xiàn)的SoC系統(tǒng)進行綜合與功耗分析,驗證了二級總線結(jié)構(gòu)在低功耗設(shè)計中應(yīng)用的可行性。
[1]OpenCores Organization.Wishbone System-on-Chip(SoC)inter connection architecture for portable IP cores[S].Revision:B.3,2002-09-07:4-32.
[2]RUDOLF U.Wishbone interconnect matrix IPcore[S].Rev.1.1 3,2002-10-03:5-12.
[3]宋云揚,羅仁貴,侯立剛,等.片上系統(tǒng)中Wishbone/AMBA AHB總線橋的前端設(shè)計[J].電子工程師,2007(33):18-20.
[4]開元海,汪超,鄭勇.基于S3C2440與WinCE平臺上的FIQ驅(qū)動程序的實現(xiàn)[J].微型機與應(yīng)用,2012,31(24):89-91.
[5]桑圣鋒,張德學(xué),于國蘋.AEMB軟核處理器的SoC系統(tǒng)驗證平臺[J].單片機與嵌入式系統(tǒng)應(yīng)用,2010(4):43-45.
[6]鄢永明,劉軼民,曾云,等.基于8051軟核的 SOPC系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2005,31(10):72-75.