朱秀斌
(淄博職業學院 電子電氣工程系,山東 淄博 255314)
近年來,FPGA器件設計生產制造技術的不斷成熟極大地降低了使用FPGA進行產品設計的成本,半導體工藝技術的進步與 EDA(Electronic Design Automation)技術的發展也降低了ASIC(Application Specific Integrated Circuit)設計的門檻,再加上系統設計技術日新月異,使得基于 SoC(System on Chip)原理的 FPGA設計及 ASIC設計如多年前的單片機設計一樣在嵌入式系統設計領域得到了廣泛的應用。
SoC技術是一種高度集成化、固件化的系統集成技術。使用SoC技術設計系統的核心思想就是把整個應用電子系統全部集成在一個芯片中。SoC的設計過程中,最具特色的就是基于片上總線OCB(On-Chip Bus)的IP(Intellectual Property)復用技術。系統的各個IP模塊與其他系統功能模塊通過片上總線進行互聯通信,因此片上總線的正確選擇和合理設計對嵌入式系統應用具有重大的影響。
目前較有影響力的總線標準主要有:IBM公司的CoreConnect總線、ARM公司的 AMBA總線、Silicore公司的Wishbone總線和Altera公司的Avalon總線。這4種總線技術的最大區別在于各自提供的技術特性及其規范的完整性方面的差異。
在這4種總線中,Wishbone總線是唯一一種免費的片上總線標準 并且OpenCores組織選用Wishbone作為片上總線標準,提供了大量的基于Wishbone總線開放IP核。因此,采用Wishbone片上總線進行SoC設計,可以利用大量的免費資源,從而可以節省開發成本,加快系統開發進程。
Wishbone總線規范定義了一種IP核之間互連的通用接口,可用于軟核、固核和硬核之間的互連,并且對開發工具和目標硬件沒有特殊要求,幾乎兼容目前存在的所有主流EDA綜合工具,可以用多種硬件描述語言來實現[1]。
Wishbone總線結構比較簡單,僅僅定義了一條高速總線,并提供了4種不同的IP互連結構:
(1)點到點(point-to-point):用于兩IP核直接互連。
(2)數據流(data flow):用于多個串行IP核之間的數據并發傳輸。
(3)共享總線(shared bus):多個IP核共享一條總線。
(4)交叉開關(crossbar switch):同時連接多個主從部件,提高系統吞吐量。
點到點互連允許1臺主設備與1臺從設備相互通信;數據流互聯是點到點互聯的特例;共享總線互聯允許2臺及以上的主設備與1臺及以上的從設備進行通信,但在任意時刻只能有一對主/從設備相互通信;交叉互聯允許多對主/從設備相互通信,數據傳輸率高。Wishbone總線的4種互聯結構如圖1所示。
在這4種互連結構中,目前使用較多的是交叉開關結構。在這種結構中,多個主設備可以并行訪問從設備。雖然這樣會增加硬件邏輯資源,但是在多主設備的系統中能夠明顯提高系統數據吞吐量。
目前OpenCores組織發布了一些采用交叉互聯結構的Wishbone總線IP核,如 wb_conmax、wb_conbus以及針對Openrisc處理器參考平臺orp中的tcp_top。大部分的設計者在完成設計時采用了以上的IP,但基于這種結構所設計的SoC系統,所有的主設備與從設備均通過單一總線進行互聯。對于低速設備而言,為達到時序設計要求,必須通過硬件邏輯降頻處理。但是總線上硬件電路一直工作在高速時鐘,從而增加了系統總體功耗。鑒于此,在進行SoC設計時,針對外設速度不同,采用二級Wishbone總線的機制實現IP互聯。這樣不但可以為系統的后續開發與設計優化提供支持,而且能夠方便地擴展與互連更多外設。

圖1 Wishbone總線的4種IP互聯結構
本文所設計的Wishbone二級總線基于wb_conmax IP核,首先簡單介紹wb_conmax核。
wb_conmax是基于Wishbone總線規范的互連矩陣,采用交叉方式互連結構,可以直接用于基于Wishbone總線規范設計的IP的集成[2]。它主要有以下特點:
(1)最多支持8個主設備;
(2)最多支持16個從設備;
(3)支持 1、2或者4級優先級。
其基本結構可以參考圖2。由圖可知,wb_conmax為8×16的結構,一般情況下能夠滿足 SoC系統的要求,而且完全可以實現不同主設備與不同從設備的并行通信。所以該IP在很多設計中得到了應用。
本文所設計的Wishbone二級總線基于wb_conmax完成,基本的結構如圖2所示。

圖2 wishbone二級總線基本結構
在上圖結構的具體實現中,wb_conmax0直接采用OpenCores上提供的wb_conmax,地址空間的分配足以滿足常用的SoC系統的各種地址空間的分配。wb_conmax1在wb_conmax0的基礎上對地址譯碼部分做了處理。其中總線橋主要實現wb_conmax0與wb_conmax1之間的數據地址信號的互連與同步處理[3]。
2.2.1 wb_conmax地址空間分配
wb_conmax支持16個Slave設備,默認的地址 空 間 為 0x0000_000,0x1000_0000,0x2000_0000…0xf000_0000,每個Slave設備的地址空間高達256 MB。在一般的嵌入式系統設計中,不管對于尋址空間比較大的SDRAM還是Flash,均能夠滿足設計要求。因此,在本系統中,將二級總線的尋址空間定義在256 MB范圍內。
2.2.2 總線橋的設計
對于Wishbone二級總線設計的具體應用,因為與之進行互聯的設備均采用標準Wishbone總線的信號,而不像AMBA中有AHB與APB之分,所以總線橋的設計中不涉及總線信號轉換問題,主要實現地址編碼的實現與不同時鐘域信號的同步操作。
(1)總線橋中的地址編碼
wb_conmax1的地址獨立于wb_conmax進行編碼,為了設計的方便與滿足系統應用,在這里簡單地將wb_conmax1的相對地址分配為0x0000_0000,0x0100_0000,0x0200_0000,0x0300_000…0x0f00_0000。 每個 Slave設備可分配的地址空間為16 MB,這在嵌入式系統的低速外設尋址中基本都可以滿足。由圖2所示的總線橋進行連接。如果接在wb_conmax0的slave14上,則實際系統中低速外設的訪問地址為0xe000_0000,0xe100_0000,0xe200_000,0xe300_0000…0xef00_0000。
(2)總線橋中的同步邏輯設計
在Wishbone二級總線的設計中,兩級總線工作在不同時鐘頻率下,以滿足不同設備應用的需求,所以在總線橋中必須做好同步邏輯的設計。對于一些數據量比較大或者突發傳輸的操作,同步邏輯設計常采用FIFO來實現;而對于其他數據量比較小的傳輸,多采用簡單的雙D觸發器寄存并由響應信號等待機制進行實現。
在本設計中,第二級總線的工作頻率只是第一級總線工作頻率的偶數分頻,所以同步邏輯采用響應信號的等待機制。一般情況下,在多級總線系統中,高速總線與低速總線的工作頻率常為4倍或者2倍的關系[4]。考慮到二級總線所連接外設的工作頻率,總線橋將兩級總線工作頻率定為4:1的關系。對于響應等待信號的處理,通過判斷硬件計數器的相應位實現。
本文以Wishbone總線接口的開源微處理器AEMB[5]、片上存儲on-chip-ram、gpio及UART控制器構成最小SoC系統[6]。SoC系統分別采用單一Wishbone總線與二級Wish-bone總線兩種結構進行互聯。從SoC系統的外部接口來看,兩種結構的SoC系統分別配備兩組GPIO及UART控制器。其中采用單一Wishbone總線結構互聯的SoC系統結構如圖3所示。

圖3 基于單一總線結構的SoC系統互聯
SoC系統基于二級總線的互聯結構,如圖4所示。作為分析原型,gpio0與uart0在系統中作為高速設備連接在第一級總線上,對應的gpio1與uart1作為低速外設連接在第二級總線上。其中第一級總線的頻率設定為60 MHz,而二級總線頻率與之為四分頻關系,定為15 MHz。

圖4 基于二級總線結構的SoC系統互聯
對于上述不同系統結構的SoC系統,基于Altera的EP2C50系列FPGA使用QuartusII進行綜合適配得到基于FPGA實現時的資源占用情況報告,如表1所示。

表1 單一總線與二級總線SoC系統的FPGA資源占用
使用QuartusII中所集成的功耗分析工具Powerplay Power Analyzer Tool進行簡單的功耗分析。其中singlebus_soc的總線頻率為單一的 60 MHz,doublebus_soc的第一級總線頻率為60 MHz,第二級總線頻率為15 MHz。兩種系統結構的簡單功耗分析報告如表2所示。

表2 單一總線與二級總線SoC系統的FPGA實現的功耗分析
通過表1所列數據的對比分析可知,相比于單一總線結構,二級總線結構因為總線橋等相關邏輯的使用,使得SoC系統的硬件實現面積有所增加。從表2的數據對比可知,使用二級總線結構的SoC系統的核心動態功耗相比單一總線結構的SoC系統有明顯的降低。
本文選用Wishbone總線進行SoC系統設計。通過對Wishbone總線規范的分析,發現了基于Wishbone總線規范進行系統設計互連的局限。針對此,本文提出了基于wb_conmax的二級Wishbone總線設計方法。通過對Wishbone二級總線的擴展,使得在系統設計中可以方便地根據系統IP類型進行劃分互連,提高了設計的重用,同時為低功耗要求比較嚴格的設計提供了優化策略。最后通過搭建簡化SoC系統,對基于兩種不同總線結構互聯實現的SoC系統進行綜合與功耗分析,驗證了二級總線結構在低功耗設計中應用的可行性。
[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]宋云揚,羅仁貴,侯立剛,等.片上系統中Wishbone/AMBA AHB總線橋的前端設計[J].電子工程師,2007(33):18-20.
[4]開元海,汪超,鄭勇.基于S3C2440與WinCE平臺上的FIQ驅動程序的實現[J].微型機與應用,2012,31(24):89-91.
[5]桑圣鋒,張德學,于國蘋.AEMB軟核處理器的SoC系統驗證平臺[J].單片機與嵌入式系統應用,2010(4):43-45.
[6]鄢永明,劉軼民,曾云,等.基于8051軟核的 SOPC系統設計與實現[J].電子技術應用,2005,31(10):72-75.