張 浩,魏敬和,2
(1.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫 214122; 2.中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇 無(wú)錫 214035)
片上系統(tǒng)(System on Chip,SoC)主要采用第三方的IP核進(jìn)行設(shè)計(jì),其將不同功能的IP核集成到一個(gè)芯片上,以此來(lái)實(shí)現(xiàn)系統(tǒng)級(jí)的功能。因此,實(shí)現(xiàn)系統(tǒng)中不同IP核之間的高效通信成為集成過(guò)程中的關(guān)鍵問(wèn)題[1]。在SoC中,不同模塊通過(guò)總線(xiàn)進(jìn)行通信,對(duì)此,各種總線(xiàn)協(xié)議相繼被提出,如AMBA協(xié)議[2]、Core Connect協(xié)議等[3]。然而,每一種總線(xiàn)協(xié)議都有其優(yōu)勢(shì)和不足,為提高系統(tǒng)的整體性能,研究者往往會(huì)權(quán)衡不同協(xié)議的優(yōu)缺點(diǎn)并加以結(jié)合,設(shè)計(jì)高能效的多總線(xiàn)系統(tǒng)。多總線(xiàn)系統(tǒng)中的協(xié)議轉(zhuǎn)換是通過(guò)總線(xiàn)橋來(lái)實(shí)現(xiàn)的,一方面將兩種總線(xiàn)的不同接口信號(hào)進(jìn)行轉(zhuǎn)換,另一方面對(duì)兩種總線(xiàn)信號(hào)的時(shí)序進(jìn)行調(diào)整[4]。
面向總線(xiàn)橋性能要求較高的應(yīng)用場(chǎng)景,本文設(shè)計(jì)一種從PLB總線(xiàn)到AXI總線(xiàn)的橋,用以高效完成兩種總線(xiàn)之間的協(xié)議轉(zhuǎn)換和信息傳遞。該設(shè)計(jì)支持流水傳輸、讀寫(xiě)重疊傳輸以及高帶寬的數(shù)據(jù)傳輸,能夠?qū)崿F(xiàn)兩種協(xié)議的精確轉(zhuǎn)換,并且滿(mǎn)足SoC系統(tǒng)對(duì)于帶寬和傳輸速率的要求。
PLB總線(xiàn)的讀寫(xiě)數(shù)據(jù)通道相互獨(dú)立,支持讀寫(xiě)重疊傳輸和突發(fā)傳輸。一個(gè)完整的PLB總線(xiàn)傳輸包括地址周期和數(shù)據(jù)周期2個(gè)部分[5]。其中,地址周期分為請(qǐng)求、傳輸和地址應(yīng)答3個(gè)階段,數(shù)據(jù)周期分為傳輸和數(shù)據(jù)應(yīng)答2個(gè)階段[6]。
分立的PLB地址數(shù)據(jù)總線(xiàn)不但允許地址周期與數(shù)據(jù)周期重疊,而且還允許寫(xiě)數(shù)據(jù)周期與讀數(shù)據(jù)周期重疊[7]。同時(shí),PLB協(xié)議允許地址和數(shù)據(jù)總線(xiàn)擁有不同的主設(shè)備,這使得系統(tǒng)的靈活性得到顯著增強(qiáng),極大地提高了數(shù)據(jù)吞吐能力。
與PLB總線(xiàn)相比,AXI總線(xiàn)具有以下3個(gè)特點(diǎn):
1)AXI總線(xiàn)分為5個(gè)獨(dú)立的信息通道,即讀地址通道、寫(xiě)地址通道、讀數(shù)據(jù)通道、寫(xiě)數(shù)據(jù)通道和寫(xiě)響應(yīng)通道。這樣的總線(xiàn)結(jié)構(gòu)有2個(gè)優(yōu)點(diǎn):(1)設(shè)立獨(dú)立的數(shù)據(jù)和地址通道便于對(duì)每一個(gè)通道進(jìn)行單獨(dú)優(yōu)化;(2)獨(dú)立的讀寫(xiě)數(shù)據(jù)通道使AXI總線(xiàn)上的讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)可以在同一時(shí)間進(jìn)行傳輸,帶寬得到顯著提高[8]。
2)AXI總線(xiàn)每個(gè)通道中的信息流都以單方向進(jìn)行傳輸,彼此的信息傳輸互不干擾[9]。
3)AXI總線(xiàn)上的主設(shè)備與從設(shè)備在進(jìn)行通信時(shí)采用的是Valid/Ready握手機(jī)制。主設(shè)備通過(guò)Valid信號(hào)來(lái)指示通道中的信息何時(shí)有效,從設(shè)備通過(guò)Ready信號(hào)來(lái)指示是否已準(zhǔn)備好接收這些信息。只有當(dāng)Valid信號(hào)和Ready信號(hào)同時(shí)有效,主從設(shè)備握手成功,通道中的信息才能正確傳輸[10]。
本文設(shè)計(jì)的PLB2AXI總線(xiàn)橋是單向的,只允許PLB總線(xiàn)上的主設(shè)備對(duì)AXI設(shè)備進(jìn)行讀寫(xiě),而AXI設(shè)備無(wú)法發(fā)起針對(duì)PLB總線(xiàn)的傳輸。PLB2AXI橋在PLB/AXI系統(tǒng)中的位置如圖1所示。
圖1 PLB/AXI系統(tǒng)架構(gòu)Fig.1 PLB/AXI system architecture
因?yàn)榭偩€(xiàn)橋同時(shí)掛接在兩條總線(xiàn)上, 所以擁有PLB與AXI 2種接口。在設(shè)計(jì)橋的過(guò)程中,本文將其分為讀模塊和寫(xiě)模塊2個(gè)部分來(lái)分別實(shí)現(xiàn),然后根據(jù)讀寫(xiě)選擇信號(hào)PLB_RNW對(duì)2個(gè)模塊進(jìn)行片選。
PLB2AXI總線(xiàn)橋中寫(xiě)模塊由請(qǐng)求處理(REQ)、地址傳輸(ADT)、控制處理(CTP)、數(shù)據(jù)傳輸/轉(zhuǎn)換(DTT)、響應(yīng)處理(RSP)5個(gè)功能模塊組成,如圖2所示。
圖2 寫(xiě)模塊架構(gòu)與信號(hào)接口Fig.2 Write module architecture and signal interface
2.2.1 請(qǐng)求處理模塊
在傳輸?shù)刂窌r(shí),請(qǐng)求處理模塊首先要完成AXI地址傳輸通道的握手。PLB總線(xiàn)上的主設(shè)備在發(fā)起跨總線(xiàn)傳輸時(shí)會(huì)發(fā)出PLB_Request信號(hào),請(qǐng)求占用總線(xiàn)資源進(jìn)行地址和控制信號(hào)的傳輸。如果此時(shí)總線(xiàn)空閑且地址傳輸模塊流量允許,則當(dāng)前傳輸?shù)膶?xiě)地址有效,AXI_AWValid信號(hào)被斷言;如果AXI上的從設(shè)備就緒,則AXI_AWReady信號(hào)即被斷言。此時(shí)地址通道Valid/Ready握手成功。
2.2.2 地址傳輸模塊
地址傳輸模塊是控制流水線(xiàn)傳輸?shù)闹匾糠?該模塊中設(shè)有地址信息存儲(chǔ)單元。在請(qǐng)求處理模塊完成握手后,開(kāi)始傳輸?shù)?個(gè)地址[11]。當(dāng)該地址傳輸完畢,地址應(yīng)答信號(hào)PLB_AddrAck有效,這標(biāo)志著從設(shè)備已經(jīng)成功接收地址,地址傳輸周期結(jié)束,數(shù)據(jù)傳輸周期開(kāi)始。此時(shí),無(wú)需等待上一個(gè)數(shù)據(jù)傳輸周期結(jié)束,主設(shè)備就可以發(fā)起下一次傳輸請(qǐng)求,并將相關(guān)地址數(shù)據(jù)寫(xiě)入地址信息存儲(chǔ)單元直至存儲(chǔ)單元滿(mǎn)[12]。待總線(xiàn)允許發(fā)送下一個(gè)地址數(shù)據(jù)時(shí),再將存儲(chǔ)單元中的地址信息轉(zhuǎn)換并發(fā)送到AXI總線(xiàn)上,通過(guò)此方式實(shí)現(xiàn)流水線(xiàn)傳輸。
如圖3所示,PLB_AddrAck信號(hào)對(duì)于地址傳輸模塊的流水線(xiàn)控制具有十分重要的意義。在該模塊中設(shè)置一個(gè)初值為0的寄存器變量outstanding,以此來(lái)表示存儲(chǔ)單元中待傳地址的數(shù)目。若PLB_Request有效,則意味著一個(gè)新的傳輸被發(fā)起,待傳輸?shù)牡刂窋?shù)outstanding加1;若PLB_AddrAck信號(hào)被斷言,則意味著地址已被從設(shè)備成功接收,outstanding的值減1。只要待傳地址數(shù)目小于存儲(chǔ)單元容量,主設(shè)備就可以發(fā)起新的傳輸請(qǐng)求。
圖3 流水線(xiàn)控制機(jī)制工作流程Fig.3 Work flow of pipeline control mechanism
2.2.3 控制處理模塊
控制處理模塊的主要功能是對(duì)與Burst傳輸有關(guān)的控制信號(hào)進(jìn)行轉(zhuǎn)換。如果PLB_Wburst有效,則當(dāng)前傳輸為Burst傳輸。在本文設(shè)計(jì)中,控制處理模塊的AXI_Wburst信號(hào)恒為2’b10,因此,突發(fā)類(lèi)型被設(shè)置為地址遞增的Burst傳輸。與突發(fā)長(zhǎng)度(即突發(fā)次數(shù))和突發(fā)尺寸有關(guān)的控制信號(hào)PLB_BE與PLB_Size被轉(zhuǎn)換為AXI_ALen與AXI_Size,具體編碼方式如表1和表2所示[13]。
表1 PLB_BE編碼Table 1 Coding of PLB_BE
表2 PLB_Size編碼Table 2 Coding of PLB_Size
2.2.4 數(shù)據(jù)傳輸/轉(zhuǎn)換模塊
本文設(shè)計(jì)中的數(shù)據(jù)傳輸/轉(zhuǎn)換模塊需要完成3個(gè)基本任務(wù):1)實(shí)現(xiàn)數(shù)據(jù)傳輸通道的Valid/Ready握手;2)完成數(shù)據(jù)的大小端轉(zhuǎn)換(PLB總線(xiàn)上的數(shù)據(jù)按照大端模式進(jìn)行傳輸,在傳到AXI總線(xiàn)時(shí)數(shù)據(jù)要由數(shù)據(jù)傳輸/轉(zhuǎn)換模塊轉(zhuǎn)換成小端模式);3)根據(jù)控制信號(hào)進(jìn)行數(shù)據(jù)傳輸。
數(shù)據(jù)傳輸方式分為突發(fā)傳輸和非突發(fā)傳輸,這些控制信息都由控制處理模塊指定。當(dāng)接到響應(yīng)處理模塊發(fā)出的PLB_WrDAck信號(hào)時(shí),說(shuō)明該數(shù)據(jù)已被AXI從設(shè)備成功接收。
2.2.5 響應(yīng)處理模塊
在AXI從設(shè)備成功接收地址和數(shù)據(jù)后,傳輸進(jìn)入應(yīng)答反饋階段。響應(yīng)處理模塊首先完成響應(yīng)通道的握手,然后對(duì)AXI從設(shè)備發(fā)來(lái)的應(yīng)答信號(hào)AXI_BResp進(jìn)行處理,最后將其轉(zhuǎn)換為PLB應(yīng)答信號(hào)反饋給主設(shè)備。
1)處理應(yīng)答信號(hào)AXI_BResp:如果應(yīng)答信號(hào)AXI_BResp為“OKAY”(2’b00),說(shuō)明從設(shè)備成功接收地址和數(shù)據(jù),響應(yīng)處理模塊分別將PLB_AddrAck和PLB_WrDAck斷言并發(fā)送給主設(shè)備,以此作為本次傳輸?shù)膽?yīng)答;如果應(yīng)答信號(hào)AXI_BResp為不是“OKAY”,說(shuō)明地址或數(shù)據(jù)傳送出現(xiàn)錯(cuò)誤,響應(yīng)處理模塊將PLB_WrIrq信號(hào)拉高作為本次傳輸?shù)膽?yīng)答。
2)如果總線(xiàn)正在進(jìn)行傳輸,響應(yīng)處理模塊會(huì)將PLB_Busy發(fā)送給主設(shè)備,這意味著數(shù)據(jù)通道正在被占用。
如圖4所示,本文中讀模塊與寫(xiě)模塊的架構(gòu)基本相同。
圖4 讀模塊架構(gòu)與信號(hào)接口Fig.4 Read module architecture and signal interface
兩者的主要區(qū)別為:
1)數(shù)據(jù)傳輸方向不同。寫(xiě)模塊中的數(shù)據(jù)是從PLB發(fā)往AXI總線(xiàn)的,而讀模塊中的數(shù)據(jù)傳輸方向是從AXI到PLB總線(xiàn)的。因此,讀模塊中的數(shù)據(jù)傳輸/轉(zhuǎn)換模塊需要對(duì)數(shù)據(jù)傳輸方向進(jìn)行相應(yīng)調(diào)整,而且數(shù)據(jù)應(yīng)從AXI總線(xiàn)的小端模式轉(zhuǎn)換為PLB總線(xiàn)的大端模式。
2)讀模塊沒(méi)有響應(yīng)通道。讀模塊中的響應(yīng)信息是伴隨著數(shù)據(jù)一起從AXI發(fā)往PLB總線(xiàn)的,無(wú)需設(shè)立專(zhuān)用的“讀響應(yīng)通道”。因此,在讀模塊中無(wú)需進(jìn)行AXI_BValid與AXI_BReady的握手,而是直接由AXI總線(xiàn)將反饋信息AXI_Resp發(fā)送給讀響應(yīng)處理模塊進(jìn)行處理。
本文設(shè)計(jì)充分利用了高性能總線(xiàn)PLB和AXI的性能優(yōu)勢(shì),通過(guò)采用流水線(xiàn)傳輸和實(shí)施PLB與AXI協(xié)議所支持的讀寫(xiě)重疊傳輸來(lái)提高總線(xiàn)橋的轉(zhuǎn)換和傳輸效率。
傳統(tǒng)總線(xiàn)橋的數(shù)據(jù)通道和地址通道之間存在相互等待反饋的問(wèn)題。在圖5(a)所示的傳統(tǒng)總線(xiàn)橋設(shè)計(jì)中,必須等待上一次的地址和數(shù)據(jù)傳輸完成后,下一個(gè)地址數(shù)據(jù)才能開(kāi)始傳輸,這無(wú)形中增加了各環(huán)節(jié)的等待時(shí)間,降低了系統(tǒng)的效率[14]。在圖5(b)所示的流水線(xiàn)總線(xiàn)橋設(shè)計(jì)中,主設(shè)備可以連續(xù)向從設(shè)備發(fā)送多個(gè)訪(fǎng)問(wèn)請(qǐng)求,在進(jìn)行一個(gè)訪(fǎng)問(wèn)的同時(shí)也可以發(fā)布新的訪(fǎng)問(wèn)請(qǐng)求,直至?xí)捍娴刂窋?shù)據(jù)FIFO滿(mǎn)[15]。本文設(shè)計(jì)的總線(xiàn)橋不僅支持流水線(xiàn)傳輸,還充分利用了PLB與AXI總線(xiàn)讀寫(xiě)數(shù)據(jù)通道分離的結(jié)構(gòu)優(yōu)勢(shì),加入了讀寫(xiě)重疊傳輸機(jī)制。在圖5(c)所示的設(shè)計(jì)中,主設(shè)備向從設(shè)備連續(xù)發(fā)起多次讀寫(xiě)操作請(qǐng)求,各個(gè)讀寫(xiě)地址依次進(jìn)行傳輸,在進(jìn)入數(shù)據(jù)周期后,讀寫(xiě)數(shù)據(jù)分別利用各自的讀寫(xiě)數(shù)據(jù)通道進(jìn)行傳送[16],讀數(shù)據(jù)傳輸和寫(xiě)數(shù)據(jù)傳輸可以并發(fā)執(zhí)行而無(wú)需相互等待,此讀寫(xiě)重疊機(jī)制可在流水線(xiàn)傳輸?shù)幕A(chǔ)上進(jìn)一步縮短傳輸時(shí)間,大幅提高帶寬利用率和系統(tǒng)傳輸效率。
圖5 總線(xiàn)橋高性能策略Fig.5 Bus bridge transmission performance strategy
本文使用Synopsys公司的VCS工具對(duì)PLB2AXI橋進(jìn)行功能仿真,然后通過(guò)Verdi工具對(duì)得到的波形進(jìn)行處理和查看。寫(xiě)突發(fā)傳輸、讀突發(fā)傳輸以及流水線(xiàn)與重疊傳輸波形分別如圖6~圖8所示。地址周期開(kāi)始后,總線(xiàn)橋開(kāi)始進(jìn)行表3所示地址與傳輸控制信號(hào)的傳輸。
表3 地址與傳輸控制信號(hào)Table 3 Address and transmission control signals
在AXI端成功接收相關(guān)信號(hào)后,地址應(yīng)答信號(hào)PLB_AddrAck被拉高,地址周期結(jié)束,數(shù)據(jù)周期開(kāi)始,數(shù)據(jù)在經(jīng)過(guò)大小端轉(zhuǎn)換后,通過(guò)128位數(shù)據(jù)總線(xiàn)PLB_WrDBus/AXI_WData開(kāi)始依次傳輸[17]。每成功接收到一個(gè)數(shù)據(jù),PLB_WrDAck信號(hào)都被拉高一次。在寫(xiě)突發(fā)傳輸中,完成數(shù)據(jù)接收的從設(shè)備會(huì)在寫(xiě)響應(yīng)通道握手后發(fā)送反饋信號(hào)“OKEY”[18];而在讀突發(fā)傳輸中,數(shù)據(jù)應(yīng)答伴隨讀數(shù)據(jù)一同發(fā)往PLB主設(shè)備。在圖6與圖7中,完成寫(xiě)突發(fā)共用16個(gè)時(shí)鐘周期,完成讀突發(fā)共用18個(gè)時(shí)鐘周期。
圖7 讀突發(fā)傳輸波形Fig.7 Read burst transmission waveform
圖6 寫(xiě)突發(fā)傳輸波形Fig.6 Write burst transmission waveform
在圖8中,總線(xiàn)橋通過(guò)流水線(xiàn)和讀寫(xiě)重疊的方式進(jìn)行傳輸,PLB端總共發(fā)起4次讀寫(xiě)請(qǐng)求,分別是“寫(xiě)”-“讀”-“寫(xiě)”-“讀”請(qǐng)求。PLB_BURST信號(hào)為“1”說(shuō)明本次傳輸為突發(fā)傳輸。4次讀寫(xiě)操作的地址分別為32’hc000_0000、32’hc000_0030、32’hc000_0038和32’hc000_0010,并且PLB_BE和PLB_Size為16’h3000和4’b1100,說(shuō)明此次傳輸為固定長(zhǎng)度的四字突發(fā)傳輸,突發(fā)次數(shù)為4次。在上一次地址傳輸完畢之后,無(wú)需等待數(shù)據(jù)周期結(jié)束即可進(jìn)行下一個(gè)地址的傳輸,每次地址傳輸間隔一個(gè)時(shí)鐘周期。在每個(gè)地址傳輸完成后,讀寫(xiě)數(shù)據(jù)分別通過(guò)讀寫(xiě)傳輸通道并發(fā)傳輸,讀寫(xiě)數(shù)據(jù)周期相互重疊,大幅縮短了數(shù)據(jù)的傳輸時(shí)間[7]。第1次讀寫(xiě)數(shù)據(jù)傳輸完成后4個(gè)時(shí)鐘周期,第2次讀寫(xiě)數(shù)據(jù)的傳輸并發(fā)進(jìn)行,讀寫(xiě)數(shù)據(jù)周期仍然重疊,完成4次讀寫(xiě)操作共需要37個(gè)時(shí)鐘周期。
圖8 流水線(xiàn)與重疊傳輸波形Fig.8 Pipeline and overlap transmission waveforms
本文設(shè)計(jì)的PLB2AXI總線(xiàn)橋與傳統(tǒng)不進(jìn)行流水線(xiàn)傳輸和重疊傳輸?shù)目偩€(xiàn)橋的對(duì)比如表4所示??梢钥闯?引入流水線(xiàn)傳輸和重疊傳輸?shù)腜LB2AXI方案總耗時(shí)僅為傳統(tǒng)方案的54.41%,驗(yàn)證了PLB2AXI總線(xiàn)橋的優(yōu)越性。
表4 不同傳輸方案的耗時(shí)對(duì)比Table 4 Time consuming comparison of different transmission schemes ms
為驗(yàn)證SoC的功能,進(jìn)而測(cè)試總線(xiàn)橋在系統(tǒng)中是否正常工作,搭建由HAPS及相關(guān)外設(shè)子板構(gòu)成的FPGA系統(tǒng)驗(yàn)證平臺(tái),如圖9所示。
圖9 FPGA系統(tǒng)驗(yàn)證環(huán)境Fig.9 FPGA system verification environment
HAPS Prototyping Solution是Synopsys基于FPGA的原型驗(yàn)證解決方案[19],其是一個(gè)完整的FPGA系統(tǒng)驗(yàn)證環(huán)境。該平臺(tái)不僅提供高性能的FPGA平臺(tái)硬件,而且提供與之緊密配套的自動(dòng)化調(diào)試環(huán)境HAPS Proto Compiler[20]。在本文設(shè)計(jì)中,PLB總線(xiàn)上的PowerPC內(nèi)核通過(guò)PLB2AXI總線(xiàn)橋進(jìn)行協(xié)議轉(zhuǎn)換,然后對(duì)用戶(hù)IP Main controller的寄存器進(jìn)行如表5所示的配置。
表5 對(duì)用戶(hù)IP寄存器的配置值Table 5 Configuration value of user’s IP register
執(zhí)行配置程序后,PowerPC成功完成了對(duì)Main controller中各寄存器的的配置,配置后的寄存器結(jié)果如圖10所示。測(cè)試結(jié)果不僅驗(yàn)證了PLB2AXI總線(xiàn)橋協(xié)議轉(zhuǎn)換功能的正確性,還驗(yàn)證了SoC系統(tǒng)的跨總線(xiàn)配置功能的正確性。
圖10 寄存器配置結(jié)果與FPGA驗(yàn)證實(shí)物圖Fig.10 Register configuration result and physical diagram of FPGA verification
本文通過(guò)引入流水線(xiàn)傳輸和讀寫(xiě)重疊機(jī)制,設(shè)計(jì)PLB2AXI高性能總線(xiàn)橋,以實(shí)現(xiàn)SoC中各模塊協(xié)議的精確轉(zhuǎn)換,提升傳輸效率。實(shí)驗(yàn)結(jié)果表明,對(duì)于同樣的傳輸任務(wù),PLB2AXI用時(shí)僅為傳統(tǒng)總線(xiàn)橋的54.41%,時(shí)間開(kāi)銷(xiāo)大幅降低。此外,系統(tǒng)級(jí)的FPGA驗(yàn)證也進(jìn)一步證明了該設(shè)計(jì)的正確性。后續(xù)將優(yōu)化本文PLB2AXI總線(xiàn)橋的傳輸性能,并將其應(yīng)用于多總線(xiàn)SoC系統(tǒng)的設(shè)計(jì)中,以此提升系統(tǒng)的整體工作效率。