陳婷,岳強(qiáng),汪洋
(解放軍信息工程大學(xué),鄭州 450000)
?
FPGA和DSP間基于SRIO的高速通信系統(tǒng)設(shè)計(jì)
陳婷,岳強(qiáng),汪洋
(解放軍信息工程大學(xué),鄭州 450000)
摘要:現(xiàn)代信號(hào)處理系統(tǒng)通常需要在不同處理器之間實(shí)現(xiàn)高速數(shù)據(jù)通信,SRIO協(xié)議由于高效率、低延時(shí)的特性被廣泛使用。本文研究了在FPGA和DSP兩種處理器之間實(shí)現(xiàn)SRIO協(xié)議的方法,并通過電路設(shè)計(jì)和利用處理器的開發(fā)工具編程實(shí)現(xiàn)了兩種處理器間的高速通信。經(jīng)測(cè)試,該系統(tǒng)具有較高的傳輸效率。
關(guān)鍵詞:異構(gòu)處理器;高速數(shù)據(jù)通信;SRIO協(xié)議;多核DSP;FPGA
引言
隨著高性能信號(hào)處理系統(tǒng)對(duì)運(yùn)算速度、通信速率等要求的不斷提高,單獨(dú)的處理器(如FPGA或DSP)無法滿足高速實(shí)時(shí)信號(hào)處理的需求。TI公司的多核DSP處理性能強(qiáng)大,但是并行性不強(qiáng),難以適應(yīng)計(jì)算異常密集的應(yīng)用,另外集成性的DSP接口也影響了數(shù)據(jù)傳輸?shù)撵`活性;FPGA具有極強(qiáng)的并行性,適合密集計(jì)算應(yīng)用,而且可配置I/O和IP核支持多種數(shù)據(jù)傳輸接口,但FPGA的內(nèi)部邏輯資源和存儲(chǔ)資源有限,并且開發(fā)難度大,實(shí)現(xiàn)復(fù)雜算法也比較困難。因此,結(jié)合多核DSP和FPGA的優(yōu)勢(shì),構(gòu)建基于異構(gòu)處理器的信號(hào)處理系統(tǒng)成為當(dāng)前一種發(fā)展趨勢(shì)。異構(gòu)處理器間的高速通信成為高速信號(hào)處理系統(tǒng)[1]的關(guān)鍵問題之一,本文基于SRIO協(xié)議設(shè)計(jì)和實(shí)現(xiàn)了DSP與FPGA之間的高速數(shù)據(jù)通信。
1異構(gòu)處理器電路
1.1DSP處理器
在處理器領(lǐng)域,多核DSP在處理性能、功耗和面積上都有很大優(yōu)勢(shì),得到了廣泛應(yīng)用。TI公司的8核處理器TMS320C6678[2],基于KeyStone多核結(jié)構(gòu),具有高性能的浮點(diǎn)、定點(diǎn)計(jì)算能力,單核具有1 GHz的主頻,運(yùn)算速度可達(dá)320 GMACS/160 GFLOPS。該DSP采用同構(gòu)多核架構(gòu),每個(gè)核可以獨(dú)立地執(zhí)行不同的計(jì)算任務(wù),具有512 KB的私有內(nèi)存。芯片具有4 MB共享內(nèi)存供8個(gè)核心訪問,而且具有SRIO、PCIe等多種接口,能夠滿足各種數(shù)據(jù)傳輸?shù)男枨蟆?/p>
1.2FPGA處理器
FPGA因其功能強(qiáng)大、接口靈活,成為當(dāng)前的主流處理器之一,F(xiàn)PGA與DSP芯片有機(jī)結(jié)合不僅能夠高效地實(shí)現(xiàn)復(fù)雜算法,而且還可以提高系統(tǒng)數(shù)據(jù)傳輸?shù)男屎徒Y(jié)構(gòu)的靈活性。Xilinx公司Virtex-6 LXT系列FPGA芯片XC6VLX550T,是一款具有高級(jí)串行數(shù)據(jù)傳輸功能的高性能邏輯器件,基于硬件GTX串行收發(fā)器,可以實(shí)現(xiàn)多種高速數(shù)據(jù)傳輸接口。采用SRIO IP核可以實(shí)現(xiàn)FPGA和DSP之間的SRIO協(xié)議通信。
1.3異構(gòu)處理器電路互連
RapidIO[3]協(xié)議是一個(gè)開放的點(diǎn)對(duì)點(diǎn)分組交換標(biāo)準(zhǔn),是面向嵌入式系統(tǒng)開發(fā)提出的高可靠、高性能、基于包交換的互連技術(shù)。串行RapidIO[4](SRIO)是采用串行差分模擬信號(hào)傳輸?shù)腞apidIO協(xié)議,基于SerDes(Serialize Deserialize)技術(shù),采用差分交流耦合信號(hào)(具有抗干擾能力強(qiáng)、速率高、傳輸距離較遠(yuǎn)等優(yōu)點(diǎn)),所以SRIO是一個(gè)針對(duì)嵌入式系統(tǒng)應(yīng)用的高性能、低引腳數(shù)的高速互連接口。
SRIO協(xié)議分為3層:邏輯層、傳輸層和物理層。邏輯層定義了操作協(xié)議;傳輸層定義了包交換、路由和尋址機(jī)制;物理層定義了電氣特性、鏈路控制和糾錯(cuò)重傳等。SRIO是基于包交換的高速互連技術(shù),其數(shù)據(jù)包是由包頭、有效的數(shù)據(jù)載荷和16位CRC校驗(yàn)組成。包頭的長(zhǎng)度根據(jù)包類型不同,可能為十幾到二十幾個(gè)字節(jié),最大的有效載荷長(zhǎng)度為256字節(jié)。由于包長(zhǎng)度短,所以傳輸延時(shí)較小,硬件上也易于實(shí)現(xiàn),適合數(shù)字信號(hào)處理場(chǎng)合對(duì)傳輸延時(shí)要求較高的應(yīng)用。
TMS320C6678集成了支持SRIOv2.1通信協(xié)議的4通道SRIO接口,可以實(shí)現(xiàn)每條通路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,因此可實(shí)現(xiàn)異構(gòu)處理器DSP與FPGA之間的SRIO高速串行通信。
為了最大程度地體現(xiàn)RapidIO串行接口的性能,本設(shè)計(jì)中采用3.125 Gbps的線速率,處理器之間采用4xSRIO連接方式, 1個(gè)1x接口即是一個(gè)差分對(duì)的一對(duì)讀/寫信號(hào),一個(gè)4x接口即4個(gè)此類差分對(duì)的結(jié)合,因此采用4x SRIO連接可實(shí)現(xiàn)最高12.5 Gbps的數(shù)據(jù)傳輸速率。電路連接方式如圖1所示,只需要將DSP的TX、RX端口與FPGA的RX、TX端口對(duì)應(yīng)相接,由于SRIO采用差分線對(duì)實(shí)現(xiàn)數(shù)據(jù)傳輸,所以需要在異構(gòu)處理器的RX端口的差分線上串聯(lián)一個(gè)0.1 μF的電容,做交流耦合使用。
圖1 異構(gòu)處理器連接方式
2SRIO設(shè)計(jì)
DSP和FPGA作為SRIO連接的端點(diǎn)器件,兩者可互為從屬[5]。主設(shè)備需要管理通信的發(fā)起、配置、結(jié)束等一系列過程,從設(shè)備只需要被動(dòng)地響應(yīng)通信?;贒SP的編程比FPGA簡(jiǎn)便,為了降低開發(fā)難度和工作量,采用DSP作為主設(shè)備,是通信的發(fā)起端;FPGA作為從設(shè)備,是通信的目的端。
2.1DSP端的SRIO配置
DSP端SRIO的軟件設(shè)計(jì)基于SYS/BIOS操作系統(tǒng),使用TI公司提供的多核軟件開發(fā)套件(MCSDK),主要組件是開發(fā)平臺(tái)中的芯片支持庫(CSL)工具。CSL是TI公司為其DSP產(chǎn)品提供的API函數(shù),提供了一個(gè)用于配置和控制片上外設(shè)的C語言接口,在程序設(shè)計(jì)過程中利用CSL庫函數(shù)可以方便地訪問DSP的寄存器和硬件資源,提高DSP軟件的開發(fā)效率和速度。
2.1.1SRIO初始化
實(shí)現(xiàn)SRIO重要的一步是SRIO的初始化,一般分為以下幾步:
① 打開SRIO的電源和時(shí)鐘:為了降低功耗,默認(rèn)狀態(tài)下SRIO模塊的電源和時(shí)鐘是處于關(guān)閉狀態(tài)的,因此 SRIO 初始化首先要調(diào)用CSL_SRIO_OPEN函數(shù)將SRIO模塊的電源和時(shí)鐘打開。
② 配置SRIO的串并轉(zhuǎn)換器:將125 MHz的參考時(shí)鐘通過串并轉(zhuǎn)換器內(nèi)部的鎖相環(huán)倍頻至1.25 GHz,串并轉(zhuǎn)換器采用半速率時(shí)鐘模式,利用這個(gè)時(shí)鐘信號(hào)的上升沿和下降沿對(duì)4路8位數(shù)據(jù)分時(shí)移位輸出,即每個(gè)時(shí)鐘串并轉(zhuǎn)換器的串行輸出端將輸出2位的數(shù)據(jù),采用該模式降低了對(duì)時(shí)鐘信號(hào)的要求,降低了電路設(shè)計(jì)難度。
③ 設(shè)置4x工作模式:C6678有4個(gè)SRIO端口,將4路串并轉(zhuǎn)換器使能。定義SRIO通信鏈路端點(diǎn)器件的ID,C6678提供了8個(gè)LSU模塊用于SRIO數(shù)據(jù)操作的處理,每組LSU都有7個(gè)32位寄存器,通過配置LSUx_reg4將源器件DSP的ID設(shè)為0x00,目的器件FPGA的ID設(shè)計(jì)為0xFF。
④ 等待SRIO初始化完成:通過配置SP_ERR_STAT寄存器,檢測(cè)SRIO的端口狀態(tài)是否OK,如果OK,則表示可以進(jìn)行SRIO通信,否則提示初始化不成功或者其他情況導(dǎo)致不能通信。在SRIO初始化前需要FPGA端完成SRIO邏輯的配置,否則DSP在初始化SRIO期間無法和FPGA進(jìn)行握手,會(huì)導(dǎo)致初始化失敗。
2.1.2SRIO的讀寫操作
SRIO初始化完成后,通過DSP對(duì)SRIO端口的讀寫操作實(shí)現(xiàn)和FPGA之間的數(shù)據(jù)傳輸。DSP讀寫支持的操作通過數(shù)據(jù)包格式中的Ftype和Ttype兩個(gè)字段描述,I/O邏輯操作是簡(jiǎn)單實(shí)用的傳輸方式,使用該模式的前提是主設(shè)備要知道被訪問端的存儲(chǔ)器映射,可以直接讀寫從設(shè)備的存儲(chǔ)器。I/O邏輯操作在被訪問端的功能往往完全由硬件實(shí)現(xiàn),所以被訪問的器件不會(huì)有任何軟件負(fù)擔(dān)。表1所列為I/O操作的幾種事務(wù)類型。本文使用的讀操作事務(wù)是NREAD。在3種寫操作事務(wù)中:NWRITE_R是帶響應(yīng)的寫操作,效率較低;SWRITE要求數(shù)據(jù)載荷長(zhǎng)度在8~256字節(jié)之間,且為8字節(jié)的整數(shù)倍。因此本文采用NWRITE寫操作,配置簡(jiǎn)單且易于實(shí)現(xiàn)。
表1 I/O邏輯操作事務(wù)類型
圖2 FPGA端的SRIO實(shí)現(xiàn)結(jié)構(gòu)
I/O邏輯操作使用了SRIO的功能模塊LSU(Load Store Unit)和MAU(Memory Access Unit)。LSU實(shí)現(xiàn)I/O邏輯操作數(shù)據(jù)包的讀寫;MAU提取數(shù)據(jù)包中的源地址、目的地址、數(shù)據(jù)長(zhǎng)度等信息,從而將數(shù)據(jù)包的有效數(shù)據(jù)載荷寫入指定位置。DSP端SRIO的I/O邏輯操作可以分為4個(gè)部分:
① 鎖定LSU寄存器:CSL_SRIO_IsLSUFull函數(shù)讀取LSUx_reg6寄存器中的FULL位,為1,則LSU所有的影子寄存器已經(jīng)寫入配置文件等待數(shù)據(jù)發(fā)送,暫時(shí)沒有可用的影子寄存器。
② 配置寄存器:配置LSU寄存器0~4,獲取傳輸信息,包括源地址dspAddress、目的地址rapidIOLSB、數(shù)據(jù)長(zhǎng)度bytecount等,程序使用的函數(shù)是CSL_SRIO_SetLSUTransfer。
圖3 RapidIO接口模塊實(shí)現(xiàn)方案
③ 釋放寄存器:完成鎖定和配置LSU寄存器后,最后配置LSU寄存器5,確定數(shù)據(jù)包的事務(wù)類型,配置完成后通過CSL_SRIO_IsLSUBusy函數(shù)檢測(cè)LSUx_reg6寄存器中的BUSY位。若BUSY為0,釋放LSU控制權(quán),該影子寄存器進(jìn)入等待狀態(tài),最終將數(shù)據(jù)發(fā)送出去;若BUSY為1,則將數(shù)據(jù)存放在影子寄存器中,等待LSU完成當(dāng)前傳輸至空閑再發(fā)送數(shù)據(jù)。
④ 等待傳輸完成:通過CSL_SRIO_GetLSUCompletionCode函數(shù)讀取寄存器SRIO_LSU_STAT_REG的狀態(tài),判斷是否所有數(shù)據(jù)均傳輸完畢。
2.1.3通信流程
C6678使用中斷控制器(INTC)管理和分配多個(gè)外部中斷源,其中有來自FPGA的中斷源。本文中SRIO工作于主模式狀態(tài),F(xiàn)PGA通過GPIO向DSP發(fā)送中斷,當(dāng)DSP接收到來自FPGA的中斷后,對(duì)FPGA相應(yīng)的內(nèi)存區(qū)域進(jìn)行讀寫操作。本設(shè)計(jì)中,中斷使用了GPIO8和GPIO9兩個(gè)中斷觸發(fā)事件,分別將其映射到DSP的CPU中斷4和中斷5。在此狀態(tài)下程序主要執(zhí)行兩種操作:在 DSP 收到中斷4以后進(jìn)入中斷4服務(wù)函數(shù), 完成從FPGA端讀取數(shù)據(jù)的操作;在收到中斷5以后進(jìn)入中斷5 服務(wù)函數(shù),完成將數(shù)據(jù)寫入FPGA端的操作。
2.2FPGA端的SRIO配置
FPGA端的SRIO基于Xilinx公司的Serial RapidIO IP核[6]來實(shí)現(xiàn),IP核底層硬件基于FPGA的GTX收發(fā)器。圖2所示為FPGA端的SRIO實(shí)現(xiàn)結(jié)構(gòu),SRIO IP核左側(cè)通過接口模塊與用戶邏輯相連,右側(cè)通過輸出引腳與DSP相連。IP核可劃分為5個(gè)部分:RapidIO邏輯和傳輸層(LOGIC)模塊、 RapidIO物理層(PHY)模塊、RapidIO緩沖區(qū)(Buffer)模塊、寄存器管理(Register Manager)模塊、參考時(shí)鐘和復(fù)位模塊。根據(jù)不同的需求,用戶可以選擇使用物理層包封裝(phy_wrapper)或者RapidIO包封裝(rio_wrapper),本文選擇使用RapidIO包封裝。
本文以IP核為基礎(chǔ),采用已有的整體框架,圍繞目標(biāo)用戶接口設(shè)計(jì)接口模塊。中斷作為FPGA和DSP之間的握手信號(hào),F(xiàn)IFO作為用戶邏輯和IP核之間的數(shù)據(jù)緩沖接口。圖3所示為Rapid IO接口模塊實(shí)現(xiàn)方案。
由于FPGA在通信中作為從設(shè)備,因此接口模塊中不再需要IP核接口中發(fā)起用戶的功能,只保留目標(biāo)用戶的功能,其中目標(biāo)請(qǐng)求/響應(yīng)狀態(tài)機(jī)控制各模塊的時(shí)序變化。接口模塊左側(cè)與用戶邏輯接口相連,右側(cè)與IP核目標(biāo)用戶接口相連。
中斷機(jī)制部分,向DSP發(fā)送數(shù)據(jù)時(shí)采用發(fā)送FIFO的半滿標(biāo)志作為讀中斷,從DSP接收數(shù)據(jù)時(shí)采用接收FIFO的半空標(biāo)志作為寫中斷。發(fā)送FIFO中數(shù)據(jù)超過一定量時(shí)觸發(fā)DSP讀數(shù)據(jù),接收FIFO中數(shù)據(jù)低于一定量時(shí)觸發(fā)DSP寫數(shù)據(jù)。用戶及時(shí)有效地控制FIFO的狀態(tài),可以保證FIFO不會(huì)被寫滿或者被讀空。用戶也可以產(chǎn)生中斷邏輯,控制DSP對(duì)FPGA內(nèi)部存儲(chǔ)空間進(jìn)行讀寫。本文引入了中斷機(jī)制和數(shù)據(jù)緩沖FIFO,利于接口對(duì)接和功能拓展,實(shí)現(xiàn)數(shù)據(jù)在不同芯片之間的高效傳輸。
3傳輸性能測(cè)試
本文對(duì)DSP與FPGA之間的SRIO通信進(jìn)行性能測(cè)試。DSP的工作頻率為1 GHz,SRIO 接口工作速率設(shè)置為3.125 Gbps,經(jīng)過物理層8B/10B編碼,數(shù)據(jù)包的實(shí)際傳輸速率為2.5 Gbps,傳輸方式設(shè)置為4x 模式,則理論數(shù)據(jù)傳輸速率應(yīng)為10 Gbps。由于數(shù)據(jù)包的打包和解包等操作,實(shí)際速率會(huì)小于理論值。
表2是使用NWRITE和NWREAD對(duì)不同數(shù)據(jù)包進(jìn)行通信速度測(cè)試的結(jié)果。在傳輸數(shù)據(jù)為32 字節(jié)時(shí),考慮到數(shù)據(jù)包操作時(shí)的開銷,與理論值比率僅為1.1%,很大一部分時(shí)間被花費(fèi)在數(shù)據(jù)包的打包和解包的處理中,隨著傳輸數(shù)據(jù)量的增加,SRIO的實(shí)際傳輸效率不斷增大,最終維持在7 800 Mbps。經(jīng)過多次反復(fù)實(shí)驗(yàn),該統(tǒng)計(jì)結(jié)果穩(wěn)定可靠,并且沒有出現(xiàn)丟包誤碼的情況。
表2 不同數(shù)據(jù)大小的SRIO傳輸速率測(cè)試
結(jié)語
本文針對(duì)當(dāng)今高速信號(hào)處理系統(tǒng)對(duì)芯片間數(shù)據(jù)傳輸?shù)男枨?,研究異?gòu)處理器DSP和FPGA間的數(shù)據(jù)傳輸技術(shù)。DSP端基于CSL庫實(shí)現(xiàn)了SRIO的主設(shè)備通信,F(xiàn)PGA端基于RocketIO IP實(shí)現(xiàn)了從設(shè)備通信,并采用中斷實(shí)現(xiàn)異構(gòu)處理器之間的握手信號(hào),經(jīng)測(cè)試達(dá)到較高的傳輸速率。本文研究?jī)?nèi)容也適用于同系列的其他處理器之間的數(shù)據(jù)通信,具有較高的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 呂遵明,王彥剛.基于串行RapidIO的通用數(shù)字信號(hào)處理模塊設(shè)計(jì)[J].信息化研究,2009,35(9):39-41.
[2] TI.TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual,2012.
[3] 王怡然,常文革,田海山.RapidIO 技術(shù)在高速信號(hào)處理系統(tǒng)中的應(yīng)用[J].雷達(dá)科學(xué)與技術(shù),2013,11(4):390-394.
[4] TI.KeyStone Architecture Serial Rapid IO (SRIO) User Guide,2012.
[5] 張穎川.多核數(shù)字信號(hào)處理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2013.
[6] 翟彥彬,蔣志焱,張保寧.大規(guī)模RapidIO協(xié)議交換的FPGA實(shí)現(xiàn)[J].現(xiàn)代雷達(dá),2011,33(12):33-35.
陳婷(碩士),研究方向?yàn)橥ㄐ偶夹g(shù)、信號(hào)信息處理技術(shù)應(yīng)用。
圖7 安卓控制終端APP界面
實(shí)現(xiàn)移動(dòng)偵測(cè)并上報(bào)微信用戶,通過ser2net實(shí)現(xiàn)TTL控制Aruidno進(jìn)而控制小車行徑功能,并開發(fā)出安卓端APP控制軟件,下一步將實(shí)現(xiàn)通過小車控制智能家居設(shè)備和實(shí)現(xiàn)智能家居設(shè)備的數(shù)據(jù)上報(bào)功能。
[1] 羅回彬,巫敏鋒.基于WiFi的可實(shí)時(shí)視頻同傳的探測(cè)小車[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(6).
[2] 王宇陽,楊奕,韓志.基于Android設(shè)備的WiFi智能監(jiān)控機(jī)器人設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2014(12).
[3] 鄭潤(rùn)芳,張海.STM32的小車自主定位與控制系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(9).
[4] 滕泓虬.基于OpenWrt的嵌入式移動(dòng)機(jī)器人系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(1).
[5] wrtnode官網(wǎng).http://wrtnode.cc/.
陳建剛(講師),主要研究方向?yàn)槲锫?lián)網(wǎng)應(yīng)用。
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
收稿日期:(責(zé)任編輯:薛士然2015-10-01) (責(zé)任編輯:薛士然2015-10-10)
中圖分類號(hào):TN91
文獻(xiàn)標(biāo)識(shí)碼:A