基于FPGA的LTE系統(tǒng)中轉(zhuǎn)換預編碼的設計
3.2 內(nèi)部FFT處理單元
當進行圖2模塊B中的操作時,內(nèi)部FFT模塊先單獨生成。Xilinx提供的FFT IP核適用于基2點的FFT變換,其所采用的算法為Cooley-Tukey算法,變換長度為N=pow2(m),m=3~16,數(shù)據(jù)采樣精度和旋轉(zhuǎn)因子精度都為8~24,故模塊B的8、16、32、64、128及256點FFT都可用IP核生成。選擇“Pipelined,streaming I/O”生成基2點FFT模塊,可以減少整體處理時間。15、45、75、135、225點FFT模塊的外層算法是Good-Thomas算法,其余采用Cooley-Tukey算法實現(xiàn)。
具體到1 080點FFT,將RAM1中的數(shù)據(jù)順序讀出,由MUX1選擇進行8點FFT變換,完成第一級操作后,所得中間結(jié)果順序存儲在RAM2中;然后再將RAM2中的中間結(jié)果取出,由MUX2選擇進行135點FFT變換,共操作8次,完成第二級操作,所得結(jié)果按模塊C中ROM指示的順序存儲在RAM1中;最后順序輸出RAM1中的內(nèi)容就是1 080點FFT的結(jié)果。
3.3 乘法器設計
量化效應在數(shù)字信號處理技術(shù)實現(xiàn)時是很重要的問題,主要包括運算量化效應、系數(shù)量化效應等,前者的影響大于后者[5]。運算中還可能出現(xiàn)溢出,造成更大的誤差。上述問題對乘法器的設計提出了要求,由上文知,基2 FFT由IP核生成,故此處的乘法器設計只針對非基2 FFT有效。
Xilinx的XC5VSX95T內(nèi)部共有640個DSP48E,每個DSP48E包含一個25×18 乘法器。在調(diào)用乘法器IP時,將乘數(shù)設為寬度為25和18的signed型(旋轉(zhuǎn)因子位寬為18),輸出截取結(jié)果的[41:17]共25 bit,乘法器輸入輸出寬度相等,在結(jié)果輸出的同時對結(jié)果進行縮放,這樣利于程序模塊化,但前提是要保證數(shù)據(jù)不溢出。由于輸入采樣數(shù)據(jù)寬度只有16 bit,而轉(zhuǎn)換預編碼輸入數(shù)據(jù)最大長度只有1 200點,再考慮旋轉(zhuǎn)因子系數(shù)小于1,可以斷定25 bit位寬可使乘法器結(jié)果不溢出,且運算精度也可滿足要求。
4 性能分析
程序利用Verilog HDL硬件描述語言編寫,在Xilinx公司的高性能設計開發(fā)工具ISE10.1i中編譯成功。當FPGA芯片選為XC5VSX95T時,在Synplify Pro 9.6.1中進行邏輯優(yōu)化與綜合后顯示其最大時鐘頻率為105.6 MHz,F(xiàn)Fs耗用29 150/58 880,LUTs耗用37 625/58 880,乘法器耗用414/640,Block Ram耗用176/488,各項指標都合符要求。布局布線成功后,在Matlab中產(chǎn)生一實正弦測試信號,經(jīng)采樣量化成1 200點數(shù)據(jù)后輸入Modelsim SE 6.1d對程序進行后仿真,然后輸出結(jié)果回送至Matlab,得到仿真圖如圖4。
由圖4可以看出FFT處理器處理后的結(jié)果和Matlab計算的理論結(jié)果基本一致,都在頻率為15 Hz和335 Hz處取得最大FFT絕對值,兩者之間的誤差正是數(shù)字信號處理量化效應的體現(xiàn)。從整體看,這些誤差是數(shù)據(jù)在經(jīng)過采樣量化和截斷處理后不可避免的且是可以容忍的,因此可以判斷測試結(jié)果符合精度指標。
本文討論了應用在LTE上行轉(zhuǎn)換預編碼中的多種FFT的軟硬件實現(xiàn)。與各種FFT單獨處理或只采用Cooley-Tukey算法的方法相比,本設計巧妙地將Good-Thomas算法與Cooley-Tukey算法結(jié)合起來,在硬件資源和成本消耗上都有很大的節(jié)省,速度上也能滿足要求,而且這種結(jié)構(gòu)很容易進行功能擴展,只需要調(diào)整內(nèi)部FFT單元的種類和數(shù)目即可。這種大規(guī)?;旌匣鵉FT的實現(xiàn)方法對其他場合的大規(guī)模FFT有一定的普適性。
評論