


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、歡迎訪問Freekaoyan論文站用FPGA實現(xiàn)FFT算法歡迎訪問Freekaoyan論文站 歡迎訪問Freekaoyan論文站 引言DFT(Discrete Fourier Transformation)是數(shù)字信號分析與處理如圖形、語音及圖像等領域的重要變換工具,直接計算DFT的計算量與變換區(qū)間長度N的平方成正比。當N較大時,因計算量太大,直接用DFT算法進行譜分析和信號的實時處理是不切實際的??焖俑盗⑷~變換(Fast Fourier Transformation,簡稱FFT)使DFT運算效率提高12
2、個數(shù)量級。其原因是當N較大時,對DFT進行了基4和基2分解運算。FFT算法除了必需的數(shù)據(jù)存儲器ram和旋轉因子rom外,仍需較復雜的運算和控制電路單元,即使現(xiàn)在,實現(xiàn)長點數(shù)的FFT仍然是很困難。本文提出的FFT實現(xiàn)算法是基于FPGA之上的,算法完成對一個序列的FFT計算,完全由脈沖觸發(fā),外部只輸入一脈沖頭和輸入數(shù)據(jù),便可以得到該脈沖頭作為起始標志的N點FFT輸出結果。由于使用了雙ram,該算法是流型(Pipelined)的,可以連續(xù)計算N點復數(shù)輸入FFT,即輸入可以是分段N點連續(xù)復數(shù)數(shù)據(jù)流。采用DIF(Decimation In Frequency)-FFT和DIT(Decimation In
3、 Time)-FFT對于算法本身來說是無關緊要的,因為兩種情況下只是存儲器的讀寫地址有所變動而已,不影響算法的結構和流程,也不會對算法復雜度有何影響。算法實現(xiàn)的可以是基2/4混合基FFT,也可以是純基4FFT和純基2FFT運算。傅立葉變換和逆變換對于變換長度為N的序列x(n)其傅立葉變換可以表示如下: NnkX(k)=DFTx(n)=x(n)Wn=0式()其中,W=exp(-2/N)。當點數(shù)N較大時,必須對式(1)進行基4/基2分解,以短點數(shù)實現(xiàn)長點數(shù)的變換。而IDFT的實現(xiàn)在DFT的基礎上就顯得較為簡單了: 式()由式(2)可以看出,在FFT
4、運算模塊的基礎上,只需將輸入序列進行取共軛后再進行FFT運算,輸出結果再取一次共軛便實現(xiàn)了對輸入序列的IDFT運算,因子1/N對于不同的數(shù)據(jù)表示格式具體實現(xiàn)時的處理方式是不一樣的。IDFT在FFT的基礎上輸入和輸出均有一次共軛操作,但它們共用一個內核,仍然是十分方便的。基4和基2基4和基2運算流圖及信號之間的運算關系如圖1所示:(a)基蝶形算法 (b)基蝶形算法以基4為例,令A=r0+j×i0;B=r1+j×i1;C=r2+j×i2;D=r3+j×i3;Wk0=c0+j×s0:Wk1=c1+j×s1;Wk2=c2+j×s2;
5、Wk3=c3+j×s3。分別代入圖1中的基4運算的四個等式中有:A'=r0+(r1×c1-i1×s1)+(r2×c2-i2×s2)+(r3×c3-i3×s3)+ji0+(i1×c1+r1×s1)+(i2×c2+r2×s2)+(i3×c3+r3×s3) 式(3)B'=r0+(i1×c1+r1×s1)-(r2×c2-i2×s2)-(i3×c3+r3×s3)+ji0-(r1×c1-i1&
6、#215;s1)-(i2×c2+r2×s2)+(r3×c3-i3×s3) 式(4)C'=r0-(r1×c1-i1×s1)+(r2×c2-i2×s2)-(r3×c3-i3×s3)+ji0-(i1×c1+r1×s1)+(i2×c2+r2×s2)-(i3×c3+r3×s3) 式(5)D'=r0-(i1×c1+r1×s1)-(r2×c2-i2×s2)+(i3×c3+r3×
7、;s3)+ji0+(r1×c1-i1×s1)-(i2×c2+r2×s2)-(r3×c3-i3×s3) 式(6)可以看出,式(3)至式(6)有多個公共項和類似項,這一點得到充分利用之后可以大大縮減基4和基2運算模塊中的乘法器的個數(shù),如上面A'至D'的四個等式中的這三對類似項:(r1×c1-i1×s1)與(i1×c1+r1×s1)、(r2×c2-i2×s2)與(i2×c2+r2×s2)、(r3×c3-i3×s3)與(i3
8、215;c3+r3×s3)以高于輸入數(shù)據(jù)率的時鐘進行時分復用,最終可以做到只需要3個甚至1個復數(shù)乘法器便可以實現(xiàn)?;?運算之所以采用圖1-(b)中的形式進行基2運算,是為了將基本模塊做成基4/2復用模塊,它對于N有著更大的適用性和可借鑒性。在基4、基2和基4/2模塊的基礎上,構建基16、基8和基16/8模塊有著非常大的意義。算法實現(xiàn)傅立葉變換實現(xiàn)時首先進行基2、基4分解,一般來說,如果算法使用基4實現(xiàn),雖然使用的資源多了一些,但速度上的好處足以彌補。如果資源充足,使用基16、基8或基16/8復用模塊,速度可以大大提高。一般FFT實現(xiàn)簡單框圖如圖2所示。在圖2中,運算模塊即為基2/4/
9、8/16模塊或它們的復用模塊,Rom表中存儲的是N點旋轉因子表。控制模塊產生所有的控制信號,存儲器1和2的讀寫地址、寫使能、運算模塊的啟動信號及因子表的讀地址等信號。當然對于運算模塊為基16/8復用模塊時,控制模塊就需要產生模式選擇信號,如對于運算模塊是基4/2模塊時,該信號就決定了內部運算模塊是進行基4運算還是基2運算。存儲器1作為當前輸入標志對應輸入N點數(shù)據(jù)的緩沖器,存儲器2作為中間結果存儲器,用于存儲運算模塊計算出的各Pass的結果。在圖中的各種地址、使能和數(shù)據(jù)的緊密配合下,經過一定延時后輸出計算結果及其對應指示標志。圖2只是一定點或浮點的FFT實現(xiàn)模塊,如果是塊浮點運算,則必須加入一個
10、數(shù)據(jù)因子控制器,控制每遍運算過程中的數(shù)據(jù)大小,并根據(jù)各個Pass的乘性因子之和的大小,對最終輸出進行大小控制,以保證每段FFT運算輸出增益一致。外部輸入為N點數(shù)據(jù)段流和啟動信號(N點之間如無間隔,則每N數(shù)據(jù)點輸入一脈沖信號),一方面,外部數(shù)據(jù)存入存儲器1中,同時通過控制模塊的控制,讀出存儲器1中的前段N點數(shù)據(jù)和Rom表中的因子及相關控制信號送入運算核心模塊進行各個Pass的運算,每個Pass的輸出都存入存儲器2中,最后一個Pass的計算結果存入存儲器2中,并在下一個啟動頭到來后,輸出計算結果。對圖2的實現(xiàn),除去運算模塊,關鍵是各個Pass數(shù)據(jù)因子讀寫地址及控制信號的配合。速度、資源和精度假定輸
11、入數(shù)據(jù)的速率為fin,則每數(shù)據(jù)的持續(xù)時間T=1/fin,運算模塊的計算時鐘頻率為fa,對于N(N=2p,p即為Pass數(shù)目)點FFT計算時延與Pass數(shù)目直接相關。如果使用基2運算不考慮控制開銷,純粹的計算時延為td=p×N×T×fin/fa。顯然在fa>p× fin時,在N點內可完成FFT運算。否則不能完成,即不能實現(xiàn)流型的變換。這在N很大且輸入數(shù)據(jù)速率較高時以FPGA實現(xiàn)幾乎是不可能的,而且內部計算時鐘過高容易導致電路的工作不穩(wěn)定。設基2時的最小可流型工作運算頻率為fa0,則使用基4實現(xiàn)流型的變換,計算時鐘fa= fa0就可以。而使用基8時計算
12、時鐘fa= fa0便可完成,基16時為fa0的1/4。上面所討論的是純基運算,當N不為4的冪次方時(如N=2048=16×16×8,運算模塊為基16/8復用模塊),而又希望使用較低倍的時鐘完成運算時,圖2中的運算模塊必然包括基4/2復用模塊(即基16/8復用模塊),這也就是前面提到復用模塊的主要用意。由上面的分析可以得出結論,如果計算使用的基越大,完成速度越快。但是,使用基16/8模塊所使用的邏輯資源要比基4/2模塊多將近一倍,這是因為基16/8復用模塊是以基4模塊和基4/2復用模塊構建而成。當然,可以直接實現(xiàn)基16/8復用模塊,但用FPGA很難解決復雜度和成本問題。另外,
13、如果流型運算間隔比N點數(shù)據(jù)長度長一倍以上,可以考慮在較低的計算時鐘下使用基2運算模塊實現(xiàn)流型FFT。運算結果的精度直接與計算過程中數(shù)據(jù)和因子位數(shù)(浮點算法)相關,如果中間計算的位數(shù)、存儲數(shù)據(jù)位數(shù)和Rom表中的位數(shù)越大,輸出精度就越大。當然,位數(shù)增大后邏輯運算資源和存儲資源都會直線上升。浮點、塊浮點和定點FFT根據(jù)運算過程中對數(shù)據(jù)位數(shù)取位和表示形式的不同,可以將FFT分為浮點FFT、塊浮點FFT和定點FFT。它們在實現(xiàn)時對于系統(tǒng)資源的要求是不同的,而且有著不同的適用范圍。浮點FFT是基于數(shù)據(jù)表示為浮點的基礎之上的,即數(shù)據(jù)是由一純小數(shù)和一因子組成,輸入要轉成純小數(shù)和因子的浮點表示形式,所有計算過程
14、中保存應得計算結果大小,而輸出要變成所需大小的定點表示形式。只要因子位數(shù)足夠大,浮點FFT計算是不會溢出的。而定點則是所有計算過程中都是定點運算,如果各個Pass的截位規(guī)則不適當,很容易出現(xiàn)溢出,必須要有溢出控制。塊浮點是介于它們之間的一種運算機制,它是根據(jù)本Pass的輸入數(shù)據(jù)的大小,在計算之前進行控制(數(shù)據(jù)上移一比特或下移一比特或乘以一特定因子),可以保證不溢出,但一般也需要溢出控制。浮點運算沒有溢出,信號平均信噪比高,但由于因子的運算必然導致電路復雜,實現(xiàn)困難。定點運算實現(xiàn)簡單,難以保證不溢出,需要統(tǒng)計得出合適的截位規(guī)則,否則溢出嚴重導致輸出結果錯誤。塊浮點由于每個Pass(包括最后輸出前)結束后有一統(tǒng)計控制過程,延時較大,但是可以保證不溢出而且電路又相對浮點來說簡單得
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學五年級期末試卷(集錦12篇)
- 采石場股份買賣與礦山安全生產責任書
- 智能家居社區(qū)場地及智能家居租賃合同
- 房屋買賣合同催告與產權轉移合同
- 餐飲連鎖企業(yè)旗下特色餐廳品牌轉讓及經營管理合同
- 車輛質押融資與汽車改裝設計合同
- 知識產權代理授權委托書范本
- 拆遷補償安置及安置房銷售合同范本
- 2025私人借款合同書模板
- 2025版FIDIC合同主要條款深度解析
- 人機交互在醫(yī)療中的應用原理
- 中藥材種植及深加工項目建議書
- 吉林大學物理化學實驗 習題與試卷
- 語文到底教什么
- 數(shù)學的力量:讓我們成為更好的人
- UPS電源管理系統(tǒng)升級
- 高等數(shù)學(南京理工大學)智慧樹知到課后章節(jié)答案2023年下南京理工大學
- SA8000-2014社會責任績效委員會SPT組織架構、職責和定期檢討及評審會議記錄
- 湖北省實驗動物從業(yè)人員培訓考試題庫及答案(供參考)
- 回顧性中醫(yī)醫(yī)術實踐資料(醫(yī)案)表
- 英語四級考試試題與答案
評論
0/150
提交評論