李鐵峰,李 鷗,李紅波
(解放軍信息工程大學 信息系統工程學院,河南 鄭州450002)
協作多點傳輸技術(CoMP)被認為是LTE-Advanced最有前途的技術之一。它用來提高數據速率,增加小區吞吐量,減少小區干擾等[1]。一個基站通過光纖連接多個天線站點,所有的基帶處理仍然集中在基站,形成集中的基帶處理單元[2]。基站負責維護與用戶的物理層鏈路,進行大量的信號處理與數據交換。基站中所有的射頻和數字基帶板都是交互連接的,并且通過高速背板鏈路與多種控制、接口板相連,數據必須從電路板發出,通過背板傳輸至交換卡,而交換卡可將數據發送至機架內的其他位置。在這些板上,芯片到芯片的數據率非常高。在IMT-Advanced協作多點傳輸中,由于還要傳輸協作節點間的相關信息,基站間、扇區間互相傳輸的數據率更是達到了數Gb/s。圖1是IMT-Advanced協作多點傳輸中的一個典型數據交換結構,大量的基站與移動臺間信道信息需要交換,可見其對高速通信的需求非常高[3]。

圖1 CoMP中的數據交換示意圖
傳統的系統中,處理器、處理器簇、FPGA之間的高速數據通信基于并行的共享總線方式進行,所有的設備通信競爭帶寬,使得交互數據成為了整體系統性能的瓶頸。并行總線所需要的大量IO引腳和饋線要求系統的電器性能和機械性能足夠健壯,電路板的設計也變得越來越復雜。目前新型的體系結構是基于點對點串行交換結構的體系。相比傳統的并行共享總線結構,串行交換結構中的兩個端點交互數據不影響其他端點之間的數據交互,可大大提高系統帶寬。串行交換結構所需要的引腳也大幅減少,而且串行結構采用的差分線連接也提高了信號傳輸的距離和可靠性。SRIO(Serial RapidIO)是當前流行的主要串行交換結構之一。相比PCI、PCI-X、PCIE和Infiniband來說,RapidIO主要特性是具有極低的延遲性和高帶寬,并很容易實現與PCI、PCI-X、PCIE、FPDP、以太網等的橋接,適合用于芯片與芯片、板與板、系統與系統之間的高速數據傳輸[4]。
本文主要討論CoMP的實驗床中的背板間SRIO通信的FPGA設計,分析了任務需求和數據傳輸特點,并給出了關鍵的SRIO設計和測試結果分析。
在CoMP實驗床中,存在著大量的數據交換,如圖2所示,上行基帶處理通常需要在FPGA和DSP中進行FFT、信道估計、解調、解重復、解交織、解擾、譯碼以及數據校驗等處理。這些處理可以根據其在FPGA和DSP中實現的難易程度以及資源消耗率對實現器件進行選擇。經過校驗后,上行數據再通過SRIO Switch發往CPU進行MAC層的處理,處理完成的數據最后通過CPU的GE接口進入核心網。

圖2 CoMP實驗床中的SRIO數據交換
對于下行處理而言,下行數據通過GE接口進入CPU,CPU再將數據發往相應的處理器件進行處理。當處理器件完成對下行數據的編碼、加擾、交織、IFFT等處理后,再通過SRIO發送到射頻板。FPGA模塊完成底層的數據交換與處理,除了本板上與DSP模塊之間的數據交換外,多點協作傳輸所必需的基站間數據傳輸也通過FPGA經背板串行交換實現。DSP模塊實現協作算法及其他上層應用。FPGA、DSP、Switch之間通過SRIO接口高速交換數據。由于DSP和Switch芯片本身就支持SRIO傳輸,所以SRIO的設計工作主要集中在FPGA模塊上。
根據上述的CoMP數據傳輸需求,FPGA通過背板進行SRIO傳輸的數據速率要達到6 Gb/s以上。
FPGA設計在Xilinx ISE Design Suite開發環境中完成,以Xilinx提供的SRIO core為基礎,對其進行裁剪與修改。原core代碼僅可用ModelSim仿真,但不可綜合,不能下載到電路板進行實際電路運行,且功能繁雜,不適合CoMP系統實際應用。因此,需設計滿足CoMP系統實際應用的用戶接口,并通過自編的主機程序模擬上層應用數據的產生,用于板級測試,驗證是否可達到用戶接口所需的功能。
主機程序對于數據傳輸的時序要求主要有:
(1)數據幀時鐘為156.25 MHz,且與SRIO內部的sys_clk同步。
(2)數據幀長度為256 B的整數倍,最長1 024×64 bit,最小32×64 bit。若實際數據長度不是256 B整數倍,由數據產生模塊填空至整數倍,幀的起始/結束定界由上層邏輯負責。
(3)以SWrite事務模式發送,每個SRIO包有效數據載荷固定為256 B。雖然SRIO協議有多種IO邏輯操作事務模式,但SWrite模式由于減少了頭部開銷,對數據對齊和數據載荷大小做了一些簡化設置,其傳輸效率可高達95%,更適合于CoMP中的高速數據傳輸。
SRIO內部由時鐘模塊(srio_clk)、復位模塊(rio_reset)、物理層與IO邏輯模塊(rio_wrapper)、用戶接口模塊(user_top)和主機模塊(host)組成,如圖3所示。除用戶接口模塊和主機模塊外,其余模塊都可直接利用SRIO core源代碼。結合CoMP的實際應用,用戶接口模塊包含發送子模塊(initiator_user)、接收子模塊(target_user)和FIFO模塊(fifo_srio)。其中initiator_user用于完成數據的流寫事務(Swrite),是SRIO FPGA設計中的核心部分。它根據主機模塊提供的控制信號讀取FIFO中的待發數據,按照Swrite包格式封裝數據,與物理層及IO邏輯模塊協同完成數據發送任務。

圖3 Srio內部功能模塊
根據SRIO協議,initiator_use模塊工作機制設計如下∶當ireq_rdy_n=′0′,FIFO內數據超過x1F且不處于config狀態時,開始一個新的ireq發送周期,在每個周期內計數器i從初值0遞增到datalength+14,共需datalength+17個時鐘周期。initiator_use模塊接口如圖4所示。

圖4 initiator_user模塊接口示意圖
考慮到讀FIFO時延及ireq_rdy_n信號時序特點,經大量ModelSim仿真得出只有滿足如下設計規則,才可保證每個ireq發送周期都能正常連續無誤工作:
(1)僅當i=1或3
(2)僅當i=2時,ireq_sf_n置0;
(3)僅當i=datalength+2時,ireq_eof_n置0,并更新ireq_tid值;
(4)當i值在2~datalength+3之間時,ireq_vld_n置0。
ireq發送周期仿真時序如圖5所示。

圖5 ireq發送周期仿真時序圖
在Host模塊中設計了一個雙口FIFO,用于緩存待發送數據,并與SRIO發送速率相匹配。當FIFO里至少有32×64 bit數據(即fifo_data_count≥x1F)時,才可開始一個ireq發送周期,即有足夠的數據需要傳輸,這樣可以確保Swrite模式的數據大小要求。不檢測是否需重傳,因底層的糾錯機制已可保證正確性。
當fifo_data_count=x2FF時,表明當前initiator_use模塊不能及時將待傳輸數據發送出去,為了不發生丟包事件,需向Host模塊指示忙狀態,以使FIFO暫停數據寫入。此時tx_rdy_n置1,直至fifo_data_count回落到x1FF時,tx_rdy_n置0,允許繼續向FIFO寫入數據。
接收子模塊target_user的接口設計如圖6所示。

圖6 target_user模塊接口示意圖
最終完成的程序代碼經綜合、編譯后分別下載到兩塊實際電路板,進行雙向數據同步透傳測試,測試時間持續4 h,FPGA型號為XC5VSX95T,通過ChipsCope工具軟件監測數據傳輸情況。測試結果表明,電路工作穩定,數據傳輸準確無誤,傳輸速率達到了預期目標,如圖7和圖8所示。

圖7 全雙工工作

圖8 傳輸速率達6.67 Gb/s
在48個時鐘周期內,傳送了32×64 bit凈數據,即傳輸速率為:

在電路板設計及測試過程中,還需要注意Rx/Tx buffer芯片的工作狀態與SRIO的初始化過程之間的配合問題。現有的buffer芯片只有當4對Tx差分線上都有信號,即它們符合“線與”關系時,芯片才能轉入工作狀態,否則它一直處于休眠狀態。而通過SRIO的ModelSim仿真可以觀察到,在SRIO運行的初始化階段,4對Tx輸出并不是同步完成初始化,直接影響了buffer芯片的正常工作。因此,在Rx/Tx buffer芯片的外圍電路設計中需作相應的適應性修改。
本文介紹了串行高速通信接口(SRIO)在IMT-Advanced協作多點傳輸測試床中的應用,詳細分析了SRIO的FPGA設計關鍵點。仿真與實測結果表明,本文所設計的SRIO接口可實現全雙工可靠通信,數據速率達到6.67 Gb/s。
[1]3GPP TR36.913.Requirements for further advancements for E-UTRA(LTE-Advanced)[S].2009.
[2]何玉申,宮芳.下一代無線移動通信LTE及LTE-Advanced的研究[J].信息技術,2010(11)∶132.
[3]王存祥,邱玲.協作多點傳輸中一種基于特征子信道的干擾對齊預編碼矩陣優化方案[J].信號處理,2011,27(3)∶395-399.
[4]FULLER S.RapidIO∶The embedded system interconnect[M].John Wiley & Sons,Inc.,2005.