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