基于FPGA的64點FFT處理器設(shè)計
0 引 言
DFT作為DSP領(lǐng)域中時域和頻域轉(zhuǎn)換的基本運(yùn)算,存在運(yùn)算量太大的缺點,導(dǎo)致其應(yīng)用受到局限。 DFT快速算法FFT的提出,簡化了DFT的運(yùn)算過程,使其在實時信號處理領(lǐng)域中得到廣泛應(yīng)用。FFT實現(xiàn)的方法包括軟件實現(xiàn)和硬件實現(xiàn)兩種。采用軟件實現(xiàn)FFT的方法存在計算慢,實現(xiàn)過程復(fù)雜等缺點,所以目前比較流行的方式是采用硬件實現(xiàn)FFT。硬件實現(xiàn)的具體方法可以分為ASIC方法、FPGA方法、 DSP方法和通用處理機(jī)方法等。
FPGA是20世紀(jì)80年代中期出現(xiàn)的一種新的電子設(shè)計自動化技術(shù),具有集成度高,邏輯實現(xiàn)能力強(qiáng),設(shè)計靈活等優(yōu)勢。在FPGA上實現(xiàn)數(shù)字信號處理,即用純數(shù)字邏輯進(jìn)行DSP模塊設(shè)計,為高速數(shù)字信號處理算法提供了實現(xiàn)途徑。在此,采用FPGA方法設(shè)計64點FFT處理器。
現(xiàn)有的FFT模塊可以對多點數(shù)據(jù)進(jìn)行運(yùn)算,但是存在運(yùn)算周期長。結(jié)構(gòu)復(fù)雜,硬件資源耗費大等缺陷。采用64點FFT可以通過優(yōu)化結(jié)構(gòu)來快速處理多點數(shù)數(shù)據(jù)。目前設(shè)計的64點FFT處理器主要采用以專用處理單元取代常規(guī)FFT處理單元的方法,或者按照固定幾何結(jié)構(gòu)設(shè)計FFT處理器的方法。這里所介紹的64 點FFT處理器是在固定幾何結(jié)構(gòu)設(shè)計方法的基礎(chǔ)上加以改進(jìn),將輸入的64點數(shù)據(jù)均勻分成8組,并行輸入給FFT運(yùn)算單元,進(jìn)行FFT運(yùn)算。通過對蝶形運(yùn)算單元進(jìn)行優(yōu)化設(shè)計,所設(shè)計的64點FFT處理器模塊較之以往的FFT模塊,節(jié)省了硬件資源,提高了運(yùn)算效率。通過ModelSim仿真實驗證明,在外部工作時鐘頻率為40 MHz下,對隨機(jī)生成的序列進(jìn)行64點FFT運(yùn)算處理,運(yùn)算時間為10μs,縮短了現(xiàn)有FFT模塊的運(yùn)算時間。
1 按頻率抽取的基——4FFT算法原理
對于序列長度為N(N為2的整數(shù)次冪)的FFT算法主要有基-2 FFT和基-4 FFT兩種。計算一次基-2FFT需要二次復(fù)乘和兩次復(fù)加;計算一次基-4 FFT需要三次復(fù)乘和八次復(fù)加。從運(yùn)算次數(shù)上看,基-2 FFT較為簡單,但是因為基-2 FFT的復(fù)數(shù)運(yùn)算較為復(fù)雜,所以在硬件實現(xiàn)上反而要比基-4 FFT占用的資源更多。為了滿足對數(shù)據(jù)高速處理的要求,在此選擇在FP-GA上實現(xiàn)基-4 FFT的算法。
根據(jù)定義,對于長度為N的序列x(N)(0≤N≤N-1),它的DFT可表示為:
式中:WnkN=e-J2π/Nnk稱為旋轉(zhuǎn)因子。直接計算DFT,需要的計算量為N2次復(fù)乘和N(N-1)次復(fù)加。當(dāng)N很大時,運(yùn)算量相當(dāng)大,無法滿足實時處理的要求。因此利用旋轉(zhuǎn)因子的對稱性、周期性和可約性,把長序列分解成為短序列來進(jìn)行快速傅里葉變換。
由式(1)可以得到4個子序列:
利用旋轉(zhuǎn)因子WnkN的特性,如:將A,B,C,D作為復(fù)數(shù)操作數(shù)進(jìn)行運(yùn)算,由式(2)可得簡化計算式:
式(3)就是在FPGA上實現(xiàn)基-4 FFT算法的基本運(yùn)算法則。[!--empirenews.page--]
不同于以往的基-4 FFT算法,這里是將輸入的64點數(shù)據(jù)以8位輸入數(shù)據(jù)為一組,共分成8組的方式輸入給FFT運(yùn)算單元進(jìn)行FFT運(yùn)算的。完整的FFT蝶形運(yùn)算共分6級,經(jīng)歷196個循環(huán)狀態(tài)。將來自存儲單元的數(shù)據(jù)輸入到FFT運(yùn)算單元中,前三級是按8位1組的方法,分為8組進(jìn)行運(yùn)算;后三級是將前三級運(yùn)算所得到的中間數(shù)據(jù)送入運(yùn)算單元進(jìn)行運(yùn)算。經(jīng)過FFT運(yùn)算后,將所得到運(yùn)算結(jié)果寫入存儲單元中保存。結(jié)果以倒位序方式輸出,需要經(jīng)過調(diào)整位序變換成為自然順序輸出。
2 FFT運(yùn)算器設(shè)計
2.1 系統(tǒng)的整體結(jié)構(gòu)
一個完整的FFT運(yùn)算單元應(yīng)該包括以下幾個組成部分:
全局控制單元包括控制器和地址產(chǎn)生單元,用于調(diào)控整個FFT運(yùn)算系統(tǒng),生成蝶形運(yùn)算單元以及其他子單元所需的地址,控制各子單元時序,保證其正常有序地工作;
蝶形運(yùn)算器單元 由蝶形運(yùn)算器和旋轉(zhuǎn)因子存儲單元(ROM)組成,負(fù)責(zé)將送入的輸人數(shù)據(jù)進(jìn)行蝶形運(yùn)算,是FFT運(yùn)算器的核心單元;
存儲寄存器單元 采用兩個RAM乒乓通信,通過通信接口單元接收總線控制信號,負(fù)責(zé)存儲輸入數(shù)據(jù)、中間數(shù)據(jù)和運(yùn)算所得最終結(jié)果。
系統(tǒng)整體框圖如圖1所示。
3 實驗結(jié)果驗證
這里的FFT運(yùn)算器通過硬件描述語言VHDL代碼進(jìn)行編寫,在ModelSimSE PLUS 6.1f環(huán)境下完成系統(tǒng)仿真,波形仿真如圖3所示。
由波形仿真圖可以看出,地址控制單元以3位二進(jìn)制編碼定義各子單元的地址,存儲的數(shù)據(jù)在時序信號和地址總線單元控制下進(jìn)行FFT運(yùn)算。實驗證明,當(dāng)外部時鐘頻率為40 MHz時,可以對隨機(jī)生成的64點序列進(jìn)行FFT定點運(yùn)算,運(yùn)算時間為10μs。
4 結(jié) 語
這里的FFT運(yùn)算器采用定點數(shù)處理,當(dāng)處理浮點數(shù)時,系統(tǒng)存在處理異常、數(shù)據(jù)溢出等問題。但是由于可以迅速處理多點數(shù)信號,因此在數(shù)字圖像處理、實時通信系統(tǒng)的調(diào)試和解調(diào)等方面具有一定的實際意義,達(dá)到了使用FPGA實現(xiàn)DSP算法的目的。
本文在以下方面有所創(chuàng)新:
(1)輸入的64位數(shù)據(jù)以8位共8組的方式并行輸入,將FFT運(yùn)算流程分為6級,整個FFT運(yùn)算過程清晰,結(jié)構(gòu)合理,提高了運(yùn)行效率。
(2)使用2塊雙口RAM作為存儲器,采用“乒乓操作”,在一個時鐘周期內(nèi)保證數(shù)據(jù)傳遞的單向性,減少了數(shù)據(jù)傳輸?shù)娜哂?,提高了精度?br /> (3)將整個FFT運(yùn)算器進(jìn)行模塊化設(shè)計,在控制模塊的調(diào)配下,各個子模塊準(zhǔn)確工作,保證了運(yùn)算的可靠性。
推進(jìn)卓越制造,擴(kuò)大產(chǎn)能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車系統(tǒng)與蘇州工業(yè)園區(qū)管委會正式簽署備忘錄,以設(shè)立耐世特亞太總部蘇州智能制造項目。...
關(guān)鍵字: 智能制造 BSP 汽車系統(tǒng) 線控以高效節(jié)能方案繪制AI算力綠色未來 上海2025年8月29日 /美通社/ -- 8月28日,臺達(dá)受邀出席"2025中國智算產(chǎn)業(yè)綠色科技大會",全方位分享臺達(dá)在智算領(lǐng)域的前沿洞見與綠色解決方...
關(guān)鍵字: AI 可持續(xù)發(fā)展 數(shù)據(jù)中心 BSP北京2025年8月28日 /美通社/ -- 近日,北京亦莊創(chuàng)新發(fā)布消息,北京經(jīng)濟(jì)技術(shù)開發(fā)區(qū)(簡稱北京經(jīng)開區(qū),又稱北京亦莊)以"高效辦成一件事"為抓手,圍繞企業(yè)信用修復(fù)的全流程全環(huán)節(jié),打造經(jīng)開區(qū)特色的&...
關(guān)鍵字: 數(shù)字化 集成 BSP 數(shù)據(jù)共享