|
摘要: 現(xiàn)代信號(hào)處理系統(tǒng)通常需要在不同處理器之間實(shí)現(xiàn)高速數(shù)據(jù)通信,SRIO協(xié)議由于高效率、低延時(shí)的特性被廣泛使用。本文研究了在FPGA和DSP兩種處理器之間實(shí)現(xiàn)SRIO協(xié)議的方法,并通過(guò)電路設(shè)計(jì)和利用處理器的開(kāi)發(fā)工具編程實(shí)現(xiàn)了兩種處理器間的高速通信。經(jīng)測(cè)試,該系統(tǒng)具有較高的傳輸效率。 引言 1異構(gòu)處理器電路 1.2FPGA處理器 1.3異構(gòu)處理器電路互連 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ì)讀/寫(xiě)信號(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)處理器連接方式 2 SRIO設(shè)計(jì) 2.1 DSP端的SRIO配置 2.1.1 SRIO初始化 實(shí)現(xiàn)SRIO重要的一步是SRIO的初始化,一般分為以下幾步: ① 打開(kāi)SRIO的電源和時(shí)鐘:為了降低功耗,默認(rèn)狀態(tài)下SRIO模塊的電源和時(shí)鐘是處于關(guān)閉狀態(tài)的,因此 SRIO 初始化首先要調(diào)用CSL_SRIO_OPEN函數(shù)將SRIO模塊的電源和時(shí)鐘打開(kāi)。 ② 配置SRIO的串并轉(zhuǎn)換器:將125 MHz的參考時(shí)鐘通過(guò)串并轉(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位寄存器,通過(guò)配置LSUx_reg4將源器件DSP的ID設(shè)為0x00,目的器件FPGA的ID設(shè)計(jì)為0xFF。 ④ 等待SRIO初始化完成:通過(guò)配置SP_ERR_STAT寄存器,檢測(cè)SRIO的端口狀態(tài)是否OK,如果OK,則表示可以進(jìn)行SRIO通信,否則提示初始化不成功或者其他情況導(dǎo)致不能通信。在SRIO初始化前需要FPGA端完成SRIO邏輯的配置,否則DSP在初始化SRIO期間無(wú)法和FPGA進(jìn)行握手,會(huì)導(dǎo)致初始化失敗。 2.1.2 SRIO的讀寫(xiě)操作 圖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ù)包的讀寫(xiě);MAU提取數(shù)據(jù)包中的源地址、目的地址、數(shù)據(jù)長(zhǎng)度等信息,從而將數(shù)據(jù)包的有效數(shù)據(jù)載荷寫(xiě)入指定位置。DSP端SRIO的I/O邏輯操作可以分為4個(gè)部分: ① 鎖定LSU寄存器:CSL_SRIO_IsLSUFull函數(shù)讀取LSUx_reg6寄存器中的FULL位,為1,則LSU所有的影子寄存器已經(jīng)寫(xiě)入配置文件等待數(shù)據(jù)發(fā)送,暫時(shí)沒(méi)有可用的影子寄存器。 ② 配置寄存器:配置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ù)類型,配置完成后通過(guò)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ù)。 ④ 等待傳輸完成:通過(guò)CSL_SRIO_GetLSUCompletionCode函數(shù)讀取寄存器SRIO_LSU_STAT_REG的狀態(tài),判斷是否所有數(shù)據(jù)均傳輸完畢。 2.1.3 通信流程 2.2 FPGA端的SRIO配置 本文以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)志作為寫(xiě)中斷。發(fā)送FIFO中數(shù)據(jù)超過(guò)一定量時(shí)觸發(fā)DSP讀數(shù)據(jù),接收FIFO中數(shù)據(jù)低于一定量時(shí)觸發(fā)DSP寫(xiě)數(shù)據(jù)。用戶及時(shí)有效地控制FIFO的狀態(tài),可以保證FIFO不會(huì)被寫(xiě)滿或者被讀空。用戶也可以產(chǎn)生中斷邏輯,控制DSP對(duì)FPGA內(nèi)部存儲(chǔ)空間進(jìn)行讀寫(xiě)。本文引入了中斷機(jī)制和數(shù)據(jù)緩沖FIFO,利于接口對(duì)接和功能拓展,實(shí)現(xiàn)數(shù)據(jù)在不同芯片之間的高效傳輸。 3 傳輸性能測(cè)試 表2是使用NWRITE和NWREAD對(duì)不同數(shù)據(jù)包進(jìn)行通信速度測(cè)試的結(jié)果。在傳輸數(shù)據(jù)為32 字節(jié)時(shí),考慮到數(shù)據(jù)包操作時(shí)的開(kāi)銷,與理論值比率僅為1.1%,很大一部分時(shí)間被花費(fèi)在數(shù)據(jù)包的打包和解包的處理中,隨著傳輸數(shù)據(jù)量的增加,SRIO的實(shí)際傳輸效率不斷增大,最終維持在7 800 Mbps。經(jīng)過(guò)多次反復(fù)實(shí)驗(yàn),該統(tǒng)計(jì)結(jié)果穩(wěn)定可靠,并且沒(méi)有出現(xiàn)丟包誤碼的情況。 結(jié)語(yǔ) 歡迎通信工程師和FPGA工程師關(guān)注公眾號(hào) FPGA微信技術(shù)群 歡迎大家加入全國(guó)FPGA微信技術(shù)群,這里有一群熱愛(ài)技術(shù)的工程師,在這里可以一起交流討論技術(shù)! 用手指按住就可以加入FPGA全國(guó)技術(shù)群哦 FPGA技術(shù)群平臺(tái)自營(yíng):Xilinx Altera 鎂光、三星、海力士、ADI TI ST NXP 等品牌的優(yōu)勢(shì)代理分銷商,歡迎大家有需求隨時(shí)發(fā)型號(hào)清單,我們將在第一時(shí)間為您提供最優(yōu)競(jìng)爭(zhēng)力的報(bào)價(jià)!價(jià)格低于您原有供應(yīng)商5%以上!歡迎詢價(jià)-微信:1051197468 或者直接把需求發(fā)給群主 FPGA技術(shù)群官方鳴謝品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等 |
|
|