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