摘 要: 根據(jù)3GPP協(xié)議規(guī)定,提出一種適于FPGA實(shí)現(xiàn)的解決方案,。采用分而治之和WFTA的算式分解,,最大限度地減少DFT的運(yùn)算量;采用塊浮點(diǎn)動(dòng)態(tài)截取多余位寬,,減少系統(tǒng)面積,;運(yùn)用4個(gè)雙端口RAM讀寫,使系統(tǒng)能運(yùn)行在流水線結(jié)構(gòu),;采用對(duì)稱結(jié)構(gòu)存儲(chǔ)每一級(jí)的旋轉(zhuǎn)因子,,最大化共享因子。
關(guān)鍵詞: LTE,;SC_FDMA,;DFT;WFTA,;FPGA,;流水線
為了降低手機(jī)終端的功率損耗[1],LTE上行鏈路采用基于DFT擴(kuò)頻OFDM(DFTS_OFDM)的單載波傳輸,,又稱為單載波FDMA(SC_FDMA),。DFTS_OFDM方案的基本結(jié)構(gòu)如圖1所示。3GPP協(xié)議規(guī)定[2]上行PUSCH信道產(chǎn)生SC_FDMA符號(hào)要求DFT點(diǎn)數(shù)滿足式(1),。
由幾個(gè)參數(shù)的變化可以得到最小12點(diǎn),、最大1 296點(diǎn)共35種模式的DFT[3]。現(xiàn)在已有的研究方法(如質(zhì)因子分解結(jié)合WFTA算法)解決非2n點(diǎn)DFT,,但此法不夠靈活,,不適合長度可變的DFT。在數(shù)字電視DTMB系統(tǒng)中,,3 780點(diǎn)FFT的處理采用分裂基與質(zhì)因子分解結(jié)合WFTA算法實(shí)現(xiàn),,但對(duì)于LTE上行可配置長度DFT的實(shí)現(xiàn)還沒有一個(gè)成熟有效的方法。
根據(jù)LTE實(shí)時(shí)系統(tǒng)需求采用pipeline流水線結(jié)構(gòu)實(shí)現(xiàn)高速可配置的DFT設(shè)計(jì),,同時(shí)在結(jié)構(gòu)和資源利用上進(jìn)行優(yōu)化,,最后給出仿真圖形以及綜合結(jié)果,為上行LTE設(shè)計(jì)提供一種參考,。
2 總體結(jié)構(gòu)及技術(shù)實(shí)現(xiàn)
2.1 整體結(jié)構(gòu)框圖
LTE DFT的模塊化總體結(jié)構(gòu)如圖3所示,,根據(jù)算法分析可以知道LTE DFT的分而治之需要幾個(gè)階段才能完成,,每個(gè)階段需要做多次小因子點(diǎn)的DFT,所以圖示是一個(gè)循環(huán)的形式,。由狀態(tài)機(jī)控制這些階段的完成,,直到最后一個(gè)循環(huán)結(jié)束輸出數(shù)據(jù)。
其中前處理進(jìn)入WFTA模塊的包括對(duì)4個(gè)雙端口RAM的讀取控制以及對(duì)旋轉(zhuǎn)因子ROM的讀取,,還有旋轉(zhuǎn)因子地址的計(jì)算,。飽和操作根據(jù)系統(tǒng)的最大bit數(shù)限定,對(duì)經(jīng)過WFTA計(jì)算后的數(shù)據(jù)進(jìn)行飽和處理,,超過的bit數(shù)直接截取掉,。
2.2 技術(shù)實(shí)現(xiàn)
2.2.1 4個(gè)雙端口RAM的數(shù)據(jù)存儲(chǔ)
為保證pipeline地處理每次循環(huán)的數(shù)據(jù),這里采用4個(gè)雙端口RAM對(duì)數(shù)據(jù)進(jìn)行存取,。對(duì)4,、2、5,、3四種小因子的WFTA計(jì)算來說,,選4個(gè)RAM最方便,如果需要進(jìn)行4點(diǎn)的WFTA計(jì)算,,則從每個(gè)RAM中讀出一個(gè)數(shù)據(jù),,這僅需要一個(gè)時(shí)鐘就可讀出4個(gè)數(shù)據(jù)。對(duì)2點(diǎn)的WFTA計(jì)算,,則可以一個(gè)時(shí)鐘讀出兩組的2點(diǎn)WFTA進(jìn)行計(jì)算,。對(duì)3點(diǎn)的用一個(gè)時(shí)鐘,對(duì)于5點(diǎn)的用兩個(gè)時(shí)鐘讀取,。
在基于原位計(jì)算的基礎(chǔ)上進(jìn)行改進(jìn),,加入旋轉(zhuǎn)數(shù)據(jù)模塊,是為了將本來是在一個(gè)RAM中的數(shù)據(jù)在填入RAM前進(jìn)行旋轉(zhuǎn),,使其在不同的RAM中便于下一階段pipeline讀取,。圖4展示了一個(gè)最簡(jiǎn)單的12點(diǎn)的填寫RAM實(shí)例,在開始第一階段前先將12點(diǎn)的輸入數(shù)通過載入buffer模塊用12個(gè)clk按圖3順序載入4個(gè)RAM中,,也就是將數(shù)據(jù)倒位序放入4個(gè)RAM中,。將倒位序之后的數(shù)據(jù)重新標(biāo)號(hào),即1對(duì)應(yīng)載入buffer的3,,2對(duì)應(yīng)6等,。這樣做的目的是為了方便計(jì)算地址。例如,,在第一階段讀的過程中,,0、1,、2,、3通過右移2 bit,即除以4可以算出地址為0,,它們分別對(duì)應(yīng)4個(gè)RAM的第0地址,;同理4、5,、6,、7除以4可以得到1,即對(duì)應(yīng)1地址,,依此類推,。
根據(jù)公式4的推導(dǎo)可知在第一階段DFT的處理中不需要乘以旋轉(zhuǎn)因子,所以旋轉(zhuǎn)因子為0,,在第一階段和第二階段中需要先乘以旋轉(zhuǎn)因子,,旋轉(zhuǎn)因子按照公式推導(dǎo)處理列出在表中。在第一階段先處理0,、1,、2、3四點(diǎn)的WFTA,,然后按原位順序填入4個(gè)RAM,,接著處理4、5,、6,、7四點(diǎn)的WFTA,本來應(yīng)該也按原位填入RAM中,,但是注意到在第二階段需要處理0,、4、8三點(diǎn)的WFTA,,如果還按照原位填入,,則0、4,、8三個(gè)數(shù)據(jù)在同一個(gè)RAM中,,要讀取這3個(gè)數(shù)需要3個(gè)clk,顯然不適應(yīng)pipeline的處理,。所以在做完4,、5、6,、7四點(diǎn)的WFTA之后將數(shù)據(jù)旋轉(zhuǎn)再寫入4個(gè)RAM中,,同樣將8、9、10,、11四點(diǎn)的結(jié)果也旋轉(zhuǎn),,如圖4所示。這樣的讀寫RAM操作可以保證pipeline的處理,。
2.2.2 旋轉(zhuǎn)因子的存取
根據(jù)式(4)的推導(dǎo),,每一級(jí)之間需要先乘以旋轉(zhuǎn)因子,對(duì)于旋轉(zhuǎn)因子的地址計(jì)算依據(jù)式(4)的推導(dǎo),。由于要實(shí)現(xiàn)35種可配置模式的DFT設(shè)計(jì),,所以在實(shí)現(xiàn)時(shí)要盡可能地考慮旋轉(zhuǎn)因子的共享存儲(chǔ),從而盡可能地減少存儲(chǔ)這些旋轉(zhuǎn)因子的ROM大小,。
一般做法是將N點(diǎn)的旋轉(zhuǎn)因子全部存儲(chǔ),,然后根據(jù)算出來的nk乘積來查找對(duì)應(yīng)的旋轉(zhuǎn)因子,這樣35中模式需要很多的ROM地址來存儲(chǔ),。這里將具有2的冪次方關(guān)系的旋轉(zhuǎn)因子共用,,如12、24,、48…768點(diǎn)DFT的旋轉(zhuǎn)因子共用,,12點(diǎn)的旋轉(zhuǎn)因子是24點(diǎn)的一部分,24點(diǎn)的是48點(diǎn)的一部分等,,這樣就只需要存儲(chǔ)具有兩的冪次方關(guān)系的DFT點(diǎn)數(shù)的最大那個(gè)點(diǎn)768點(diǎn),,又由于旋轉(zhuǎn)因子自身的對(duì)稱性,只存儲(chǔ)最大點(diǎn)數(shù)的1/8就可以了,,其他部分通過對(duì)稱性來查找,。具體實(shí)現(xiàn)步驟如下:
(1)根據(jù)2的冪次方關(guān)系特性,將35種模式的DFT旋轉(zhuǎn)因子分成10組,,并存儲(chǔ)這10組中最大的點(diǎn)的八分之一構(gòu)成一個(gè)ROM,。對(duì)于N點(diǎn)(對(duì)應(yīng)組中最大的點(diǎn)),只存儲(chǔ)[N/8]個(gè)地址數(shù)據(jù),;
(2)對(duì)于計(jì)算出的旋轉(zhuǎn)因子地址K,,根據(jù)它所處的DFT模式,選擇它所屬的組,,10組分別用{R0,,R1,R2,,…,,R9}表示;
(3)如果K在R5,,則R0+R1+R2+R3+R4為它的偏移地址offset,;
(4)12點(diǎn)的DFT需要用此組中最大的768點(diǎn)ROM表來找數(shù),則地址K有可能是[0,…,,11]×768/12中的一個(gè)作為有效地址eff_dft_addr,;
(5)對(duì)于算出的eff_dft_addr,根據(jù)對(duì)[N×1/8],,…,,[N×7/8]的比較找出它處于768點(diǎn)中的哪個(gè)位置(此處N為768),,即哪個(gè)1/8象限,;
(6)找出所處的象限后,再找出其在第一個(gè)1/8對(duì)稱的位置值dft_8_addr,,計(jì)算出dft_addr=offset+dft_8_addr,,然后在ROM表中找出對(duì)應(yīng)的值,再根據(jù)對(duì)稱性還原其原來的所屬象限的值,。如圖5所示,,展示一個(gè)點(diǎn)的查找方式。通過查找A″的值來得到A的值,。
2.2.3 WFTA的運(yùn)算單元
WFTA算法對(duì)2,、3、4,、5,、7、8,、9,、16等小N點(diǎn)有較快速處理能力,它將小N點(diǎn)DFT轉(zhuǎn)換為循環(huán)卷積,,利用多項(xiàng)式理論使卷積計(jì)算盡可能減少乘法,。
2.2.4 塊浮點(diǎn)的數(shù)據(jù)處理
定點(diǎn)運(yùn)算的特點(diǎn)是速度快但動(dòng)態(tài)范圍小。浮點(diǎn)運(yùn)算的特點(diǎn)則是動(dòng)態(tài)范圍大但占用資源大,。塊浮點(diǎn)具有兩種運(yùn)算的優(yōu)點(diǎn),,是兩種運(yùn)算的折中,讓一組數(shù)具有共同的階碼,,這個(gè)階碼是同組數(shù)中最大的那個(gè)數(shù)的階碼,,簡(jiǎn)化系統(tǒng)資源提高運(yùn)算的精度[6]。
如表1所示,,因?yàn)槊看蜽FTA運(yùn)算后都有數(shù)據(jù)位寬的擴(kuò)展,,本結(jié)構(gòu)具有3 bit的擴(kuò)展。為保持輸入wfta_top的模塊數(shù)據(jù)始終為18 bit,,這里用塊浮點(diǎn)動(dòng)態(tài)截取的方法對(duì)每一級(jí)的WFTA結(jié)果進(jìn)行處理,,動(dòng)態(tài)截取的位寬決定下一級(jí)的數(shù)據(jù)寬度,同時(shí)循環(huán)累加每個(gè)階段的階碼,在數(shù)據(jù)輸出時(shí)進(jìn)行還原操作,。
3 仿真綜合
圖7所示為12點(diǎn)DFT的仿真圖形,,dft模式是第一種,首先data_in_vld為高時(shí)開始數(shù)據(jù)輸入,,然后用12個(gè)clk將數(shù)據(jù)讀入4個(gè)RAM,,之后計(jì)算第一級(jí)RAM讀取地址將數(shù)據(jù)讀出,處理3次4點(diǎn)的DFT,,處理后將數(shù)據(jù)寫入RAM,,需要3個(gè)clk;再后讀出數(shù)據(jù)做4次3點(diǎn)的DFT,,處理后將數(shù)據(jù)寫入RAM,,需4個(gè)clk;最后將數(shù)據(jù)讀出做壓縮還原處理,,data_out_vld為高后pipeline出數(shù),,需要12個(gè)clk。理論上需要31個(gè)clk,,但是在處理中需要處理與其他模式的共享,,還要有打拍延時(shí)等操作,實(shí)際用掉98個(gè)clk,。120點(diǎn)的DFT實(shí)際用502個(gè)clk,,理論上是120×2+30+30+24+40=364個(gè)clk,說明處理的點(diǎn)數(shù)越多冗余clk比例越小,。
使用Stratix III EP3SL340F1517I3芯片,,運(yùn)用Quartus II綜合后的結(jié)果為:7 824個(gè)組合ALUT,0個(gè)內(nèi)存ALUT,,8 699個(gè)邏輯寄存器,,可達(dá)到時(shí)鐘124.64 MHz,滿足LTE系統(tǒng)時(shí)鐘122.88 MHz的要求,。
文章在介紹LTE上行SC_FDMA的基礎(chǔ)上,,對(duì)35種模式的DFT預(yù)編碼進(jìn)行算法分析,提出并用FPGA實(shí)現(xiàn)了一種高速可配置的方案,。文中對(duì)數(shù)據(jù)存儲(chǔ),、WFTA運(yùn)算單元和塊浮點(diǎn)處理進(jìn)行簡(jiǎn)單表述,根據(jù)旋轉(zhuǎn)因子特性,,詳細(xì)介紹了旋轉(zhuǎn)因子的優(yōu)化,,大大降低了35種模式旋轉(zhuǎn)因子的存儲(chǔ)大小。最后給出的仿真綜合結(jié)果表明該方案具有較好的性能,。
參考文獻(xiàn)
[1] DAHLMAN E.3G evolution:HSPA and LTE for mobile broadband.Published by Elsevier Ltd.2007:75-81.
[2] 3GPP TS 36.211.Evolved universal terrestrial radio access (E-UTRA).Physical channels and modulation.
[3] Xilinx.LogiCORE IP discrete fourier transform v3.1.DS615. 2009.
[4] 何小敏.LTE系統(tǒng)中DFT快速算法研究[DB/OL].(2009-12-24).中國科技論文在線.http://www.paper.edu.cn/
paper.php?serial_number=2009/2-937.
[5] 胡廣書.數(shù)字信號(hào)處理——理論,、算法與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,,2003.
[6] 陳麗安,張培銘.定點(diǎn)DSP塊浮點(diǎn)算法及其實(shí)現(xiàn)技術(shù)[J].福州大學(xué)學(xué)報(bào),2004,,32(6):689-693.