LTE系統(tǒng)中FFT的實(shí)現(xiàn)
在數(shù)字信號(hào)處理中,離散傅里葉變換(DFT)是常用的變換方法,它在各種數(shù)字信號(hào)處理系統(tǒng)中扮演著重要的角色??焖俑道锶~變換(FFT)[1-2]是離散傅里葉變換的快速算法,它是根據(jù)離散傅里葉變換的奇、偶、虛、實(shí)等特性,對(duì)離散傅里葉變換的算法進(jìn)行改進(jìn)獲得的,兩者都是為了將信號(hào)變換到頻域并進(jìn)行相應(yīng)的頻譜分析。對(duì)于實(shí)時(shí)性要求很強(qiáng)的信號(hào)處理來說,運(yùn)算速度對(duì)整個(gè)處理的影響是顯而易見的。因?yàn)镕FT擁有很高的運(yùn)算能力,使其在無線通信和數(shù)字通信、高速圖像處理、匹配濾波等領(lǐng)域得到極為廣泛的應(yīng)用。
LTE作為準(zhǔn)4G技術(shù),以正交頻分復(fù)用OFDM和多輸入多輸出MIMO技術(shù)為基礎(chǔ),下行采用正交頻分多址(OFDM)技術(shù),上行采用單載波頻分多址(SC-FDMA)技術(shù),在20MHz頻譜帶寬下能夠提供下行100Mb/s和上行50Mb/s的峰值速率[3]。
頻域分析比時(shí)域分析更優(yōu)越,不僅簡(jiǎn)單,且易于分析復(fù)雜信號(hào)[4]。在LTE系統(tǒng)中,FFT算法主要應(yīng)用于基帶信號(hào)生成、信號(hào)的接收和檢測(cè)等,將時(shí)域信號(hào)轉(zhuǎn)移到頻域進(jìn)行處理。

?
其中,x(n)為復(fù)數(shù)序列,WNkn和X(K)也為復(fù)數(shù),因此每計(jì)算一個(gè)X(K)值,需要進(jìn)行N次復(fù)數(shù)乘法運(yùn)算和N-1次復(fù)數(shù)加法運(yùn)算。而X(K)共有N個(gè)點(diǎn),所以完成整個(gè)DFT運(yùn)算需要進(jìn)行N2次復(fù)數(shù)乘法和N(N-1)次復(fù)數(shù)加法運(yùn)算,當(dāng)N很大時(shí),運(yùn)算量相當(dāng)可觀。然而對(duì)于實(shí)時(shí)性很強(qiáng)的信號(hào)處理來說,如滿足其要求,運(yùn)算速度就太高了。利用旋轉(zhuǎn)因子WNkn的對(duì)稱性、周期性和可約性,可以使DFT運(yùn)算中的有些項(xiàng)合并,將長(zhǎng)序列的DFT分解為幾個(gè)短序列的DFT,從而大大減少運(yùn)算次數(shù)。FFT算法可以分為時(shí)間抽取法和頻域抽取法兩大類。頻域抽取法的運(yùn)算特點(diǎn)與時(shí)間抽取法的基本相同,不同之處是頻域抽取法的蝶形運(yùn)算是先加后乘,時(shí)間抽取法的蝶形運(yùn)算是先乘后加;頻域抽取的輸入序列是自然順序,輸出序列是倒序,而時(shí)間抽取法的輸入序列是倒序,輸出序列是自然順序。
假設(shè)輸入序列x(n)長(zhǎng)度為N=2M,M是正整數(shù)。如果不滿足這個(gè)條件,在序列尾部人為地加上若干零值點(diǎn),使其達(dá)到這一要求。將序列x(n)按n的奇偶分解為兩個(gè)N/2點(diǎn)的子序列:

?
2 FFT算法的DSP實(shí)現(xiàn)
2.1 硬件
TMS320C6000系列DSP是TI公司推向市場(chǎng)的高性能DSP,綜合了目前性價(jià)比高、功耗低等優(yōu)點(diǎn)。TMS320C64系列提高了時(shí)鐘頻率,在體系結(jié)構(gòu)上采用了VelociTI甚長(zhǎng)指令集VLIW(Very Long Instruction Word)結(jié)構(gòu)[5],芯片內(nèi)有8個(gè)獨(dú)立功能單元的內(nèi)核,每個(gè)周期可以并行執(zhí)行8條32bit指令,最大峰值速度為4800MIPS,2組共64個(gè)32bit通用寄存器,32bit尋址范圍,支持8/16/32/40 bit的數(shù)據(jù)訪問,芯片內(nèi)集成大容量SRAM,最大可達(dá)8Mb。由于出色的運(yùn)算能力、高效的指令集、大范圍的尋址能力,使其特別適用于無線基站、測(cè)試儀表等對(duì)運(yùn)算能力和存儲(chǔ)量要求高的應(yīng)用場(chǎng)合。
2.2 FFT算法的DSP實(shí)現(xiàn)
FFT算法作為一個(gè)子函數(shù)模塊且輸入序列長(zhǎng)度不盡相同,所以,方案定義了輸入輸出變量及其調(diào)用格式。調(diào)用格式:Turbo_Code(int*,int,int,char*,char*,int*),其中,int分別表示輸入序列的長(zhǎng)度和FFT的級(jí)數(shù);int*分別表示輸入序列的首地址和輸出序列的首地址;char*分別表示旋轉(zhuǎn)因子的余弦的首地址和旋轉(zhuǎn)因子的正弦的首地址。
FFT算法具體實(shí)現(xiàn)流程如下:
(1)時(shí)間抽取法的FFT中,每個(gè)蝶形的輸入、輸出數(shù)據(jù)節(jié)點(diǎn)在一條水平線上,所以每個(gè)蝶形的輸出數(shù)據(jù)可以立即存入原輸入數(shù)據(jù)所占用的存儲(chǔ)單元。這種原位計(jì)算可節(jié)省大量的內(nèi)存,并且理論上減少不同寄存器之間存取數(shù)據(jù)的時(shí)間。

?
使用C語言編寫主函數(shù),匯編語言編寫FFT算法的實(shí)現(xiàn)函數(shù)。程序中假設(shè)輸入數(shù)據(jù)最大長(zhǎng)度為1024,由于DSP C6455可以直接存取處理32bit,所以在內(nèi)存中定義了長(zhǎng)度為8192bit作為存放輸出序列的內(nèi)存空間。為了提高運(yùn)算精確度,輸入數(shù)的實(shí)部和虛部分別占用一個(gè)字,在程序中進(jìn)行復(fù)數(shù)相乘操作是采用匯編指令MPYHI。內(nèi)存定義了長(zhǎng)度為2048bit的Tempsequence作為存放倒序序列,并且建立了2張旋轉(zhuǎn)因子查找表,分別為Wr和Wi。
外循環(huán)中,在每次內(nèi)循環(huán)之前從輸入比特序列中取出32bit放入一個(gè)寄存器,作為一個(gè)內(nèi)循環(huán)的輸入,內(nèi)循環(huán)結(jié)束后,取下一個(gè)32bit輸入比特更新這個(gè)寄存器。
- 第 1 頁:LTE系統(tǒng)中FFT的實(shí)現(xiàn)
- 第 2 頁:內(nèi)循環(huán)
本文導(dǎo)航
非常好我支持^.^
(2) 100%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說] HOLTEK新推出BH66F2475連續(xù)血糖監(jiān)測(cè)MCU 2023-10-24
- [控制/MCU] Holtek新推出HT67F2452紅外線驅(qū)動(dòng)A/D與LCD型Flash MCU 2023-10-23
- [電子說] 如何理解FFT中的頻譜泄露效應(yīng)? 2023-10-23
- [電子說] LTE系統(tǒng)TDD無線幀結(jié)構(gòu)特點(diǎn) 2023-10-21
- [電子說] 為什么會(huì)造成頻譜泄露?如何理解FFT中的頻譜泄露效應(yīng)? 2023-10-20
- [電子說] 與4G相比,5G如何降低功耗呢? 2023-10-19
- [電子說] EaseFilter File System文件I/O監(jiān)視器 2023-10-18
- [電子說] 直方圖測(cè)試模數(shù)轉(zhuǎn)換器(ADC)介紹 2023-10-17
( 發(fā)表人:小蘭 )