張 浩,魏敬和,2
(1.江南大學 物聯網工程學院,江蘇 無錫 214122; 2.中國電子科技集團公司第五十八研究所,江蘇 無錫 214035)
片上系統(System on Chip,SoC)主要采用第三方的IP核進行設計,其將不同功能的IP核集成到一個芯片上,以此來實現系統級的功能。因此,實現系統中不同IP核之間的高效通信成為集成過程中的關鍵問題[1]。在SoC中,不同模塊通過總線進行通信,對此,各種總線協議相繼被提出,如AMBA協議[2]、Core Connect協議等[3]。然而,每一種總線協議都有其優勢和不足,為提高系統的整體性能,研究者往往會權衡不同協議的優缺點并加以結合,設計高能效的多總線系統。多總線系統中的協議轉換是通過總線橋來實現的,一方面將兩種總線的不同接口信號進行轉換,另一方面對兩種總線信號的時序進行調整[4]。
面向總線橋性能要求較高的應用場景,本文設計一種從PLB總線到AXI總線的橋,用以高效完成兩種總線之間的協議轉換和信息傳遞。該設計支持流水傳輸、讀寫重疊傳輸以及高帶寬的數據傳輸,能夠實現兩種協議的精確轉換,并且滿足SoC系統對于帶寬和傳輸速率的要求。
PLB總線的讀寫數據通道相互獨立,支持讀寫重疊傳輸和突發傳輸。一個完整的PLB總線傳輸包括地址周期和數據周期2個部分[5]。其中,地址周期分為請求、傳輸和地址應答3個階段,數據周期分為傳輸和數據應答2個階段[6]。
分立的PLB地址數據總線不但允許地址周期與數據周期重疊,而且還允許寫數據周期與讀數據周期重疊[7]。同時,PLB協議允許地址和數據總線擁有不同的主設備,這使得系統的靈活性得到顯著增強,極大地提高了數據吞吐能力。
與PLB總線相比,AXI總線具有以下3個特點:
1)AXI總線分為5個獨立的信息通道,即讀地址通道、寫地址通道、讀數據通道、寫數據通道和寫響應通道。這樣的總線結構有2個優點:(1)設立獨立的數據和地址通道便于對每一個通道進行單獨優化;(2)獨立的讀寫數據通道使AXI總線上的讀數據和寫數據可以在同一時間進行傳輸,帶寬得到顯著提高[8]。
2)AXI總線每個通道中的信息流都以單方向進行傳輸,彼此的信息傳輸互不干擾[9]。
3)AXI總線上的主設備與從設備在進行通信時采用的是Valid/Ready握手機制。主設備通過Valid信號來指示通道中的信息何時有效,從設備通過Ready信號來指示是否已準備好接收這些信息。只有當Valid信號和Ready信號同時有效,主從設備握手成功,通道中的信息才能正確傳輸[10]。
本文設計的PLB2AXI總線橋是單向的,只允許PLB總線上的主設備對AXI設備進行讀寫,而AXI設備無法發起針對PLB總線的傳輸。PLB2AXI橋在PLB/AXI系統中的位置如圖1所示。

圖1 PLB/AXI系統架構Fig.1 PLB/AXI system architecture
因為總線橋同時掛接在兩條總線上, 所以擁有PLB與AXI 2種接口。在設計橋的過程中,本文將其分為讀模塊和寫模塊2個部分來分別實現,然后根據讀寫選擇信號PLB_RNW對2個模塊進行片選。
PLB2AXI總線橋中寫模塊由請求處理(REQ)、地址傳輸(ADT)、控制處理(CTP)、數據傳輸/轉換(DTT)、響應處理(RSP)5個功能模塊組成,如圖2所示。

圖2 寫模塊架構與信號接口Fig.2 Write module architecture and signal interface
2.2.1 請求處理模塊
在傳輸地址時,請求處理模塊首先要完成AXI地址傳輸通道的握手。PLB總線上的主設備在發起跨總線傳輸時會發出PLB_Request信號,請求占用總線資源進行地址和控制信號的傳輸。如果此時總線空閑且地址傳輸模塊流量允許,則當前傳輸的寫地址有效,AXI_AWValid信號被斷言;如果AXI上的從設備就緒,則AXI_AWReady信號即被斷言。此時地址通道Valid/Ready握手成功。
2.2.2 地址傳輸模塊
地址傳輸模塊是控制流水線傳輸的重要部分,該模塊中設有地址信息存儲單元。在請求處理模塊完成握手后,開始傳輸第1個地址[11]。當該地址傳輸完畢,地址應答信號PLB_AddrAck有效,這標志著從設備已經成功接收地址,地址傳輸周期結束,數據傳輸周期開始。此時,無需等待上一個數據傳輸周期結束,主設備就可以發起下一次傳輸請求,并將相關地址數據寫入地址信息存儲單元直至存儲單元滿[12]。待總線允許發送下一個地址數據時,再將存儲單元中的地址信息轉換并發送到AXI總線上,通過此方式實現流水線傳輸。
如圖3所示,PLB_AddrAck信號對于地址傳輸模塊的流水線控制具有十分重要的意義。在該模塊中設置一個初值為0的寄存器變量outstanding,以此來表示存儲單元中待傳地址的數目。若PLB_Request有效,則意味著一個新的傳輸被發起,待傳輸的地址數outstanding加1;若PLB_AddrAck信號被斷言,則意味著地址已被從設備成功接收,outstanding的值減1。只要待傳地址數目小于存儲單元容量,主設備就可以發起新的傳輸請求。

圖3 流水線控制機制工作流程Fig.3 Work flow of pipeline control mechanism
2.2.3 控制處理模塊
控制處理模塊的主要功能是對與Burst傳輸有關的控制信號進行轉換。如果PLB_Wburst有效,則當前傳輸為Burst傳輸。在本文設計中,控制處理模塊的AXI_Wburst信號恒為2’b10,因此,突發類型被設置為地址遞增的Burst傳輸。與突發長度(即突發次數)和突發尺寸有關的控制信號PLB_BE與PLB_Size被轉換為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 數據傳輸/轉換模塊
本文設計中的數據傳輸/轉換模塊需要完成3個基本任務:1)實現數據傳輸通道的Valid/Ready握手;2)完成數據的大小端轉換(PLB總線上的數據按照大端模式進行傳輸,在傳到AXI總線時數據要由數據傳輸/轉換模塊轉換成小端模式);3)根據控制信號進行數據傳輸。
數據傳輸方式分為突發傳輸和非突發傳輸,這些控制信息都由控制處理模塊指定。當接到響應處理模塊發出的PLB_WrDAck信號時,說明該數據已被AXI從設備成功接收。
2.2.5 響應處理模塊
在AXI從設備成功接收地址和數據后,傳輸進入應答反饋階段。響應處理模塊首先完成響應通道的握手,然后對AXI從設備發來的應答信號AXI_BResp進行處理,最后將其轉換為PLB應答信號反饋給主設備。
1)處理應答信號AXI_BResp:如果應答信號AXI_BResp為“OKAY”(2’b00),說明從設備成功接收地址和數據,響應處理模塊分別將PLB_AddrAck和PLB_WrDAck斷言并發送給主設備,以此作為本次傳輸的應答;如果應答信號AXI_BResp為不是“OKAY”,說明地址或數據傳送出現錯誤,響應處理模塊將PLB_WrIrq信號拉高作為本次傳輸的應答。
2)如果總線正在進行傳輸,響應處理模塊會將PLB_Busy發送給主設備,這意味著數據通道正在被占用。
如圖4所示,本文中讀模塊與寫模塊的架構基本相同。

圖4 讀模塊架構與信號接口Fig.4 Read module architecture and signal interface
兩者的主要區別為:
1)數據傳輸方向不同。寫模塊中的數據是從PLB發往AXI總線的,而讀模塊中的數據傳輸方向是從AXI到PLB總線的。因此,讀模塊中的數據傳輸/轉換模塊需要對數據傳輸方向進行相應調整,而且數據應從AXI總線的小端模式轉換為PLB總線的大端模式。
2)讀模塊沒有響應通道。讀模塊中的響應信息是伴隨著數據一起從AXI發往PLB總線的,無需設立專用的“讀響應通道”。因此,在讀模塊中無需進行AXI_BValid與AXI_BReady的握手,而是直接由AXI總線將反饋信息AXI_Resp發送給讀響應處理模塊進行處理。
本文設計充分利用了高性能總線PLB和AXI的性能優勢,通過采用流水線傳輸和實施PLB與AXI協議所支持的讀寫重疊傳輸來提高總線橋的轉換和傳輸效率。
傳統總線橋的數據通道和地址通道之間存在相互等待反饋的問題。在圖5(a)所示的傳統總線橋設計中,必須等待上一次的地址和數據傳輸完成后,下一個地址數據才能開始傳輸,這無形中增加了各環節的等待時間,降低了系統的效率[14]。在圖5(b)所示的流水線總線橋設計中,主設備可以連續向從設備發送多個訪問請求,在進行一個訪問的同時也可以發布新的訪問請求,直至暫存地址數據FIFO滿[15]。本文設計的總線橋不僅支持流水線傳輸,還充分利用了PLB與AXI總線讀寫數據通道分離的結構優勢,加入了讀寫重疊傳輸機制。在圖5(c)所示的設計中,主設備向從設備連續發起多次讀寫操作請求,各個讀寫地址依次進行傳輸,在進入數據周期后,讀寫數據分別利用各自的讀寫數據通道進行傳送[16],讀數據傳輸和寫數據傳輸可以并發執行而無需相互等待,此讀寫重疊機制可在流水線傳輸的基礎上進一步縮短傳輸時間,大幅提高帶寬利用率和系統傳輸效率。

圖5 總線橋高性能策略Fig.5 Bus bridge transmission performance strategy
本文使用Synopsys公司的VCS工具對PLB2AXI橋進行功能仿真,然后通過Verdi工具對得到的波形進行處理和查看。寫突發傳輸、讀突發傳輸以及流水線與重疊傳輸波形分別如圖6~圖8所示。地址周期開始后,總線橋開始進行表3所示地址與傳輸控制信號的傳輸。

表3 地址與傳輸控制信號Table 3 Address and transmission control signals
在AXI端成功接收相關信號后,地址應答信號PLB_AddrAck被拉高,地址周期結束,數據周期開始,數據在經過大小端轉換后,通過128位數據總線PLB_WrDBus/AXI_WData開始依次傳輸[17]。每成功接收到一個數據,PLB_WrDAck信號都被拉高一次。在寫突發傳輸中,完成數據接收的從設備會在寫響應通道握手后發送反饋信號“OKEY”[18];而在讀突發傳輸中,數據應答伴隨讀數據一同發往PLB主設備。在圖6與圖7中,完成寫突發共用16個時鐘周期,完成讀突發共用18個時鐘周期。

圖7 讀突發傳輸波形Fig.7 Read burst transmission waveform

圖6 寫突發傳輸波形Fig.6 Write burst transmission waveform
在圖8中,總線橋通過流水線和讀寫重疊的方式進行傳輸,PLB端總共發起4次讀寫請求,分別是“寫”-“讀”-“寫”-“讀”請求。PLB_BURST信號為“1”說明本次傳輸為突發傳輸。4次讀寫操作的地址分別為32’hc000_0000、32’hc000_0030、32’hc000_0038和32’hc000_0010,并且PLB_BE和PLB_Size為16’h3000和4’b1100,說明此次傳輸為固定長度的四字突發傳輸,突發次數為4次。在上一次地址傳輸完畢之后,無需等待數據周期結束即可進行下一個地址的傳輸,每次地址傳輸間隔一個時鐘周期。在每個地址傳輸完成后,讀寫數據分別通過讀寫傳輸通道并發傳輸,讀寫數據周期相互重疊,大幅縮短了數據的傳輸時間[7]。第1次讀寫數據傳輸完成后4個時鐘周期,第2次讀寫數據的傳輸并發進行,讀寫數據周期仍然重疊,完成4次讀寫操作共需要37個時鐘周期。

圖8 流水線與重疊傳輸波形Fig.8 Pipeline and overlap transmission waveforms
本文設計的PLB2AXI總線橋與傳統不進行流水線傳輸和重疊傳輸的總線橋的對比如表4所示。可以看出,引入流水線傳輸和重疊傳輸的PLB2AXI方案總耗時僅為傳統方案的54.41%,驗證了PLB2AXI總線橋的優越性。

表4 不同傳輸方案的耗時對比Table 4 Time consuming comparison of different transmission schemes ms
為驗證SoC的功能,進而測試總線橋在系統中是否正常工作,搭建由HAPS及相關外設子板構成的FPGA系統驗證平臺,如圖9所示。

圖9 FPGA系統驗證環境Fig.9 FPGA system verification environment
HAPS Prototyping Solution是Synopsys基于FPGA的原型驗證解決方案[19],其是一個完整的FPGA系統驗證環境。該平臺不僅提供高性能的FPGA平臺硬件,而且提供與之緊密配套的自動化調試環境HAPS Proto Compiler[20]。在本文設計中,PLB總線上的PowerPC內核通過PLB2AXI總線橋進行協議轉換,然后對用戶IP Main controller的寄存器進行如表5所示的配置。

表5 對用戶IP寄存器的配置值Table 5 Configuration value of user’s IP register
執行配置程序后,PowerPC成功完成了對Main controller中各寄存器的的配置,配置后的寄存器結果如圖10所示。測試結果不僅驗證了PLB2AXI總線橋協議轉換功能的正確性,還驗證了SoC系統的跨總線配置功能的正確性。

圖10 寄存器配置結果與FPGA驗證實物圖Fig.10 Register configuration result and physical diagram of FPGA verification
本文通過引入流水線傳輸和讀寫重疊機制,設計PLB2AXI高性能總線橋,以實現SoC中各模塊協議的精確轉換,提升傳輸效率。實驗結果表明,對于同樣的傳輸任務,PLB2AXI用時僅為傳統總線橋的54.41%,時間開銷大幅降低。此外,系統級的FPGA驗證也進一步證明了該設計的正確性。后續將優化本文PLB2AXI總線橋的傳輸性能,并將其應用于多總線SoC系統的設計中,以此提升系統的整體工作效率。