王松明
(中國電子科技集團公司第十研究所,四川 成都 610036)
高速數據交換的FPGA實現
王松明
(中國電子科技集團公司第十研究所,四川 成都610036)
針對數字信號處理系統(tǒng)前端數據采集與后端信號處理之間的數據流傳輸效率問題,介紹了基于RapidIO協(xié)議和Aurora協(xié)議在FPGA上實現高速數據交換的設計方案。該交換模塊采用Aurora協(xié)議與光纖傳輸結合實現高速數據采集的點到點通信,并利用RapidIO協(xié)議的高效率解決數據高速交換問題。驗證結果表明該方法在數據傳輸效率上達到了預先設計指標,其對提高數字信號處理系統(tǒng)處理帶寬、改進系統(tǒng)性能具有較大的意義。
FPGA;RapidIO;Aurora;交換
隨著模數轉換器件以及各種信號處理器件性能的提高,復雜的高速實時數字信號處理系統(tǒng)已經可以實現[1],相應的板間及機箱間的數據交互要求越來越高,連接各種器件的總線問題成為實現高性能數字信號處理系統(tǒng)的關鍵。
為有效解決系統(tǒng)連接的瓶頸、實現互連架構的可重構,本文介紹了一種基于Aurora協(xié)議和RapidIO總線技術的數字信號處理系統(tǒng)高速數據交換設計方案,主要技術指標如下:
(1)支持18個通道前端高速數據輸入,單通道最大支持6.5 Gb/s的傳輸,數據輸入總帶寬小于30 Gb/s;
(2)支持RapidIO 2.2標準,物理層采用4X串行RapidIO;
(3)支持4路4X RapidIO實現板卡內通信,單路數據率10 Gb/s,總帶寬40 Gb/s;
(4)支持3路4X RapidIO實現板卡間通信,單路數據率10 Gb/s,總帶寬30 Gb/s;
(5)支持2路4X RapidIO實現機箱間通信,單路數據率為10 Gb/s,總帶寬為20 Gb/s。
數字信號處理系統(tǒng)的前端通常數據流量大且是點對點傳輸,Aurora IP用戶接口簡單并支持與光纖的無縫連接[2],是實現與數字信號處理系統(tǒng)前端數據互連的最佳選擇之一。
Aurora協(xié)議是由Xilinx公司提供的一個開放、免費的鏈路層協(xié)議,可以用來進行點對點的串行數據傳輸。Aurora IP內部封裝了RocketIO硬核,將RocketIO控制結構轉化為簡單的用戶接口。同時,協(xié)議自帶的信道初始化與時鐘校正等功能有效保證了點對點傳輸的高速數據同步,能有效解決數據傳輸的瓶頸。
Aurora 64B/66B Core結構如圖1所示[3],主要功能模塊如下:
(1)通道邏輯:收發(fā)器初始化、控制字符編解碼、通道數據錯誤檢測;
(2)全局邏輯:初始化時通道對齊;
(3)接收側用戶接口:從通道中接收數據傳輸到應用、接收流量控制;
圖1 Aurora 64B/66B Core結構圖
(4)發(fā)送側用戶接口:從應用中接收數據并發(fā)送出去,發(fā)送流量控制及時鐘補償。
本設計需要實現9路4X RapidIO接口和18路Aurora協(xié)議接口,可選擇的最佳FPGA是Xilinx公司的Virtex7系列,具體型號選擇XC7VX690T。XC7VX690T有80個高速串行接口,特別適合高速串行互連設計。本設計需要實現54個高速串行接口,采用一片XC7VX690T就可以滿足設計需求。
IP核的參考時鐘不能有過大的抖動,考慮到本設計IP核傳輸數據速率都比較高,所以使用高精度的差分時鐘用作IP核的參考時鐘。根據Xilinx公司發(fā)布的用戶指南,一組差分時鐘只能給3個Bank或12個GTX/GTH作為參考時鐘[4]。FPGA參考時鐘設計如圖 2所示,Aurora IP需要2組差分時鐘,用于機箱間通信的RapidIO IP需要1組差分時鐘,用于板卡內通信的RapidIO IP需要2組差分時鐘,用于板卡間通信的RapidIO IP需要1組差分時鐘,除此之外1組差分時鐘用作系統(tǒng)處理時鐘,總共需要7組差分時鐘輸入。
圖2 FPGA參考時鐘設計
XC7VX690T總共有32個全局時鐘,即32個BUFGCTRL,這32個全局時鐘可以分配為BUFG、BUFGCE、BUFGMUX。在實際使用時需要預留幾個全局時鐘,否則在布局和布線時會出現布線布不開等問題。軟件生成的Aurora 64B/66B Core內部使用了1個BUFGCE,RapidIO Core內部使用了5個BUFG,如果直接使用IP,則僅IP就需要消耗63個全局時鐘資源,因此需要設計IP共享時鐘方案。
在4X 2.5 Gb/s線速模式下,RapidIO Core內部gt_clk、phy_clk、log_clk、cfg_clk四個時鐘頻率均為125 MHz[5],因此在RapidIO時鐘共享設計方案時可以使用同一時鐘驅動,如圖 3所示??紤]到Core內部時鐘不會在Core以外其他任何地方使用,為了節(jié)約全局時鐘資源,將Core代碼內部的所有BUFG替換為BUFH,這樣每個Core可以節(jié)約4個全局時鐘資源。
Aurora 64B/66B Core時鐘共享方案如圖4所示,12個或6個Core共用一組差分時鐘作為參考時鐘,每4個Core共用一個GTXE2_COMMON,所有Aurora Core所需的初始化時鐘init_clk均來自系統(tǒng)處理時鐘。同時為了節(jié)約全局時鐘資源,將Core代碼內部的BUFGCE替換為BUFHCE。
數據交換系統(tǒng)主要包含三個部分:Aurora IP、RapidIO IP和數據交叉電路。數據交叉電路實現多路Aurora接口到多路RapidIO接口的數據調度,主要功能目標為根據系統(tǒng)應用需求,實現多個Aurora端口的數據到多個RapidIO端口的任意交叉,以及不同通信目的地的RapidIO端口之間的數據任意交叉。數據交換系統(tǒng)框圖如圖 5所示。
使用異步FIFO對IP核輸入輸出接口完成數據跨時鐘域的變換,可以避免其他模塊進行異步時鐘處理。由于Aurora 64B/66B Core與RapidIO Core數據總線大小端不一致,需要調整Aurora接口接收到的數據位序。RapidIO接口接收來自Aurora IP和其他RapidIO IP的數據,組包后緩存到異步FIFO中,再以RapidIO SWrite操作發(fā)送到RapidIO目的端。
圖3 RapidIO Core時鐘共享方案
圖4 Aurora Core時鐘共享方案
圖5 數據交換系統(tǒng)框圖
可由軟件通過板卡內的4路RapidIO接口中任意一路配置Aurora 端口和其余RapidIO端口的寄存器,通過擴展RapidIO NWrite操作實現寄存器寫訪問和擴展RapidIO NRead操作實現寄存器讀訪問。
對于板卡內的RapidIO接口,每一個端口可能接收來自18路Aurora數據、來自板卡間的3路RapidIO數據以及來自機箱間的2路RapidIO數據,共計23路數據,經過調度后發(fā)送到目的端。對于板卡間或機箱間的RapidIO接口,每一個端口可能接收來自18路Aurora的數據,經過調度后發(fā)送到目的端。RapidIO數據調度處理結構如圖 6所示。
圖6 RapidIO數據調度處理結構
RapidIO SWrite操作一次發(fā)送256 B數據,基于雙FIFO的乒乓操作是通過FIFO寫邏輯與讀邏輯的相互配合,將需要緩存的數據包連貫地送到RapidIO接口進行處理的一種控制方法。FIFO寫邏輯先選擇FIFO 0,待FIFO 0寫滿之后切換FIFO寫邏輯選擇FIFO 1,FIFO 1寫滿之后切換回寫FIFO 0。FIFO 0寫滿之后才會啟動FIFO讀邏輯,先選擇讀取FIFO 0數據,FIFO 0空之后切換FIFO讀邏輯選擇FIFO 1,FIFO 1讀空之后切換回讀FIFO 0,如此循環(huán)。
數據調度采用周期輪詢:板卡內的RapidIO接口可能接收23路數據,編號為1,2,3,…;各路數據按照1,2,3,…的順序輪流接受服務,若當前通路有數據則輸出到RapidIO,否則跳過本輪服務。
測試過程中隨機選擇一路Aurora數據,配置到板卡內、板卡間的任意一路RapidIO輸出,通過判斷數據的一致性來驗證數據調度系統(tǒng)的正確性和有效性。通過圖 7和圖 8的對比,得到測試結果為:Aurora IP接收到的數據與RapidIO IP發(fā)送的數據完全一致。
圖7 Aurora數據接收測試
圖8 RapidIO數據發(fā)送測試
經過測試,本設計實現了Aurora接口數據輸出到RapidIO接口的任意調度和RapidIO接口數據到RapidIO接口的任意調度,數據帶寬滿足要求。
本文針對高性能數字信號處理系統(tǒng)大規(guī)模實時數據交換的需求,結合具體的模塊設計,給出了一種采用Xilinx公司的FPGA芯片實現多端口、高速率、大規(guī)模數據交換設計。在實際的數字信號處理系統(tǒng)中,本設計取得了很好的效果。
[1] 陳麗華.多DSP并行處理技術的研究[D]. 上海:華東計算技術研究所,2004.
[2] 李維明,陳建軍,陳星锜. 基于Aurora協(xié)議的高速通信技術的研究[J]. 電子技術應用,2013,39(12):37-40.
[3] Xilinx.Aurora 64B/66B v11.0 logiCORE IP product guide[Z]. 2015.
[4] Xilinx.7 series FPGAs GTX/GTH transceivers user guide[Z]. 2015.
[5] Xilinx. LogiCORE IP serial RapidIO Gen2 endpoint v2.0[Z]. 2013.
An implementation of high-speed communication system on FPGA
Wang Songming
(The Tenth Research Institute of China Electronic Technology Group Corporation,Chengdu 610036,China)
Aiming at the problem of data transmission efficiency between front-end data acquisition and back-end signal processing of digital signal processing system,this paper designs a high-speed communication system based on FPGA with Aurora and RapidIO protocol. This method combined optical transmission and Aurora protocol to achieve high-speed communication of front-end data acquisition,and used the RapidIO protocol’s characteristic of high efficiency to implement high-speed data switch. The test results show that the data transmission efficiency of the method could reach the preset index,and it has great meaning in improving the signal processing bandwidth and performance of digital signal processing system.
FPGA; RapidIO; Aurora; switch
TN914
A
10.19358/j.issn.1674-7720.2017.24.028
王松明.高速數據交換的FPGA實現J.微型機與應用,2017,36(24):98-101.
2017-06-27)
王松明(1986-),男,碩士,工程師,主要研究方向:集成電路設計。