吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述FPGA的快速傅立葉變換

新機器視覺 ? 來源:國外電子元器件 ? 作者:連冰,宮豐奎,張 ? 2021-05-27 11:21 ? 次閱讀

摘要:在對FFT(快速傅立葉變換)算法進行研究的基礎上,描述了用FPGA實現FFT的方法,并對其中的整體結構、蝶形單元及性能等進行了分析。 傅立葉變換是數字信號處理中的基本操作,廣泛應用于表述及分析離散時域信號領域。但由于其運算量與變換點數N的平方成正比關系,因此,在N較大時,直接應用DFT算法進行譜變換是不切合實際的。然而,快速傅立葉變換技術的出現使情況發生了根本性的變化。本文主要描述了采用FPGA來實現2k/4k/8k點FFT的設計方法。

1整體結構

一般情況下,N點的傅立葉變換對為: 其中,WN=exp(-2 pi/N)。X(k)和x(n)都為復數。與之相對的快速傅立葉變換有很多種,如DIT(時域抽取法)、DIF(頻域抽取法)、Cooley-Tukey和Winograd等。對于2n傅立葉變換,Cooley-Tukey算法可導出DIT和DIF算法。

本文運用的基本思想是Cooley-Tukey算法,即將高點數的傅立葉變換通過多重低點數傅立葉變換來實現。雖然DIT與DIF有差別,但由于它們在本質上都是一種基于標號分解的算法,故在運算量和算法復雜性等方面完全一樣,而沒有性能上的優劣之分,所以可以根據需要任取其中一種,本文主要以DIT方法為對象來討論。

N=8192點DFT的運算表達式為: 式中,m=(4n1+n2)(2048k1+k2)(n=4n1+n2,k=2048k1+k2)其中n1和k2可取0,1,...,2047,k1和n2可取0,1,2,3。 由式(3)可知,8k傅立葉變換可由4×2k的傅立葉變換構成。

同理,4k傅立葉變換可由2×2k的傅立葉變換構成。而2k傅立葉變換可由128×16的傅立葉變換構成。128的傅立葉變換可進一步由16×8的傅立葉變換構成,歸根結底,整個傅立葉變換可由基2、基4的傅立葉變換構成。2k的FFT可以通過5個基4和1個基2變換來實現;

4k的FFT變換可通過6個基4變換來實現;8k的FFT可以通過6個基4和1個基2變換來實現。也就是說:FFT的基本結構可由基2/4模塊、復數乘法器、存儲單元和存儲器控制模塊構成,其整體結構如圖1所示。 圖1中,RAM用來存儲輸入數據、運算過程中的中間結果以及運算完成后的數據,ROM用來存儲旋轉因子表。蝶形運算單元即為基2/4模塊,控制模塊可用于產生控制時序及地址信號,以控制中間運算過程及最后輸出結果。

pIYBAGCvEQWAayI_AAA3NBdajKY531.png

2蝶形運算器的實現

基4和基2的信號流如圖2所示。

pIYBAGCvER6AUpFKAACTgGi-k4w094.png

圖中,若A=r0+j*i0,B=r1+j*i1,C=r2+j*i2,D=r3+j*i3是要進行變換的信號,Wk0=c0+j*s0=1,Wk1=c1+j*s1,Wk2=c2+j*s2,Wk3=c3+j*s3為旋轉因子,將其分別代入圖2中的基4蝶形運算單元,

則有: A′=[r0+(r1×c1-i1×s1)+(r2×c2-i2×s2)+(r3×c3-i3×s3)]+j[i0+(i1×c1+r1×s1)+(i2×c2+r2×s2)+(i3×c3+r3×s3)]?? (4) B′=[r0+(i1×c1+r1×s1)-(r2×c2-i2×s2)-(i3×c3+r3×s3)]+j[i0-(r1×c1-i1×s1)-(i2×c2+r2×s2)+(r3×c3-i3×s3)] (5) C′=[r0-(r1×c1-i1×s1)+(r2×c2-i2×s2)-(r3×c3-i3×s3)]+j[i0-(i1×c1+r1×s1)+(i2×c2+r2×s2)-(i3×c3+r3×s3)] (6) D′=[r0-(i1×c1+r1×s1)-(r2×c2-i2×s2)+(i3×c3+r3×s3)]+j[i0+(r1×c1-i1×s1)-(i2×c2+r2×s2)-(r3×c3-i3×s3)]?? (7)

而在基2蝶形中,Wk0和Wk2的值均為1,這樣,將A,B,C和D的表達式代入圖2中的基2運算的四個等式中,則有: A′=r0+(r1×c1-i1×s1)+j[i0+(i1×c1+r1×s1)]?? (8) B′=r0- (r1×c1-i1×s1)+j[i0-(i1×c1+r1×s1)] (9) C′=r2+(r3×c3-i3×s3)+j[i0+(i3×c3+r3×s3)]?? (10) D′=r2-(r3×c3-i3×s3)+j[i0-(i3×c3+r3×s3)]?? (11) 在上述式(4)~(11)中有很多類同項,如i1×c1+r1×s1和r1×c1-i1×s1等,

它們僅僅是加減號的不同,其結構和運算均類似,這就為簡化電路提供了可能。同時,在蝶形運算中,復數乘法可以由實數乘法以一定的格式來表示,這也為設計復數乘法器提供了一種實現的途徑。 以基4為例,在其運算單元中,實際上只需做三個復數乘法運算,即只須計算BWk1、CWk2和DWk3的值即可。

這樣在一個基4蝶形單元里面,最多只需要3個復數乘法器就可以了。在實際過程中,在不提高時鐘頻率下,只要將時序控制好?煴憧衫?用流水線(Pipeline)技術并只用一個復數乘法器就可完成這三個復數乘法,大大節省了硬件資源。

3FFT的地址

FFT變換后輸出的結果通常為一特定的倒序,因此,幾級變換后對地址的控制必須準確無誤。 倒序的規律是和分解的方式密切相關的,以基8為例,其基本倒序規則如下: 基8可以用2×2×2**基2變換來表示,則其輸入順序則可用二進制序列(n1 n2 n3)來表示,變換結束后,其順序將變為(n3 n2 n1)。

如:X?煟埃保保?→ x?煟保保埃牐?即輸入順序為3,輸出時順序變為6。 更進一步,對于基16的變換,可由2×2×2×2,4×4,4×2×2等形式來構成,相對于不同的分解形式,往往會有不同的倒序方式。以4×4為例,其輸入順序可以用二進制序列(n1 n2 n3 n4)來表示變換結束后,其順序可變為((n3 n4)(n1 n2))。

如:X?煟埃保保保?→ x?煟保保埃保牎<詞淙胨承蛭?7,輸出時順序變為13。 在2k/4k/8k的傅立葉變換中,由于要經過多次的基4和基2運算,因此,從每次運算完成后到進入下一次運算前,應對運算的結果進行倒序,以保證運算的正確性。

4旋轉因子

N點傅立葉變換的旋轉因子有著明顯的周期性和對稱性。其周期性表現為: FFT之所以可使運算效率得到提高,就是利用 FFT之所以可使運算效率得到提高,就是利用了對稱性和周期性把長序列的DFT逐級分解成幾個序列的DFT,并最終以短點數變換來實現長點數變換。

根據旋轉因子的對稱性和周期性,在利用ROM存儲旋轉因子時,可以只存儲旋轉因子表的一部分,而在讀出時增加讀出地址及符號的控制,這樣可以正確實現FFT。因此,充分利用旋轉因子的性質,可節省70%以上存儲單元。 實際上,由于旋轉因子可分解為正、余弦函數的組合,故ROM中存的值為正、余弦函數值的組合。

對2k/4k/8k的傅立葉變換來說,只是對一個周期進行不同的分割。由于8k變換的旋轉因子包括了2k/4k的所有因子,因此,實現時只要對讀ROM的地址進行控制,即可實現2k/4k/8k變換的通用。

5存儲器的控制

因FFT是為時序電路而設計的,因此,控制信號要包括時序的控制信號及存儲器的讀寫地址,并產生各種輔助的指示信號。同時在計算模塊的內部,為保證高速,所有的乘法器都須始終保持較高的利用率。這意味著在每一個時鐘來臨時都要向這些單元輸入新的操作數,而這一切都需要控制信號的緊密配合。

為了實現FFT的流形運算,在運算的同時,存儲器也要接收數據。這可以采用乒乓RAM的方法來完成。

這種方式決定了實現FFT運算的最大時間。對于4k操作,其接收時間為4096個數據周期,這樣?煟疲疲緣淖畬笤慫閌奔渚褪牽矗埃梗陡鍪?據周期。另外,由于輸入數據是以一定的時鐘為周期依次輸入的,故在進行內部運算時,可以用較高的內部時鐘進行運算,然后再存入RAM依次輸出。

為節省資源,可對存儲數據RAM采用原址讀出原址寫入的方法,即在進行下一級變換的同時,首先應將結果回寫到讀出數據的RAM存貯器中;而對于ROM,則應采用與運算的數據相對應的方法來讀出存儲器中旋轉因子的值。

在2k/4k/8k傅立葉變換中,要實現通用性,控制器是最主要的模塊。2k、4k、8k變換具有不同的內部運算時間和存儲器地址,在設計中,針對不同的點數應設計不同的存儲器存取地址,同時,在完成變換后,還要對開始輸出有用信號的時刻進行指示。

6硬件的選擇

本設計的硬件實現選用的是現場可編程門陣列(FPGA)來滿足較高速度的需要。本系統在設計時選用的是ALTERA公司的STRATIX芯片,該芯片中包含有DSP單元,可以完成較為耗費資源的乘法器單元。

同時,該器件也包含有大量存儲單元,從而可保證旋轉因子的精度。 除了一些專用引腳外,FPGA上幾乎所有的引腳均可供用戶使用,這使得FPGA信號處理方案具有非常好的I/O帶寬。大量的I/O引腳和多塊存儲器可使設計獲得優越的并行處理性能。其獨立的存儲塊可作為輸入/工作存儲區和結果的緩存區,這使得I/O可與FFT計算同時進行。

在實現的時間方面,該設計能在4096個時鐘周期內完成一個4096點的FFT。若采用10MHz的輸入時鐘,其變換時間在200μs左右。而由于最新的FPGA使用了MultiTrack互連技術,故可在250MHz以下頻率穩定地工作,同時,FFT的實現時間也可以大大縮小。

FFT運算結果的精度與輸入數據的位數及運算過程中的位數有關,同時和數據的表示形式也有很大關系。一般來說,浮點方式比定點方式精度高。而在定點計算中,存儲器數據的位數越大,運算精度越高,使用的存儲單元和邏輯單元也越多。在實際應用中,應根據實際情況折衷選擇精度和資源。

本設計通過MATLAB進行仿真證明:其實現的變換結果與MATLAB工具箱中的FFT函數相比,信噪比可以達到65db以上,完全可以滿足一般工程的實際應用要求。

作者:連冰,宮豐奎,張力,李兵兵

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    115017
  • 數字信號處理

    關注

    15

    文章

    563

    瀏覽量

    46002
  • FDT
    FDT
    +關注

    關注

    0

    文章

    5

    瀏覽量

    9269

原文標題:基于FPGA的快速傅立葉變換

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    傅立葉變換在機器學習中的應用 常見傅立葉變換的誤區解析

    傅里葉變換在機器學習中的應用 傅里葉變換是一種將信號分解為其組成頻率分量的數學運算,它在機器學習中的應用日益廣泛。以下是一些主要的應用領域: 信號處理 : 音頻處理:傅里葉變換有助于識別音頻信號中
    的頭像 發表于 12-06 17:06 ?323次閱讀

    傅立葉變換與時域信號的關系 傅立葉變換在音頻信號處理中的應用

    傅里葉變換與時域信號的關系 傅里葉變換是一種數學工具,它能夠將時域信號(即隨時間變化的信號)轉換為頻域信號(即隨頻率變化的信號),或者將頻域信號轉換回時域信號。這種轉換關系使得我們能夠更加深入地理
    的頭像 發表于 12-06 17:02 ?592次閱讀

    如何使用傅立葉變換進行頻譜分析

    使用傅里葉變換進行頻譜分析是一個復雜但強大的過程,它允許我們了解信號在頻率域中的特性。以下是一個使用傅里葉變換進行頻譜分析的基本步驟: 一、準備信號 首先,需要有一個要進行頻譜分析的信號。這個信號
    的頭像 發表于 12-06 16:58 ?605次閱讀

    傅立葉變換在圖像處理中的作用

    傅里葉變換在圖像處理中發揮著至關重要的作用。以下是傅里葉變換在圖像處理中的幾個主要作用: 一、圖像增強與去噪 去噪 :圖像中的噪聲通常表現為高頻分量。通過傅里葉變換,可以將圖像從空間域轉換到頻率域
    的頭像 發表于 12-06 16:55 ?708次閱讀

    傅立葉變換與拉普拉斯變換的區別

    傅里葉變換與拉普拉斯變換在信號處理中都是非常重要的工具,但它們之間存在一些顯著的區別。以下是對這兩種變換區別的介紹: 定義域與適用范圍 傅里葉變換 : 定義域:傅里葉
    的頭像 發表于 12-06 16:52 ?736次閱讀

    傅立葉變換的基本概念 傅立葉變換在信號處理中的應用

    傅里葉變換的基本概念 傅里葉變換是一種數學變換,它能夠將滿足一定條件的某個函數表示成三角函數(正弦和/或余弦函數)或者它們的積分的線性組合。這種變換在不同的研究領域有多種變體形式,如連
    的頭像 發表于 12-06 16:48 ?494次閱讀

    經典傅里葉變換快速傅里葉變換的區別

    經典傅里葉變換快速傅里葉變換(FFT)在多個方面存在顯著的區別,以下是對這兩者的比較: 一、定義與基本原理 經典傅里葉變換 : 是一種將滿足一定條件的某個函數表示成三角函數(正弦和/
    的頭像 發表于 11-14 09:37 ?519次閱讀

    在TMS320C62x上實現的擴展精度基數-4快速傅里葉變換

    電子發燒友網站提供《在TMS320C62x上實現的擴展精度基數-4快速傅里葉變換.pdf》資料免費下載
    發表于 10-28 10:03 ?0次下載
    在TMS320C62x上實現的擴展精度基數-4<b class='flag-5'>快速</b>傅里葉<b class='flag-5'>變換</b>

    簡述DC變換器的控制方式

    DC變換器,也稱為DC-DC轉換器,是一種將直流電壓轉換為另一種直流電壓的電力電子設備。在DC變換器的設計和應用中,控制方式是至關重要的,它決定了變換器的性能、效率和穩定性。以下將詳細描述DC
    的頭像 發表于 08-14 14:37 ?1246次閱讀

    拓撲篇丨LLC諧振變換快速設計與開發

    電路設計圖搭建LLC主拓撲電路、PWM驅動電路、采樣電路以及保護電路等,LLC諧振變換器的硬件測試平臺如圖。 (二) LLC諧振變換快速開發1、在PC端安裝PPEC Worekbench軟件,并將硬件
    發表于 08-07 18:31

    如何快速入門FPGA

    快速入門FPGA可以遵循以下步驟: 理解FPGA基礎知識: FPGA(Field Programmable Gate Array)即現場可編程門陣列,是作為專用集成電路(ASIC)領域
    發表于 04-28 09:06

    如何快速入門FPGA

    快速入門FPGA可以遵循以下步驟: 理解FPGA基礎知識: FPGA(Field Programmable Gate Array)即現場可編程門陣列,是作為專用集成電路(ASIC)領域
    發表于 04-28 08:54

    請問快速傅里葉變換dsp庫在那里下載?

    快速傅里葉變換dsp庫在那里下載
    發表于 04-02 08:18

    一文道破傅里葉變換的本質,優缺點一目了然

    任意位置附近的時間段頻譜,實現了時間局域化。短時傅里葉變換的公式為: 在時域用窗函數去截信號,對截下來的局部信號作傅立葉變換,即在t時刻得該段信號得傅立葉
    發表于 03-12 16:06

    一文詳解頻譜分析儀的基礎知識

    頻譜分析是觀察和測量信號幅度和信號失真的一種快速方法,其顯示結果可以直觀反映出輸入信號的傅立葉變換的幅度。
    的頭像 發表于 02-20 10:27 ?2514次閱讀
    一文詳解頻譜分析儀的基礎知識
    百家乐娱乐城公司| 百家乐有没有攻略| 998棋牌游戏| 百家乐怎么计算概率| 博彩百家乐官网心得| 立即博百家乐的玩法技巧和规则| 破战百家乐官网的玩法技巧和规则| 金球国际娱乐城| 粤港澳百家乐官网娱乐网| 长乐坊娱乐城| 超级老虎机系统| 百家乐六亿财富| 百家乐官网小游戏单机版| 澳门赌百家乐官网心法| 皇冠网赌球安全吗| 威尼斯人娱乐城线上赌博| 百家乐书包| 百家乐官网15人桌| 百家乐官网视频连线| 易胜博开户| 大发888游戏平台稳定大发888| 致胜百家乐的玩法技巧和规则| 大发888登录网页游戏| A8百家乐娱乐平台| 中国百家乐游戏| 做生意如何风水| 百家乐官网怎么玩才会赢钱| 3U百家乐官网娱乐城| 嘉义市| E利博娱乐城| 尊龙国际娱乐| 澳门赌博经历| 喜达百家乐的玩法技巧和规则| 尊龙百家乐赌场娱乐网规则| 亚洲百家乐博彩的玩法技巧和规则 | 百家乐路单统| 百家乐看| 威尼斯人娱乐城最新网址| 巴宝莉百家乐的玩法技巧和规则 | 阳宅64卦与24山| 百家乐玩法及细则|