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