陳婷,岳強,汪洋
(解放軍信息工程大學,鄭州 450000)
?
FPGA和DSP間基于SRIO的高速通信系統設計
陳婷,岳強,汪洋
(解放軍信息工程大學,鄭州 450000)
摘要:現代信號處理系統通常需要在不同處理器之間實現高速數據通信,SRIO協議由于高效率、低延時的特性被廣泛使用。本文研究了在FPGA和DSP兩種處理器之間實現SRIO協議的方法,并通過電路設計和利用處理器的開發工具編程實現了兩種處理器間的高速通信。經測試,該系統具有較高的傳輸效率。
關鍵詞:異構處理器;高速數據通信;SRIO協議;多核DSP;FPGA
引言
隨著高性能信號處理系統對運算速度、通信速率等要求的不斷提高,單獨的處理器(如FPGA或DSP)無法滿足高速實時信號處理的需求。TI公司的多核DSP處理性能強大,但是并行性不強,難以適應計算異常密集的應用,另外集成性的DSP接口也影響了數據傳輸的靈活性;FPGA具有極強的并行性,適合密集計算應用,而且可配置I/O和IP核支持多種數據傳輸接口,但FPGA的內部邏輯資源和存儲資源有限,并且開發難度大,實現復雜算法也比較困難。因此,結合多核DSP和FPGA的優勢,構建基于異構處理器的信號處理系統成為當前一種發展趨勢。異構處理器間的高速通信成為高速信號處理系統[1]的關鍵問題之一,本文基于SRIO協議設計和實現了DSP與FPGA之間的高速數據通信。
1異構處理器電路
1.1DSP處理器
在處理器領域,多核DSP在處理性能、功耗和面積上都有很大優勢,得到了廣泛應用。TI公司的8核處理器TMS320C6678[2],基于KeyStone多核結構,具有高性能的浮點、定點計算能力,單核具有1 GHz的主頻,運算速度可達320 GMACS/160 GFLOPS。該DSP采用同構多核架構,每個核可以獨立地執行不同的計算任務,具有512 KB的私有內存。芯片具有4 MB共享內存供8個核心訪問,而且具有SRIO、PCIe等多種接口,能夠滿足各種數據傳輸的需求。
1.2FPGA處理器
FPGA因其功能強大、接口靈活,成為當前的主流處理器之一,FPGA與DSP芯片有機結合不僅能夠高效地實現復雜算法,而且還可以提高系統數據傳輸的效率和結構的靈活性。Xilinx公司Virtex-6 LXT系列FPGA芯片XC6VLX550T,是一款具有高級串行數據傳輸功能的高性能邏輯器件,基于硬件GTX串行收發器,可以實現多種高速數據傳輸接口。采用SRIO IP核可以實現FPGA和DSP之間的SRIO協議通信。
1.3異構處理器電路互連
RapidIO[3]協議是一個開放的點對點分組交換標準,是面向嵌入式系統開發提出的高可靠、高性能、基于包交換的互連技術。串行RapidIO[4](SRIO)是采用串行差分模擬信號傳輸的RapidIO協議,基于SerDes(Serialize Deserialize)技術,采用差分交流耦合信號(具有抗干擾能力強、速率高、傳輸距離較遠等優點),所以SRIO是一個針對嵌入式系統應用的高性能、低引腳數的高速互連接口。
SRIO協議分為3層:邏輯層、傳輸層和物理層。邏輯層定義了操作協議;傳輸層定義了包交換、路由和尋址機制;物理層定義了電氣特性、鏈路控制和糾錯重傳等。SRIO是基于包交換的高速互連技術,其數據包是由包頭、有效的數據載荷和16位CRC校驗組成。包頭的長度根據包類型不同,可能為十幾到二十幾個字節,最大的有效載荷長度為256字節。由于包長度短,所以傳輸延時較小,硬件上也易于實現,適合數字信號處理場合對傳輸延時要求較高的應用。
TMS320C6678集成了支持SRIOv2.1通信協議的4通道SRIO接口,可以實現每條通路1.25 Gbps、2.5 Gbps、3.125 Gbps、5 Gbps的通信速率。XC6VLX550T的GTX模塊嵌入Serial RapidIO IP核,可支持線速率為1.25 Gbps,2.5 Gbps~3.125 Gbps,因此可實現異構處理器DSP與FPGA之間的SRIO高速串行通信。
為了最大程度地體現RapidIO串行接口的性能,本設計中采用3.125 Gbps的線速率,處理器之間采用4xSRIO連接方式, 1個1x接口即是一個差分對的一對讀/寫信號,一個4x接口即4個此類差分對的結合,因此采用4x SRIO連接可實現最高12.5 Gbps的數據傳輸速率。電路連接方式如圖1所示,只需要將DSP的TX、RX端口與FPGA的RX、TX端口對應相接,由于SRIO采用差分線對實現數據傳輸,所以需要在異構處理器的RX端口的差分線上串聯一個0.1 μF的電容,做交流耦合使用。

圖1 異構處理器連接方式
2SRIO設計
DSP和FPGA作為SRIO連接的端點器件,兩者可互為從屬[5]。主設備需要管理通信的發起、配置、結束等一系列過程,從設備只需要被動地響應通信。基于DSP的編程比FPGA簡便,為了降低開發難度和工作量,采用DSP作為主設備,是通信的發起端;FPGA作為從設備,是通信的目的端。
2.1DSP端的SRIO配置
DSP端SRIO的軟件設計基于SYS/BIOS操作系統,使用TI公司提供的多核軟件開發套件(MCSDK),主要組件是開發平臺中的芯片支持庫(CSL)工具。CSL是TI公司為其DSP產品提供的API函數,提供了一個用于配置和控制片上外設的C語言接口,在程序設計過程中利用CSL庫函數可以方便地訪問DSP的寄存器和硬件資源,提高DSP軟件的開發效率和速度。
2.1.1SRIO初始化
實現SRIO重要的一步是SRIO的初始化,一般分為以下幾步:
① 打開SRIO的電源和時鐘:為了降低功耗,默認狀態下SRIO模塊的電源和時鐘是處于關閉狀態的,因此 SRIO 初始化首先要調用CSL_SRIO_OPEN函數將SRIO模塊的電源和時鐘打開。
② 配置SRIO的串并轉換器:將125 MHz的參考時鐘通過串并轉換器內部的鎖相環倍頻至1.25 GHz,串并轉換器采用半速率時鐘模式,利用這個時鐘信號的上升沿和下降沿對4路8位數據分時移位輸出,即每個時鐘串并轉換器的串行輸出端將輸出2位的數據,采用該模式降低了對時鐘信號的要求,降低了電路設計難度。
③ 設置4x工作模式:C6678有4個SRIO端口,將4路串并轉換器使能。定義SRIO通信鏈路端點器件的ID,C6678提供了8個LSU模塊用于SRIO數據操作的處理,每組LSU都有7個32位寄存器,通過配置LSUx_reg4將源器件DSP的ID設為0x00,目的器件FPGA的ID設計為0xFF。
④ 等待SRIO初始化完成:通過配置SP_ERR_STAT寄存器,檢測SRIO的端口狀態是否OK,如果OK,則表示可以進行SRIO通信,否則提示初始化不成功或者其他情況導致不能通信。在SRIO初始化前需要FPGA端完成SRIO邏輯的配置,否則DSP在初始化SRIO期間無法和FPGA進行握手,會導致初始化失敗。
2.1.2SRIO的讀寫操作
SRIO初始化完成后,通過DSP對SRIO端口的讀寫操作實現和FPGA之間的數據傳輸。DSP讀寫支持的操作通過數據包格式中的Ftype和Ttype兩個字段描述,I/O邏輯操作是簡單實用的傳輸方式,使用該模式的前提是主設備要知道被訪問端的存儲器映射,可以直接讀寫從設備的存儲器。I/O邏輯操作在被訪問端的功能往往完全由硬件實現,所以被訪問的器件不會有任何軟件負擔。表1所列為I/O操作的幾種事務類型。本文使用的讀操作事務是NREAD。在3種寫操作事務中:NWRITE_R是帶響應的寫操作,效率較低;SWRITE要求數據載荷長度在8~256字節之間,且為8字節的整數倍。因此本文采用NWRITE寫操作,配置簡單且易于實現。

表1 I/O邏輯操作事務類型

圖2 FPGA端的SRIO實現結構
I/O邏輯操作使用了SRIO的功能模塊LSU(Load Store Unit)和MAU(Memory Access Unit)。LSU實現I/O邏輯操作數據包的讀寫;MAU提取數據包中的源地址、目的地址、數據長度等信息,從而將數據包的有效數據載荷寫入指定位置。DSP端SRIO的I/O邏輯操作可以分為4個部分:
① 鎖定LSU寄存器:CSL_SRIO_IsLSUFull函數讀取LSUx_reg6寄存器中的FULL位,為1,則LSU所有的影子寄存器已經寫入配置文件等待數據發送,暫時沒有可用的影子寄存器。
② 配置寄存器:配置LSU寄存器0~4,獲取傳輸信息,包括源地址dspAddress、目的地址rapidIOLSB、數據長度bytecount等,程序使用的函數是CSL_SRIO_SetLSUTransfer。

圖3 RapidIO接口模塊實現方案
③ 釋放寄存器:完成鎖定和配置LSU寄存器后,最后配置LSU寄存器5,確定數據包的事務類型,配置完成后通過CSL_SRIO_IsLSUBusy函數檢測LSUx_reg6寄存器中的BUSY位。若BUSY為0,釋放LSU控制權,該影子寄存器進入等待狀態,最終將數據發送出去;若BUSY為1,則將數據存放在影子寄存器中,等待LSU完成當前傳輸至空閑再發送數據。
④ 等待傳輸完成:通過CSL_SRIO_GetLSUCompletionCode函數讀取寄存器SRIO_LSU_STAT_REG的狀態,判斷是否所有數據均傳輸完畢。
2.1.3通信流程
C6678使用中斷控制器(INTC)管理和分配多個外部中斷源,其中有來自FPGA的中斷源。本文中SRIO工作于主模式狀態,FPGA通過GPIO向DSP發送中斷,當DSP接收到來自FPGA的中斷后,對FPGA相應的內存區域進行讀寫操作。本設計中,中斷使用了GPIO8和GPIO9兩個中斷觸發事件,分別將其映射到DSP的CPU中斷4和中斷5。在此狀態下程序主要執行兩種操作:在 DSP 收到中斷4以后進入中斷4服務函數, 完成從FPGA端讀取數據的操作;在收到中斷5以后進入中斷5 服務函數,完成將數據寫入FPGA端的操作。
2.2FPGA端的SRIO配置
FPGA端的SRIO基于Xilinx公司的Serial RapidIO IP核[6]來實現,IP核底層硬件基于FPGA的GTX收發器。圖2所示為FPGA端的SRIO實現結構,SRIO IP核左側通過接口模塊與用戶邏輯相連,右側通過輸出引腳與DSP相連。IP核可劃分為5個部分:RapidIO邏輯和傳輸層(LOGIC)模塊、 RapidIO物理層(PHY)模塊、RapidIO緩沖區(Buffer)模塊、寄存器管理(Register Manager)模塊、參考時鐘和復位模塊。根據不同的需求,用戶可以選擇使用物理層包封裝(phy_wrapper)或者RapidIO包封裝(rio_wrapper),本文選擇使用RapidIO包封裝。
本文以IP核為基礎,采用已有的整體框架,圍繞目標用戶接口設計接口模塊。中斷作為FPGA和DSP之間的握手信號,FIFO作為用戶邏輯和IP核之間的數據緩沖接口。圖3所示為Rapid IO接口模塊實現方案。
由于FPGA在通信中作為從設備,因此接口模塊中不再需要IP核接口中發起用戶的功能,只保留目標用戶的功能,其中目標請求/響應狀態機控制各模塊的時序變化。接口模塊左側與用戶邏輯接口相連,右側與IP核目標用戶接口相連。
中斷機制部分,向DSP發送數據時采用發送FIFO的半滿標志作為讀中斷,從DSP接收數據時采用接收FIFO的半空標志作為寫中斷。發送FIFO中數據超過一定量時觸發DSP讀數據,接收FIFO中數據低于一定量時觸發DSP寫數據。用戶及時有效地控制FIFO的狀態,可以保證FIFO不會被寫滿或者被讀空。用戶也可以產生中斷邏輯,控制DSP對FPGA內部存儲空間進行讀寫。本文引入了中斷機制和數據緩沖FIFO,利于接口對接和功能拓展,實現數據在不同芯片之間的高效傳輸。
3傳輸性能測試
本文對DSP與FPGA之間的SRIO通信進行性能測試。DSP的工作頻率為1 GHz,SRIO 接口工作速率設置為3.125 Gbps,經過物理層8B/10B編碼,數據包的實際傳輸速率為2.5 Gbps,傳輸方式設置為4x 模式,則理論數據傳輸速率應為10 Gbps。由于數據包的打包和解包等操作,實際速率會小于理論值。
表2是使用NWRITE和NWREAD對不同數據包進行通信速度測試的結果。在傳輸數據為32 字節時,考慮到數據包操作時的開銷,與理論值比率僅為1.1%,很大一部分時間被花費在數據包的打包和解包的處理中,隨著傳輸數據量的增加,SRIO的實際傳輸效率不斷增大,最終維持在7 800 Mbps。經過多次反復實驗,該統計結果穩定可靠,并且沒有出現丟包誤碼的情況。

表2 不同數據大小的SRIO傳輸速率測試
結語
本文針對當今高速信號處理系統對芯片間數據傳輸的需求,研究異構處理器DSP和FPGA間的數據傳輸技術。DSP端基于CSL庫實現了SRIO的主設備通信,FPGA端基于RocketIO IP實現了從設備通信,并采用中斷實現異構處理器之間的握手信號,經測試達到較高的傳輸速率。本文研究內容也適用于同系列的其他處理器之間的數據通信,具有較高的應用價值。
參考文獻
[1] 呂遵明,王彥剛.基于串行RapidIO的通用數字信號處理模塊設計[J].信息化研究,2009,35(9):39-41.
[2] TI.TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual,2012.
[3] 王怡然,常文革,田海山.RapidIO 技術在高速信號處理系統中的應用[J].雷達科學與技術,2013,11(4):390-394.
[4] TI.KeyStone Architecture Serial Rapid IO (SRIO) User Guide,2012.
[5] 張穎川.多核數字信號處理平臺的設計與實現[D].西安:西安電子科技大學,2013.
[6] 翟彥彬,蔣志焱,張保寧.大規模RapidIO協議交換的FPGA實現[J].現代雷達,2011,33(12):33-35.
陳婷(碩士),研究方向為通信技術、信號信息處理技術應用。


圖7 安卓控制終端APP界面
實現移動偵測并上報微信用戶,通過ser2net實現TTL控制Aruidno進而控制小車行徑功能,并開發出安卓端APP控制軟件,下一步將實現通過小車控制智能家居設備和實現智能家居設備的數據上報功能。
[1] 羅回彬,巫敏鋒.基于WiFi的可實時視頻同傳的探測小車[J].單片機與嵌入式系統應用,2015(6).
[2] 王宇陽,楊奕,韓志.基于Android設備的WiFi智能監控機器人設計[J].計算機與數字工程,2014(12).
[3] 鄭潤芳,張海.STM32的小車自主定位與控制系統設計[J].單片機與嵌入式系統應用,2013(9).
[4] 滕泓虬.基于OpenWrt的嵌入式移動機器人系統設計[J].單片機與嵌入式系統應用,2012(1).
[5] wrtnode官網.http://wrtnode.cc/.
陳建剛(講師),主要研究方向為物聯網應用。
High-speed Communication System Based on SRIO Between FPGA and DSP
Chen Ting,Yue Qiang,Wang Yang
(Information Engineering University of PLA,Zhengzhou 450000,China)
Abstract:The modern signal processing system often needs to realize high-speed data communication between the different processors.Due to the characteristics of high efficiency and low latency,the SRIO protocol is used widely.In the paper,the method of realizing SRIO protocol between FPGA and DSP processors is studied.The high-speed communication between the two processors is realized through combining the circuit design and the development tools.The test results show that the system has high transmission efficiency.
Key words:heterogeneous processor;high-speed data communication;SRIO protocol;multi-core DSP;FPGA
收稿日期:(責任編輯:薛士然2015-10-01) (責任編輯:薛士然2015-10-10)
中圖分類號:TN91
文獻標識碼:A