李鐵峰,李 鷗,李紅波
(解放軍信息工程大學(xué) 信息系統(tǒng)工程學(xué)院,河南 鄭州450002)
協(xié)作多點(diǎn)傳輸技術(shù)(CoMP)被認(rèn)為是LTE-Advanced最有前途的技術(shù)之一。它用來提高數(shù)據(jù)速率,增加小區(qū)吞吐量,減少小區(qū)干擾等[1]。一個(gè)基站通過光纖連接多個(gè)天線站點(diǎn),所有的基帶處理仍然集中在基站,形成集中的基帶處理單元[2]?;矩?fù)責(zé)維護(hù)與用戶的物理層鏈路,進(jìn)行大量的信號(hào)處理與數(shù)據(jù)交換。基站中所有的射頻和數(shù)字基帶板都是交互連接的,并且通過高速背板鏈路與多種控制、接口板相連,數(shù)據(jù)必須從電路板發(fā)出,通過背板傳輸至交換卡,而交換卡可將數(shù)據(jù)發(fā)送至機(jī)架內(nèi)的其他位置。在這些板上,芯片到芯片的數(shù)據(jù)率非常高。在IMT-Advanced協(xié)作多點(diǎn)傳輸中,由于還要傳輸協(xié)作節(jié)點(diǎn)間的相關(guān)信息,基站間、扇區(qū)間互相傳輸?shù)臄?shù)據(jù)率更是達(dá)到了數(shù)Gb/s。圖1是IMT-Advanced協(xié)作多點(diǎn)傳輸中的一個(gè)典型數(shù)據(jù)交換結(jié)構(gòu),大量的基站與移動(dòng)臺(tái)間信道信息需要交換,可見其對(duì)高速通信的需求非常高[3]。
圖1 CoMP中的數(shù)據(jù)交換示意圖
傳統(tǒng)的系統(tǒng)中,處理器、處理器簇、FPGA之間的高速數(shù)據(jù)通信基于并行的共享總線方式進(jìn)行,所有的設(shè)備通信競(jìng)爭(zhēng)帶寬,使得交互數(shù)據(jù)成為了整體系統(tǒng)性能的瓶頸。并行總線所需要的大量IO引腳和饋線要求系統(tǒng)的電器性能和機(jī)械性能足夠健壯,電路板的設(shè)計(jì)也變得越來越復(fù)雜。目前新型的體系結(jié)構(gòu)是基于點(diǎn)對(duì)點(diǎn)串行交換結(jié)構(gòu)的體系。相比傳統(tǒng)的并行共享總線結(jié)構(gòu),串行交換結(jié)構(gòu)中的兩個(gè)端點(diǎn)交互數(shù)據(jù)不影響其他端點(diǎn)之間的數(shù)據(jù)交互,可大大提高系統(tǒng)帶寬。串行交換結(jié)構(gòu)所需要的引腳也大幅減少,而且串行結(jié)構(gòu)采用的差分線連接也提高了信號(hào)傳輸?shù)木嚯x和可靠性。SRIO(Serial RapidIO)是當(dāng)前流行的主要串行交換結(jié)構(gòu)之一。相比PCI、PCI-X、PCIE和Infiniband來說,RapidIO主要特性是具有極低的延遲性和高帶寬,并很容易實(shí)現(xiàn)與PCI、PCI-X、PCIE、FPDP、以太網(wǎng)等的橋接,適合用于芯片與芯片、板與板、系統(tǒng)與系統(tǒng)之間的高速數(shù)據(jù)傳輸[4]。
本文主要討論CoMP的實(shí)驗(yàn)床中的背板間SRIO通信的FPGA設(shè)計(jì),分析了任務(wù)需求和數(shù)據(jù)傳輸特點(diǎn),并給出了關(guān)鍵的SRIO設(shè)計(jì)和測(cè)試結(jié)果分析。
在CoMP實(shí)驗(yàn)床中,存在著大量的數(shù)據(jù)交換,如圖2所示,上行基帶處理通常需要在FPGA和DSP中進(jìn)行FFT、信道估計(jì)、解調(diào)、解重復(fù)、解交織、解擾、譯碼以及數(shù)據(jù)校驗(yàn)等處理。這些處理可以根據(jù)其在FPGA和DSP中實(shí)現(xiàn)的難易程度以及資源消耗率對(duì)實(shí)現(xiàn)器件進(jìn)行選擇。經(jīng)過校驗(yàn)后,上行數(shù)據(jù)再通過SRIO Switch發(fā)往CPU進(jìn)行MAC層的處理,處理完成的數(shù)據(jù)最后通過CPU的GE接口進(jìn)入核心網(wǎng)。
圖2 CoMP實(shí)驗(yàn)床中的SRIO數(shù)據(jù)交換
對(duì)于下行處理而言,下行數(shù)據(jù)通過GE接口進(jìn)入CPU,CPU再將數(shù)據(jù)發(fā)往相應(yīng)的處理器件進(jìn)行處理。當(dāng)處理器件完成對(duì)下行數(shù)據(jù)的編碼、加擾、交織、IFFT等處理后,再通過SRIO發(fā)送到射頻板。FPGA模塊完成底層的數(shù)據(jù)交換與處理,除了本板上與DSP模塊之間的數(shù)據(jù)交換外,多點(diǎn)協(xié)作傳輸所必需的基站間數(shù)據(jù)傳輸也通過FPGA經(jīng)背板串行交換實(shí)現(xiàn)。DSP模塊實(shí)現(xiàn)協(xié)作算法及其他上層應(yīng)用。FPGA、DSP、Switch之間通過SRIO接口高速交換數(shù)據(jù)。由于DSP和Switch芯片本身就支持SRIO傳輸,所以SRIO的設(shè)計(jì)工作主要集中在FPGA模塊上。
根據(jù)上述的CoMP數(shù)據(jù)傳輸需求,F(xiàn)PGA通過背板進(jìn)行SRIO傳輸?shù)臄?shù)據(jù)速率要達(dá)到6 Gb/s以上。
FPGA設(shè)計(jì)在Xilinx ISE Design Suite開發(fā)環(huán)境中完成,以Xilinx提供的SRIO core為基礎(chǔ),對(duì)其進(jìn)行裁剪與修改。原core代碼僅可用ModelSim仿真,但不可綜合,不能下載到電路板進(jìn)行實(shí)際電路運(yùn)行,且功能繁雜,不適合CoMP系統(tǒng)實(shí)際應(yīng)用。因此,需設(shè)計(jì)滿足CoMP系統(tǒng)實(shí)際應(yīng)用的用戶接口,并通過自編的主機(jī)程序模擬上層應(yīng)用數(shù)據(jù)的產(chǎn)生,用于板級(jí)測(cè)試,驗(yàn)證是否可達(dá)到用戶接口所需的功能。
主機(jī)程序?qū)τ跀?shù)據(jù)傳輸?shù)臅r(shí)序要求主要有:
(1)數(shù)據(jù)幀時(shí)鐘為156.25 MHz,且與SRIO內(nèi)部的sys_clk同步。
(2)數(shù)據(jù)幀長(zhǎng)度為256 B的整數(shù)倍,最長(zhǎng)1 024×64 bit,最小32×64 bit。若實(shí)際數(shù)據(jù)長(zhǎng)度不是256 B整數(shù)倍,由數(shù)據(jù)產(chǎn)生模塊填空至整數(shù)倍,幀的起始/結(jié)束定界由上層邏輯負(fù)責(zé)。
(3)以SWrite事務(wù)模式發(fā)送,每個(gè)SRIO包有效數(shù)據(jù)載荷固定為256 B。雖然SRIO協(xié)議有多種IO邏輯操作事務(wù)模式,但SWrite模式由于減少了頭部開銷,對(duì)數(shù)據(jù)對(duì)齊和數(shù)據(jù)載荷大小做了一些簡(jiǎn)化設(shè)置,其傳輸效率可高達(dá)95%,更適合于CoMP中的高速數(shù)據(jù)傳輸。
SRIO內(nèi)部由時(shí)鐘模塊(srio_clk)、復(fù)位模塊(rio_reset)、物理層與IO邏輯模塊(rio_wrapper)、用戶接口模塊(user_top)和主機(jī)模塊(host)組成,如圖3所示。除用戶接口模塊和主機(jī)模塊外,其余模塊都可直接利用SRIO core源代碼。結(jié)合CoMP的實(shí)際應(yīng)用,用戶接口模塊包含發(fā)送子模塊(initiator_user)、接收子模塊(target_user)和FIFO模塊(fifo_srio)。其中initiator_user用于完成數(shù)據(jù)的流寫事務(wù)(Swrite),是SRIO FPGA設(shè)計(jì)中的核心部分。它根據(jù)主機(jī)模塊提供的控制信號(hào)讀取FIFO中的待發(fā)數(shù)據(jù),按照Swrite包格式封裝數(shù)據(jù),與物理層及IO邏輯模塊協(xié)同完成數(shù)據(jù)發(fā)送任務(wù)。
圖3 Srio內(nèi)部功能模塊
根據(jù)SRIO協(xié)議,initiator_use模塊工作機(jī)制設(shè)計(jì)如下∶當(dāng)ireq_rdy_n=′0′,FIFO內(nèi)數(shù)據(jù)超過x1F且不處于config狀態(tài)時(shí),開始一個(gè)新的ireq發(fā)送周期,在每個(gè)周期內(nèi)計(jì)數(shù)器i從初值0遞增到datalength+14,共需datalength+17個(gè)時(shí)鐘周期。initiator_use模塊接口如圖4所示。
圖4 initiator_user模塊接口示意圖
考慮到讀FIFO時(shí)延及ireq_rdy_n信號(hào)時(shí)序特點(diǎn),經(jīng)大量ModelSim仿真得出只有滿足如下設(shè)計(jì)規(guī)則,才可保證每個(gè)ireq發(fā)送周期都能正常連續(xù)無誤工作:
(1)僅當(dāng)i=1或3
(2)僅當(dāng)i=2時(shí),ireq_sf_n置0;
(3)僅當(dāng)i=datalength+2時(shí),ireq_eof_n置0,并更新ireq_tid值;
(4)當(dāng)i值在2~datalength+3之間時(shí),ireq_vld_n置0。
ireq發(fā)送周期仿真時(shí)序如圖5所示。
圖5 ireq發(fā)送周期仿真時(shí)序圖
在Host模塊中設(shè)計(jì)了一個(gè)雙口FIFO,用于緩存待發(fā)送數(shù)據(jù),并與SRIO發(fā)送速率相匹配。當(dāng)FIFO里至少有32×64 bit數(shù)據(jù)(即fifo_data_count≥x1F)時(shí),才可開始一個(gè)ireq發(fā)送周期,即有足夠的數(shù)據(jù)需要傳輸,這樣可以確保Swrite模式的數(shù)據(jù)大小要求。不檢測(cè)是否需重傳,因底層的糾錯(cuò)機(jī)制已可保證正確性。
當(dāng)fifo_data_count=x2FF時(shí),表明當(dāng)前initiator_use模塊不能及時(shí)將待傳輸數(shù)據(jù)發(fā)送出去,為了不發(fā)生丟包事件,需向Host模塊指示忙狀態(tài),以使FIFO暫停數(shù)據(jù)寫入。此時(shí)tx_rdy_n置1,直至fifo_data_count回落到x1FF時(shí),tx_rdy_n置0,允許繼續(xù)向FIFO寫入數(shù)據(jù)。
接收子模塊target_user的接口設(shè)計(jì)如圖6所示。
圖6 target_user模塊接口示意圖
最終完成的程序代碼經(jīng)綜合、編譯后分別下載到兩塊實(shí)際電路板,進(jìn)行雙向數(shù)據(jù)同步透?jìng)鳒y(cè)試,測(cè)試時(shí)間持續(xù)4 h,F(xiàn)PGA型號(hào)為XC5VSX95T,通過ChipsCope工具軟件監(jiān)測(cè)數(shù)據(jù)傳輸情況。測(cè)試結(jié)果表明,電路工作穩(wěn)定,數(shù)據(jù)傳輸準(zhǔn)確無誤,傳輸速率達(dá)到了預(yù)期目標(biāo),如圖7和圖8所示。
圖7 全雙工工作
圖8 傳輸速率達(dá)6.67 Gb/s
在48個(gè)時(shí)鐘周期內(nèi),傳送了32×64 bit凈數(shù)據(jù),即傳輸速率為:
在電路板設(shè)計(jì)及測(cè)試過程中,還需要注意Rx/Tx buffer芯片的工作狀態(tài)與SRIO的初始化過程之間的配合問題?,F(xiàn)有的buffer芯片只有當(dāng)4對(duì)Tx差分線上都有信號(hào),即它們符合“線與”關(guān)系時(shí),芯片才能轉(zhuǎn)入工作狀態(tài),否則它一直處于休眠狀態(tài)。而通過SRIO的ModelSim仿真可以觀察到,在SRIO運(yùn)行的初始化階段,4對(duì)Tx輸出并不是同步完成初始化,直接影響了buffer芯片的正常工作。因此,在Rx/Tx buffer芯片的外圍電路設(shè)計(jì)中需作相應(yīng)的適應(yīng)性修改。
本文介紹了串行高速通信接口(SRIO)在IMT-Advanced協(xié)作多點(diǎn)傳輸測(cè)試床中的應(yīng)用,詳細(xì)分析了SRIO的FPGA設(shè)計(jì)關(guān)鍵點(diǎn)。仿真與實(shí)測(cè)結(jié)果表明,本文所設(shè)計(jì)的SRIO接口可實(shí)現(xiàn)全雙工可靠通信,數(shù)據(jù)速率達(dá)到6.67 Gb/s。
[1]3GPP TR36.913.Requirements for further advancements for E-UTRA(LTE-Advanced)[S].2009.
[2]何玉申,宮芳.下一代無線移動(dòng)通信LTE及LTE-Advanced的研究[J].信息技術(shù),2010(11)∶132.
[3]王存祥,邱玲.協(xié)作多點(diǎn)傳輸中一種基于特征子信道的干擾對(duì)齊預(yù)編碼矩陣優(yōu)化方案[J].信號(hào)處理,2011,27(3)∶395-399.
[4]FULLER S.RapidIO∶The embedded system interconnect[M].John Wiley & Sons,Inc.,2005.