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