文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)03-0022-03
近年來,F(xiàn)PGA器件設(shè)計(jì)生產(chǎn)制造技術(shù)的不斷成熟極大地降低了使用FPGA進(jìn)行產(chǎn)品設(shè)計(jì)的成本,半導(dǎo)體工藝技術(shù)的進(jìn)步與EDA(Electronic Design Automation)技術(shù)的發(fā)展也降低了ASIC(Application Specific Integrated Circuit)設(shè)計(jì)的門檻,再加上系統(tǒng)設(shè)計(jì)技術(shù)日新月異,使得基于SoC(System on Chip)原理的FPGA設(shè)計(jì)及ASIC設(shè)計(jì)如多年前的單片機(jī)設(shè)計(jì)一樣在嵌入式系統(tǒng)設(shè)計(jì)領(lǐng)域得到了廣泛的應(yīng)用。
SoC技術(shù)是一種高度集成化、固件化的系統(tǒng)集成技術(shù)。使用SoC技術(shù)設(shè)計(jì)系統(tǒng)的核心思想就是把整個(gè)應(yīng)用電子系統(tǒng)全部集成在一個(gè)芯片中。SoC的設(shè)計(jì)過程中,最具特色的就是基于片上總線OCB(On-Chip Bus)的IP(Intellectual Property)復(fù)用技術(shù)。系統(tǒng)的各個(gè)IP模塊與其他系統(tǒng)功能模塊通過片上總線進(jìn)行互聯(lián)通信,因此片上總線的正確選擇和合理設(shè)計(jì)對(duì)嵌入式系統(tǒng)應(yīng)用具有重大的影響。
1 片上總線概述
目前較有影響力的總線標(biāo)準(zhǔn)主要有:IBM公司的CoreConnect總線、ARM公司的AMBA總線、Silicore公司的Wishbone總線和Altera公司的Avalon總線。這4種總線技術(shù)的最大區(qū)別在于各自提供的技術(shù)特性及其規(guī)范的完整性方面的差異。
在這4種總線中,Wishbone 總線是唯一一種免費(fèi)的片上總線標(biāo)準(zhǔn) 并且OpenCores組織選用Wishbone作為片上總線標(biāo)準(zhǔn),提供了大量的基于Wishbone總線開放 IP 核。因此,采用Wishbone片上總線進(jìn)行SoC設(shè)計(jì),可以利用大量的免費(fèi)資源,從而可以節(jié)省開發(fā)成本,加快系統(tǒng)開發(fā)進(jìn)程。
1.1 Wishbone總線概述
Wishbone總線規(guī)范定義了一種IP核之間互連的通用接口,可用于軟核、固核和硬核之間的互連,并且對(duì)開發(fā)工具和目標(biāo)硬件沒有特殊要求,幾乎兼容目前存在的所有主流EDA綜合工具,可以用多種硬件描述語言來實(shí)現(xiàn)[1]。
Wishbone總線結(jié)構(gòu)比較簡(jiǎn)單,僅僅定義了一條高速總線,并提供了4種不同的IP互連結(jié)構(gòu):
(1)點(diǎn)到點(diǎn)(point-to-point):用于兩IP核直接互連。
(2)數(shù)據(jù)流(data flow):用于多個(gè)串行IP核之間的數(shù)據(jù)并發(fā)傳輸。
(3)共享總線(shared bus):多個(gè)IP核共享一條總線。
(4)交叉開關(guān)(crossbar switch):同時(shí)連接多個(gè)主從部件,提高系統(tǒng)吞吐量。
點(diǎn)到點(diǎn)互連允許1臺(tái)主設(shè)備與1臺(tái)從設(shè)備相互通信;數(shù)據(jù)流互聯(lián)是點(diǎn)到點(diǎn)互聯(lián)的特例;共享總線互聯(lián)允許2臺(tái)及以上的主設(shè)備與1臺(tái)及以上的從設(shè)備進(jìn)行通信,但在任意時(shí)刻只能有一對(duì)主/從設(shè)備相互通信;交叉互聯(lián)允許多對(duì)主/從設(shè)備相互通信,數(shù)據(jù)傳輸率高。Wishbone總線的4種互聯(lián)結(jié)構(gòu)如圖1所示。

在這4種互連結(jié)構(gòu)中,目前使用較多的是交叉開關(guān)結(jié)構(gòu)。在這種結(jié)構(gòu)中,多個(gè)主設(shè)備可以并行訪問從設(shè)備。雖然這樣會(huì)增加硬件邏輯資源,但是在多主設(shè)備的系統(tǒng)中能夠明顯提高系統(tǒng)數(shù)據(jù)吞吐量。
1.2 應(yīng)用分析
目前OpenCores組織發(fā)布了一些采用交叉互聯(lián)結(jié)構(gòu)的Wishbone總線IP核,如wb_conmax、wb_conbus以及針對(duì)Openrisc處理器參考平臺(tái)orp中的tcp_top。大部分的設(shè)計(jì)者在完成設(shè)計(jì)時(shí)采用了以上的IP,但基于這種結(jié)構(gòu)所設(shè)計(jì)的SoC系統(tǒng),所有的主設(shè)備與從設(shè)備均通過單一總線進(jìn)行互聯(lián)。對(duì)于低速設(shè)備而言,為達(dá)到時(shí)序設(shè)計(jì)要求,必須通過硬件邏輯降頻處理。但是總線上硬件電路一直工作在高速時(shí)鐘,從而增加了系統(tǒng)總體功耗。鑒于此,在進(jìn)行SoC設(shè)計(jì)時(shí),針對(duì)外設(shè)速度不同,采用二級(jí)Wishbone總線的機(jī)制實(shí)現(xiàn)IP互聯(lián)。這樣不但可以為系統(tǒng)的后續(xù)開發(fā)與設(shè)計(jì)優(yōu)化提供支持,而且能夠方便地?cái)U(kuò)展與互連更多外設(shè)。
2 Wishbone二級(jí)總線的設(shè)計(jì)與實(shí)現(xiàn)
本文所設(shè)計(jì)的Wishbone二級(jí)總線基于wb_conmax IP核,首先簡(jiǎn)單介紹wb_conmax核。
2.1 wb_conmax的實(shí)現(xiàn)結(jié)構(gòu)
wb_conmax是基于Wishbone總線規(guī)范的互連矩陣,采用交叉方式互連結(jié)構(gòu),可以直接用于基于Wishbone總線規(guī)范設(shè)計(jì)的IP的集成[2]。它主要有以下特點(diǎn):
(1)最多支持8個(gè)主設(shè)備;
(2)最多支持16個(gè)從設(shè)備;
(3)支持1、2或者4級(jí)優(yōu)先級(jí)。

其基本結(jié)構(gòu)可以參考圖2。由圖可知,wb_conmax為8×16的結(jié)構(gòu),一般情況下能夠滿足SoC系統(tǒng)的要求,而且完全可以實(shí)現(xiàn)不同主設(shè)備與不同從設(shè)備的并行通信。所以該IP在很多設(shè)計(jì)中得到了應(yīng)用。
2.2 Wishbone二級(jí)總線的具體實(shí)現(xiàn)
本文所設(shè)計(jì)的Wishbone二級(jí)總線基于wb_conmax完成,基本的結(jié)構(gòu)如圖2所示。
在上圖結(jié)構(gòu)的具體實(shí)現(xiàn)中,wb_conmax0直接采用OpenCores上提供的wb_conmax,地址空間的分配足以滿足常用的SoC系統(tǒng)的各種地址空間的分配。wb_conmax1在wb_conmax0的基礎(chǔ)上對(duì)地址譯碼部分做了處理。其中總線橋主要實(shí)現(xiàn)wb_conmax0與wb_conmax1之間的數(shù)據(jù)地址信號(hào)的互連與同步處理[3]。
2.2.1 wb_conmax 地址空間分配
wb_conmax支持16個(gè)Slave設(shè)備,默認(rèn)的地址空間為0x0000_000,0x1000_0000,0x2000_0000…0xf000_0000,每個(gè)Slave設(shè)備的地址空間高達(dá)256 MB。在一般的嵌入式系統(tǒng)設(shè)計(jì)中,不管對(duì)于尋址空間比較大的SDRAM還是Flash,均能夠滿足設(shè)計(jì)要求。因此,在本系統(tǒng)中,將二級(jí)總線的尋址空間定義在256 MB范圍內(nèi)。
2.2.2 總線橋的設(shè)計(jì)
對(duì)于Wishbone二級(jí)總線設(shè)計(jì)的具體應(yīng)用,因?yàn)榕c之進(jìn)行互聯(lián)的設(shè)備均采用標(biāo)準(zhǔn)Wishbone總線的信號(hào),而不像AMBA中有AHB與APB之分,所以總線橋的設(shè)計(jì)中不涉及總線信號(hào)轉(zhuǎn)換問題,主要實(shí)現(xiàn)地址編碼的實(shí)現(xiàn)與不同時(shí)鐘域信號(hào)的同步操作。
(1)總線橋中的地址編碼
wb_conmax1的地址獨(dú)立于wb_conmax進(jìn)行編碼,為了設(shè)計(jì)的方便與滿足系統(tǒng)應(yīng)用,在這里簡(jiǎn)單地將wb_conmax1的相對(duì)地址分配為0x0000_0000,0x0100_0000,
0x0200_0000,0x0300_000…0x0f00_0000。每個(gè)Slave設(shè)備可分配的地址空間為16 MB,這在嵌入式系統(tǒng)的低速外設(shè)尋址中基本都可以滿足。由圖2所示的總線橋進(jìn)行連接。如果接在wb_conmax0的slave14上,則實(shí)際系統(tǒng)中低速外設(shè)的訪問地址為0xe000_0000,0xe100_0000,0xe200_
000,0xe300_0000…0xef00_0000。
(2)總線橋中的同步邏輯設(shè)計(jì)
在Wishbone二級(jí)總線的設(shè)計(jì)中,兩級(jí)總線工作在不同時(shí)鐘頻率下,以滿足不同設(shè)備應(yīng)用的需求,所以在總線橋中必須做好同步邏輯的設(shè)計(jì)。對(duì)于一些數(shù)據(jù)量比較大或者突發(fā)傳輸?shù)牟僮?,同步邏輯設(shè)計(jì)常采用FIFO來實(shí)現(xiàn);而對(duì)于其他數(shù)據(jù)量比較小的傳輸,多采用簡(jiǎn)單的雙D觸發(fā)器寄存并由響應(yīng)信號(hào)等待機(jī)制進(jìn)行實(shí)現(xiàn)。
在本設(shè)計(jì)中,第二級(jí)總線的工作頻率只是第一級(jí)總線工作頻率的偶數(shù)分頻,所以同步邏輯采用響應(yīng)信號(hào)的等待機(jī)制。一般情況下,在多級(jí)總線系統(tǒng)中,高速總線與低速總線的工作頻率常為4倍或者2倍的關(guān)系[4]??紤]到二級(jí)總線所連接外設(shè)的工作頻率,總線橋?qū)杉?jí)總線工作頻率定為4:1的關(guān)系。對(duì)于響應(yīng)等待信號(hào)的處理,通過判斷硬件計(jì)數(shù)器的相應(yīng)位實(shí)現(xiàn)。
3 基于二級(jí)總線結(jié)構(gòu)的最小SoC系統(tǒng)應(yīng)用分析
本文以Wishbone總線接口的開源微處理器AEMB[5]、片上存儲(chǔ)on-chip-ram、gpio及UART控制器構(gòu)成最小SoC系統(tǒng)[6]。SoC系統(tǒng)分別采用單一Wishbone總線與二級(jí)Wish-bone總線兩種結(jié)構(gòu)進(jìn)行互聯(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所示。


SoC系統(tǒng)基于二級(jí)總線的互聯(lián)結(jié)構(gòu),如圖4所示。作為分析原型,gpio0與uart0在系統(tǒng)中作為高速設(shè)備連接在第一級(jí)總線上,對(duì)應(yīng)的gpio1與uart1作為低速外設(shè)連接在第二級(jí)總線上。其中第一級(jí)總線的頻率設(shè)定為60 MHz,而二級(jí)總線頻率與之為四分頻關(guān)系,定為15 MHz。
對(duì)于上述不同系統(tǒng)結(jié)構(gòu)的SoC系統(tǒng),基于Altera的EP2C50 系列FPGA使用QuartusII進(jìn)行綜合適配得到基于FPGA實(shí)現(xiàn)時(shí)的資源占用情況報(bào)告,如表1所示。

使用QuartusII中所集成的功耗分析工具Powerplay Power Analyzer Tool進(jìn)行簡(jiǎn)單的功耗分析。其中singlebus_soc的總線頻率為單一的60 MHz,doublebus_soc的第一級(jí)總線頻率為60 MHz,第二級(jí)總線頻率為15 MHz。兩種系統(tǒng)結(jié)構(gòu)的簡(jiǎn)單功耗分析報(bào)告如表2所示。

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