萬 毅,袁議玲
(重慶金美通信有限責(zé)任公司,重慶400030)
在實現(xiàn)的通信系統(tǒng)中,業(yè)務(wù)數(shù)據(jù)可達300Mb/s。DSP實現(xiàn)部分信號處理功能,將業(yè)務(wù)數(shù)據(jù)編碼后送給 FPGA;DSP與 FPGA之間最大凈荷傳輸在300MBps以上。在傳統(tǒng)的通信系統(tǒng)中,CPU和FPGA間的高速通信是通過并行共享總線的方式進行的,即所有的設(shè)備通信時需要競爭帶寬,這使得整體的性能難以提升。同時并行總線需要大量的IO引腳和饋線,這要求系統(tǒng)的電器及機械性能足夠健壯,而電路板的設(shè)計也非常復(fù)雜。當(dāng)前比較流行的體系結(jié)構(gòu)是基于點對點的串行交換體系結(jié)構(gòu),其中SRIO(Serial RapidIO)是應(yīng)用較廣泛的串行交換結(jié)構(gòu)。系統(tǒng)采用Xilinx公司的K7系列FPGA,利用其內(nèi)嵌的高速串行通信接口GTX實現(xiàn)SRIO協(xié)議。以下先對SRIO協(xié)議作簡單介紹,再對SRIO接口設(shè)計進行詳細(xì)分析。
SRIO是一種高速、串行的通信方式,廣泛應(yīng)用于嵌入式的基礎(chǔ)設(shè)施的應(yīng)用中。常見的應(yīng)用包括多處理器互連、存儲器網(wǎng)絡(luò)設(shè)備中的存儲器映射、存儲子系統(tǒng)和通用計算平臺。這種互聯(lián)技術(shù)主要用來進行系統(tǒng)內(nèi)部互聯(lián),支持板間通信和芯片間的通信,能夠完成1Gb/s~25Gb/s的性能水平提升。
RapidIO包含了一個三層結(jié)構(gòu)的協(xié)議,即邏輯層、傳輸層和物理層。邏輯層位于最高層,規(guī)定了包格式和所有的協(xié)議,為端點器件發(fā)起、完成事務(wù)提供了必要的信息;傳輸層位于第二層,規(guī)定了RapidIO的地址空間和在端點器件間傳輸包所需要的路由信息;物理層位于最底層,包括器件級接口的細(xì)節(jié),如電氣特性、鏈路控制、低級錯誤管理、低層流控制數(shù)據(jù)等[1]。
RapidIO的通信架構(gòu)見圖1。包是端點器件之間的基本通信單元。RapidIO的數(shù)據(jù)傳輸基于請求和響應(yīng)事務(wù),發(fā)起器件或者主控器件產(chǎn)生一個請求發(fā)送到目標(biāo)器件,目標(biāo)器件收到請求后產(chǎn)生一個響應(yīng)事務(wù),并返回到發(fā)起器件以完成該次操作。
圖1 RapidIO通信架構(gòu)
在K7160T中有兩個bank,每個bank包含了8個GTX(高速串行通信接口),可將其視作RapidIO的物理層,通過GTX可以實現(xiàn)RapidIO協(xié)議以傳輸數(shù)據(jù)。GTX可以支持從600Mb/s到6.25Gb/s的傳輸速度,支持包括RapidIO協(xié)議在內(nèi)的大多數(shù)協(xié)議。
在DSPTMS320C6670中,RapidIO也被稱之為SRIO。DSP中的SRIO模塊結(jié)構(gòu)如圖2所示。SRIO是DSP的外設(shè),它可以使用DSP的DMA直接將數(shù)據(jù)傳入DSP,這樣就可以不用通知CPU,使CPU不會被頻繁中斷,從而也減少了延時[2]。
SRIO協(xié)議可支持的最大數(shù)據(jù)包為256字節(jié),如果傳輸多個數(shù)據(jù),可將其分成多包進行傳輸。在此設(shè)計中,SRIO一次可傳輸399872個字節(jié)的數(shù)據(jù),將其分為1562個包傳輸,加上一個控制數(shù)據(jù)包,共計傳輸1563個數(shù)據(jù)包,然后往DSP發(fā)送一個Doorbell,通知DSP一幀數(shù)據(jù)傳輸完畢[3-5]。
圖2 SRIO在DSP中的架構(gòu)
SRIO支持多種數(shù)據(jù)包類型,有讀(NREAD)、寫(NWRITE)、響應(yīng)寫(NWRITE_R)、流寫(SWRITE)、門鈴(Doorbell)、消息(Message)等。在本設(shè)計中,用到了流寫(SWRITE)、讀(NREAD)、門鈴(Doorbell)三種操作類型。
SRIO接口實現(xiàn)的系統(tǒng)框圖如圖3所示。在發(fā)端,業(yè)務(wù)通過SGMII接口進入DSP,對數(shù)據(jù)進行比特級信號處理,包括擾碼、解擾、CRC校驗、Turbo編碼譯碼以及速率匹配等。處理后的數(shù)據(jù)經(jīng)由SRIO進入FPGA內(nèi)部,進行符號級信號處理,包括組幀、查分編碼、成型濾波等,然后由DA發(fā)送出去。
在收端,經(jīng)由AD接收的數(shù)據(jù),經(jīng)過符號級信號處理,包括AGC、信道濾波、同步檢測、匹配濾波、解調(diào)以及均衡后,經(jīng)SRIO發(fā)送到DSP,在DSP內(nèi)再經(jīng)過速率匹配、Turbo譯碼、CRC校驗以及解擾發(fā)回PC機,完成整個業(yè)務(wù)流程[6]。
在此設(shè)計中,F(xiàn)PGA與DSP的SRIO通信時,F(xiàn)PGA處于主動。發(fā)送方向為:上電時,DSP往FPGA發(fā)送一個Doorbell,告訴FPGA寫數(shù)據(jù)包的地址,在FPGA收到一幀數(shù)據(jù)后,如果AXI4總線檢測無沖突,則FPGA通過SRIO往DSP發(fā)送數(shù)據(jù)包,當(dāng)一幀數(shù)據(jù)發(fā)送完畢,再發(fā)送一個Doorbell給DSP告訴一幀數(shù)據(jù)發(fā)送完畢。整體流程如圖4所示。
在接收方向,每1ms,F(xiàn)PGA會往DSP發(fā)送一個Doorbell[7-8],告訴DSP此時FPGA需要數(shù)據(jù),DSP通過NWRITE寫給FPGA一個包,告訴FPGA取數(shù)據(jù)包的地址,然后FPGA通過NREAD去讀一幀數(shù)據(jù),發(fā)送給信號處理模塊,其流程如圖5所示。
圖3 系統(tǒng)框圖
圖4 FPGA中SRIO發(fā)送狀態(tài)機示意圖
圖5 FPGA中SRIO接收狀態(tài)機示意圖
其中讀地址在5個地址中隨機變化,因此需要在讀取數(shù)據(jù)時,由DSP臨時通知。讀寫地址情況如表1所示。
表1 DSP中讀寫數(shù)據(jù)存儲地址
在測試中,使兩套設(shè)備互連,射頻用饋線連接,分別做300M、150M、64M、32M的帶寬切換,傳輸帶寬、質(zhì)量以及靈敏度滿足要求,詳細(xì)測試數(shù)據(jù)如表2所示。
在實測中,最大帶寬可達310M,符合設(shè)計要求,如圖6所示。
表2 系統(tǒng)測試結(jié)果
圖6 最大帶寬傳輸測試數(shù)據(jù)
經(jīng)過設(shè)計,本系統(tǒng)最大帶寬需求為300Mb/s,而測試中實際最大帶寬已達310Mb/s,因此將SRIO應(yīng)用于此通信系統(tǒng),完全滿足系統(tǒng)吞吐量的要求。設(shè)計中使用的2.5GX4的設(shè)計,實際最大數(shù)據(jù)傳輸速率不到4G,SRIO傳輸還有較大空閑,可適應(yīng)以后更大帶寬、更大通信速率的需求。