文獻標識碼: A
文章編號: 0258-7998(2014)10-0023-04
中文引用格式:張德民,董曉朋,張愛平,王華華.FPGA與DSP的雙向數據通信在LTE中的應用研究[J].電子技術應用,2014,40(10):23-26+29.
0 引言
2013年12月,工信部正式向三大運營商發布4G牌照,標志著我國的4G產業正式進入商用階段。LTE項目是3G的演進,它改進了3G的空中接入技術,采用OFDM技術和MIMO技術作為其無線網絡演進的唯一標準。LTE系統提出了下行峰值速率可達100 Mb/s,上行可達50 Mb/s的目標[1]。如此大的上下行峰值速率,對LTE系統的硬件平臺的處理速度提出了更高的要求。
通用DSP芯片雖然已經能滿足算法控制結構復雜、運算速度高、尋址方式靈活等需求,但是傳統的DSP芯片由于依然采用串行結構,對于上行信道中的一些需要處理數據量大、處理速度高,但是對于上行信道中的一些運算結構相對簡單的底層數字信號處理算法,例如DFT以及IFFT運算,并沒有優勢可言[2]。
DSP+FPGA開發平臺與僅采用DSP處理器的傳統應用相比,能夠將系統性能提升一個數量級以上。FPGA處理器具有硬件結構可重構的特點,適合算法結構固定、運算量大的前端數字信號處理,可以釋放DSP帶寬以處理其他功能, FPGA在數字信號處理領域顯示出自己特有的優勢[3]。目前以DSP作為主處理器,FPGA作為協處理器的硬件架構已經廣泛應用于數字圖像處理、汽車制造、移動通信等領域。TD-LTE系統中,以DSP+FPGA作為實現算法的硬件平臺核心已是大勢所趨,而如何使DSP與FPGA高效快速地實現雙向數據通信也成為急需解決的問題。基于此,本文主要介紹了一種實現DSP雙向通信的實現方案.
1 方案概述
方案基于LTE系統上行共享信道,方案設計總體框圖如圖1所示。數據通信主要基于EMIF接口實現,DSP通過EMIF接口向FPGA發送數據。由于在FPGA中設計的模塊較多,而且許多模塊都需要從DSP獲取配置信息和數據信息,為了使各個模塊能夠正確接收數據,FPGA中設計了EMIF解析模塊,根據EMIF接口中的地址信號EA以及片選信號CE確定當前從EMIF接口接收的數據應當分配給哪一個模塊。
LTE系統中,上行數據要在特定的子幀中發送,因此需要根據TD-LTE系統對時序的要求,設計時序控制模塊,即Timer模塊。在LTE系統中一個子幀的持續時間為30 720個Ts(Ts=1/30 720 ms),對系統的122.88 MHz進行時鐘計數,當時鐘計數達到122 880時,一個子幀結束,通過一個GPIO接口向DSP發送中斷信號,告知DSP該子幀已經結束,并通過EMIF接口向DSP發送子幀號以及幀號,使DSP進入中斷函數進行相關操作。
圖1中,DFT模塊主要用于完成預編碼功能;IFFT模塊主要用于完成基帶信號生成功能;TX模塊將基帶信號的I/Q(虛部與實部)兩路數據經過并串變換后合成一路數據,并且將得到的數據發送至中頻。
2 硬件設計
平臺架構如圖2所示,DSP芯片采用TI公司的TMS320C6455,該芯片為定點DSP芯片,時鐘主頻可達1.2 GHz,芯片的處理速度高達每秒9 600萬條(MIPS)指令,能夠滿足LTE復雜的編碼算法對處理速度的要求。C6455芯片采用了兩級存儲結構,層一的RAM容量為32 KB,用于程序和數據的高速存儲,這一段存儲區離CPU較近,被分成了高速數據緩存區L1D和高速程序緩沖區L1P;層二則由數據和程序共享,共2 096 KB。兩個通用寄存器組分別包含32個位寬為32的寄存器,寄存器組可以被用作存儲數據或地址指針。C6455芯片的外設和接口主要有:內部集成總線(I2C)接口、外部存儲器接口(EMIF)、多通道緩沖串行端口(McBSP)、高速串行收發器(SRIO)以及通用輸入輸出端口(GPIO)[4]。
DSP芯片的EMIF接口主要用來完成FPGA與DSP的高速數據傳輸。EMIF采用異步傳輸機制,接口的輸出時鐘頻率很高,可以達到200 MHz,數據位寬可以配置為8 bit、16 bit、32 bit或者64 bit,數據傳輸速率較快,可以滿足LTE系統對DSP與FPGA數據交互速率的要求。DSP芯片的GPIO接口通過轉接芯片與Virtex-6芯片相連,在硬件平臺上共有32條GPIO線連接DSP芯片與FPGA芯片。數據交互是基于EDMA(增強型直接存取)完成的,需要DSP芯片調用EDMA將數據搬到指定地址,再發往FPGA。
根據設計的需要,選用了兩片FPGA芯片,分別是Xilinx公司的Virtex6 XC6VSX475T芯片和Spartan芯片。Virtex6芯片用于實現LTE上行算法以及系統的整體時序控制,該芯片具有真正的六輸入查找表(LUT)結構(64 bit ROMs),在芯片上嵌入了64位寬的分布式RAM和32位寬的分布式移位寄存器查找表(SRL32),強大的36 KB Block RAM/FIFO,增強型的25×18 DSP48E1 slices以及有840個用戶I/O接口,內嵌了零延遲緩沖、時鐘相位偏移和時鐘綜合的數字管理器(DCM)和鎖相環(PLL),且包含多種IP核,可以高效地實現FFT、DFT物理層等算法。
3 軟件設計
方案中涉及到的軟件設計主要有:EMIF接口軟件在CCS環境下的設計以及邏輯控制模塊在ISE編譯環境下的設計。
3.1 接口軟件設計
設計中,主要通過EMIF接口實現DSP與FPGA的雙向數據通信,即DSP既可以通過EMIF接口向FPGA發送編碼數據和配置信息,同時也可以讀取FPGA產生的同步信號。DSP與FPGA通信的存儲映射區為0xD000 0000-0xD07FF FFFF,因此DSP需要調用EDMA將數據搬移至映射區的指定地址區域。DSP的EMIF讀寫周期可以分為三個階段,即讀寫建立(Setup)、讀寫選通(Strobe)和讀寫保持(Hold)。通過調試得出當Setup、Strobe和Hold長度分別設置為1、2、1個時鐘時,讀寫過程較為穩定。設計中通過EMIFA_CE5CFG寄存器的值設置EMIF接口的傳輸模式以及讀寫建立、讀寫選通和讀寫保持的時鐘周期。
DSP首先要進行初始化,并且向FPGA發送復位信號與配置信息,例如系統帶寬配置、RB配置以及上下行配置等,初始化FPGA內的寄存器。對于配置信息的發送并不需要EDMA參與,只需將配置信息直接寫入對應映射區的對應地址中,DSP便可以將信息通過EMIF接口發送至FPGA。
為了避免基帶算法在一個子幀內重復執行,設置編碼完成標志Havedone,DSP與FPGA初始化完成以后,實現傳送編碼數據的具體流程如下:
(1)FPGA執行時序控制模塊,子幀結束時通過GPIO向DSP發送中斷信號。
(2)DSP接收到FPGA發送的中斷后,執行中斷函數,DSP將子幀號與幀號讀取到事先約定好的映射區地址中,同時將編碼完成標志位Havedone置為0。其中子幀號與幀號由FPGA中的時序控制模塊產生。
(3)根據當前子幀號以及參考文獻[1]中的上下行配置表判斷當前子幀是否為上行子幀的前一子幀,并且判斷標志位Havedone是否為零,如果上述兩個條件均滿足則進行基帶算法處理并將標志位Havedone置為1。調用EDMA,將編碼后數據搬移到映射區指定地址并通過EMIF發送至FPGA。
(4)FPGA通過EMIF解析模塊,解析出數據的用戶數據,以及數據在RAM區中存放的地址。
時序控制模塊持續運行,上述過程循環執行。
在對FPGA的設計中通過調用IOBUF原語實現雙向I/O端口。IOBUF原語中共有4個端口,分別是輸出端口O、輸入端口I、雙向端口I/O和控制端口T。該原語會在FPGA中例化為一個三態門,I/O端口直接與頂層I/O端口相連,端口T控制三態門中數據流的方向,當T為零時I/O作為FPGA的輸出端口,反之I/O端口作為FPGA的輸入端口。IOBUF原語調用一次只能傳輸1 bit數據,因此需要使用循環生成塊循環調用該原語,以實現64 bit數據并行傳輸。
3.2 系統時序控制模塊設計
為了解決DSP與FPGA數據處理的同步問題,設計了系統時序控制模塊,即Timer模塊。
模塊采用122.88 MHz的時鐘,應用計數器原理,每計數到122 879,計數器清零并產生一次子幀中斷,子幀號加1。當子幀號等于9時,子幀號清零,幀號加1,當幀計數到1 023,幀號清零。在TD-LTE中無線幀傳輸速率為30.72 MHz(一個無線幀長度為Tf=307 200×Ts=10 ms),因此子幀計數寄存器右移2位,輸出作為子幀計數的值(0~30 719)[5-6],其中子幀計數的值是后續模塊實現的基礎,常作為發送端和接收端發送和接收數據的地址。
在實際調試中發現,若采用LUT生成計數器自加的方法,當計數器的值作為后續模塊取值地址時,由于路徑延遲和時鐘抖動可能導致計數產生誤差,所以調用DSP48原語庫<COUNTER_LOAD_MACRO>實現計數功能,調用<EQ_COMPARE_MACRO>實現計數器清零及初始化[7]。
3.3 EMIF解析模塊設計
FPGA把從DSP接收到的數據分配給相應的子模塊,同時在運行時,FPGA要整合子模塊發往DSP的信息,以適應雙向端口的要求。為了完成上述功能,FPGA軟件設計中設置了EMIF解析模塊。
EMIF解析模塊的數據分配功能主要通過配置FPGA子模塊的使能信號實現,具體步驟如下:
(1)DSP配置為寫模式,根據EMIFA_CE5CFG寄存器的配置確定AWE、CE信號的發送時序,AOE為持續高電平。
(2)DSP在發送數據的同時,根據發送數據的目的模塊不同,將數據寫入到映射區不同的地址中。EMIF將數據在映射區中地址的22到3位作為EA信號隨同數據一起發送至FPGA。
(3)EMIF解析模塊中,根據EA信號高四位,將發往目標子模塊的使能信號配置成與CE相同的時序,而發往其他子模塊的使能信號持續為高。
(4)FPGA子模塊接收到的使能信號為低電平且AWE信號為高電平,則通過ED攜帶的數據對模塊中的相應寄存器進行配置。如果使能信號與AWE信號同時為低電平,則將ED數據寫入相應RAM區。
EMIF解析模塊的數據整合功能主要由以下步驟實現:
(1)FPGA完成數據處理或子幀結束時,向DSP發送中斷信號。
(2)DSP根據中斷類型,確定讀取數據到映射區的地址,根據EMIFA_CE5CFG寄存器的配置,將AWE、CE信號進行配置,此時EA信號高4位為0000,AWE為持續高電平,表示DSP只讀不寫。
(3)EMIF解析模塊根據EMIF接口地址信號的15到12位的值,將對應FPGA子模塊的返回值賦值給emif_ED_Out。
(4)將emif_ED_Out信號與FPGA的雙向I/O端口相連,以emif_CE_N和emif_AOE_N同時為低作為FPGA輸出數據的標志,其中emif_CE_N即CE信號,emif_AOE_N即AOE信號。
4 調試結果分析
圖3與圖4分別是DSP通過EMIF接口向FPGA發送的數據截圖和FPGA通過EMIF接口接收到數據的chipscope截圖,圖中emif_CE_N即CE信號,emif_AWE_N即AWE信號,設計中將DE_PUSCH_cs與DE_PUSCH_write同時為低作為FPGA的RAM區接收數據的標志,對比圖5與圖6,當標志信號滿足要求時,數據穩定且與DSP發送的數據一致,可以將數據正確發送至FPGA。
圖5為DSP通過EMIF接口讀取同步信息的時序圖。設計中將emif_CE_N與emif_AOE_N同時為零作為DSP回讀數據的標志,即以上當兩信號均為低電平,DSP通過ED線將數據emif_Data_Out讀入相應地址的映射區。對比圖5與圖6可以看出,與EA對應的DSP映射區地址中寫入的數據與DSP讀取的同步信息一致,其中地址0xD000 8028中的數據為0x00000160即十進制352,而0x00003EE9表示映射區中與同步信息地址相鄰的數據,與本次讀取過程無關。
5 結論
本文根據國家重大專項“射頻一致性測試儀表開發”的需求,基于EMIF接口設計了一種DSP與FPGA的雙向數據通信方案。方案中充分利用了FPGA時序控制能力強的特點,采用FPGA作為總體時序控制芯片。在FPGA中設計了DSP數據分配與整合模塊和雙向I/O端口,使DSP與FPGA的數據通信更加靈活,簡化系統設計,增加數據處理穩定性。通過軟件仿真、板級驗證[7]發現,該方案數據通信速率達到1.2 Gb/s且錯誤率較低,目前該方案已應用于項目中。
參考文獻
[1] 沈嘉,索士強,全海洋,等.3GPP長期演進(LTE)技術原理與系統設計[M].北京:人民郵電大學出版社,2008.
[2] 姜楠,馬迎建,馮翔.DSP和FPGA并行通信方法研究[J].電子測量技術,2008,31(10):146-148.
[3] 田耘,徐文波.Xilinx FPGA開發實用教程[M].北京:清華大學出版社,2008.
[4] 于鳳芹.TMS320C6000 DSP結構原理與硬件設計[M].北京:北京航空航天大學出版社,2008.
[5] 3GPP TS 36.211 v10.6.0:Physical channels and modulation(Release 9)[S].2012,6.
[6] 3GPP TS 36.212 v10.6.0:Multiplexing and channel coding.(Release 9)[S].2012,6.
[7] 夏宇聞.Verilog 數字系統設計教程(第2版)[M].北京:北京航空航天大學出版社,2008.