chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何用FPGA實現(xiàn)FFT算法?

FPGA設(shè)計論壇 ? 來源:未知 ? 2023-10-09 14:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

點擊上方藍(lán)字關(guān)注我們

引言
DFT(Discrete Fourier Transformation)是數(shù)字信號分析與處理如圖形、語音及圖像等領(lǐng)域的重要變換工具,直接計算DFT的計算量與變換區(qū)間長度N的平方成正比。當(dāng)N較大時,因計算量太大,直接用DFT算法進(jìn)行譜分析和信號的實時處理是不切實際的。快速傅立葉變換(Fast Fourier Transformation,簡稱FFT)使DFT運(yùn)算效率提高1~2個數(shù)量級。其原因是當(dāng)N較大時,對DFT進(jìn)行了基4和基2分解運(yùn)算。FFT算法除了必需的數(shù)據(jù)存儲器ram和旋轉(zhuǎn)因子rom外,仍需較復(fù)雜的運(yùn)算和控制電路單元,即使現(xiàn)在,實現(xiàn)長點數(shù)的FFT仍然是很困難。本文提出的FFT實現(xiàn)算法是基于FPGA之上的,算法完成對一個序列的FFT計算,完全由脈沖觸發(fā),外部只輸入一脈沖頭和輸入數(shù)據(jù),便可以得到該脈沖頭作為起始標(biāo)志的N點FFT輸出結(jié)果。由于使用了雙ram,該算法是流型(Pipelined)的,可以連續(xù)計算N點復(fù)數(shù)輸入FFT,即輸入可以是分段N點連續(xù)復(fù)數(shù)數(shù)據(jù)流。采用DIF(Decimation In Frequency)-FFT和DIT(Decimation In Time)-FFT對于算法本身來說是無關(guān)緊要的,因為兩種情況下只是存儲器的讀寫地址有所變動而已,不影響算法的結(jié)構(gòu)和流程,也不會對算法復(fù)雜度有何影響。算法實現(xiàn)的可以是基2/4混合基FFT,也可以是純基4FFT和純基2FFT運(yùn)算。
傅立葉變換和逆變換
對于變換長度為N的序列x(n)其傅立葉變換可以表示如下:
[td]N
[td]nk
[/tr]
X(k)=DFT[x(n)]=[td]Σ[td]x(n)W[/tr]
[td]n=0[td][/tr]
式(1)
其中,W=exp(-2π/N)。
當(dāng)點數(shù)N較大時,必須對式(1)進(jìn)行基4/基2分解,以短點數(shù)實現(xiàn)長點數(shù)的變換。而IDFT的實現(xiàn)在DFT的基礎(chǔ)上就顯得較為簡單了:
式(2)
由式(2)可以看出,在FFT運(yùn)算模塊的基礎(chǔ)上,只需將輸入序列進(jìn)行取共軛后再進(jìn)行FFT運(yùn)算,輸出結(jié)果再取一次共軛便實現(xiàn)了對輸入序列的IDFT運(yùn)算,因子1/N對于不同的數(shù)據(jù)表示格式具體實現(xiàn)時的處理方式是不一樣的。IDFT在FFT的基礎(chǔ)上輸入和輸出均有一次共軛操作,但它們共用一個內(nèi)核,仍然是十分方便的。
基4和基2
基4和基2運(yùn)算流圖及信號之間的運(yùn)算關(guān)系如圖1所示:

(a)基4蝶形算法
(b)基2蝶形算法
以基4為例,令A(yù)=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;Wk3=c3+j×s3。分別代入圖1中的基4運(yùn)算的四個等式中有:
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)] 式(3)
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)] 式(4)
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)] 式(5)
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)] 式(6)
可以看出,式(3)至式(6)有多個公共項和類似項,這一點得到充分利用之后可以大大縮減基4和基2運(yùn)算模塊中的乘法器的個數(shù),如上面A‘至D’的四個等式中的這三對類似項:(r1×c1-i1×s1)與(i1×c1+r1×s1)、(r2×c2-i2×s2)與(i2×c2+r2×s2)、(r3×c3-i3×s3)與(i3×c3+r3×s3)以高于輸入數(shù)據(jù)率的時鐘進(jìn)行時分復(fù)用,最終可以做到只需要3個甚至1個復(fù)數(shù)乘法器便可以實現(xiàn)?;?運(yùn)算之所以采用圖1-(b)中的形式進(jìn)行基2運(yùn)算,是為了將基本模塊做成基4/2復(fù)用模塊,它對于N有著更大的適用性和可借鑒性。在基4、基2和基4/2模塊的基礎(chǔ)上,構(gòu)建基16、基8和基16/8模塊有著非常大的意義。
算法實現(xiàn)
傅立葉變換實現(xiàn)時首先進(jìn)行基2、基4分解,一般來說,如果算法使用基4實現(xiàn),雖然使用的資源多了一些,但速度上的好處足以彌補(bǔ)。如果資源充足,使用基16、基8或基16/8復(fù)用模塊,速度可以大大提高。一般FFT實現(xiàn)簡單框圖如圖2所示。

在圖2中,運(yùn)算模塊即為基2/4/8/16模塊或它們的復(fù)用模塊,Rom表中存儲的是N點旋轉(zhuǎn)因子表??刂颇K產(chǎn)生所有的控制信號,存儲器1和2的讀寫地址、寫使能、運(yùn)算模塊的啟動信號及因子表的讀地址等信號。當(dāng)然對于運(yùn)算模塊為基16/8復(fù)用模塊時,控制模塊就需要產(chǎn)生模式選擇信號,如對于運(yùn)算模塊是基4/2模塊時,該信號就決定了內(nèi)部運(yùn)算模塊是進(jìn)行基4運(yùn)算還是基2運(yùn)算。存儲器1作為當(dāng)前輸入標(biāo)志對應(yīng)輸入N點數(shù)據(jù)的緩沖器,存儲器2作為中間結(jié)果存儲器,用于存儲運(yùn)算模塊計算出的各Pass的結(jié)果。在圖中的各種地址、使能和數(shù)據(jù)的緊密配合下,經(jīng)過一定延時后輸出計算結(jié)果及其對應(yīng)指示標(biāo)志。圖2只是一定點或浮點的FFT實現(xiàn)模塊,如果是塊浮點運(yùn)算,則必須加入一個數(shù)據(jù)因子控制器,控制每遍運(yùn)算過程中的數(shù)據(jù)大小,并根據(jù)各個Pass的乘性因子之和的大小,對最終輸出進(jìn)行大小控制,以保證每段FFT運(yùn)算輸出增益一致。
外部輸入為N點數(shù)據(jù)段流和啟動信號(N點之間如無間隔,則每N數(shù)據(jù)點輸入一脈沖信號),一方面,外部數(shù)據(jù)存入存儲器1中,同時通過控制模塊的控制,讀出存儲器1中的前段N點數(shù)據(jù)和Rom表中的因子及相關(guān)控制信號送入運(yùn)算核心模塊進(jìn)行各個Pass的運(yùn)算,每個Pass的輸出都存入存儲器2中,最后一個Pass的計算結(jié)果存入存儲器2中,并在下一個啟動頭到來后,輸出計算結(jié)果。對圖2的實現(xiàn),除去運(yùn)算模塊,關(guān)鍵是各個Pass數(shù)據(jù)因子讀寫地址及控制信號的配合。
速度、資源和精度
假定輸入數(shù)據(jù)的速率為fin,則每數(shù)據(jù)的持續(xù)時間T=1/fin,運(yùn)算模塊的計算時鐘頻率為fa,對于N(N=2p,p即為Pass數(shù)目)點FFT計算時延與Pass數(shù)目直接相關(guān)。如果使用基2運(yùn)算不考慮控制開銷,純粹的計算時延為td=p×N×T×fin/fa。顯然在fa》p× fin時,在N點內(nèi)可完成FFT運(yùn)算。否則不能完成,即不能實現(xiàn)流型的變換。這在N很大且輸入數(shù)據(jù)速率較高時以FPGA實現(xiàn)幾乎是不可能的,而且內(nèi)部計算時鐘過高容易導(dǎo)致電路的工作不穩(wěn)定。設(shè)基2時的最小可流型工作運(yùn)算頻率為fa0,則使用基4實現(xiàn)流型的變換,計算時鐘fa= fa0就可以。而使用基8時計算時鐘fa= fa0便可完成,基16時為fa0的1/4。上面所討論的是純基運(yùn)算,當(dāng)N不為4的冪次方時(如N=2048=16×16×8,運(yùn)算模塊為基16/8復(fù)用模塊),而又希望使用較低倍的時鐘完成運(yùn)算時,圖2中的運(yùn)算模塊必然包括基4/2復(fù)用模塊(即基16/8復(fù)用模塊),這也就是前面提到復(fù)用模塊的主要用意。由上面的分析可以得出結(jié)論,如果計算使用的基越大,完成速度越快。
但是,使用基16/8模塊所使用的邏輯資源要比基4/2模塊多將近一倍,這是因為基16/8復(fù)用模塊是以基4模塊和基4/2復(fù)用模塊構(gòu)建而成。當(dāng)然,可以直接實現(xiàn)基16/8復(fù)用模塊,但用FPGA很難解決復(fù)雜度和成本問題。另外,如果流型運(yùn)算間隔比N點數(shù)據(jù)長度長一倍以上,可以考慮在較低的計算時鐘下使用基2運(yùn)算模塊實現(xiàn)流型FFT。
運(yùn)算結(jié)果的精度直接與計算過程中數(shù)據(jù)和因子位數(shù)(浮點算法)相關(guān),如果中間計算的位數(shù)、存儲數(shù)據(jù)位數(shù)和Rom表中的位數(shù)越大,輸出精度就越大。當(dāng)然,位數(shù)增大后邏輯運(yùn)算資源和存儲資源都會直線上升。
浮點、塊浮點和定點FFT
根據(jù)運(yùn)算過程中對數(shù)據(jù)位數(shù)取位和表示形式的不同,可以將FFT分為浮點FFT、塊浮點FFT和定點FFT。它們在實現(xiàn)時對于系統(tǒng)資源的要求是不同的,而且有著不同的適用范圍。
浮點FFT是基于數(shù)據(jù)表示為浮點的基礎(chǔ)之上的,即數(shù)據(jù)是由一純小數(shù)和一因子組成,輸入要轉(zhuǎn)成純小數(shù)和因子的浮點表示形式,所有計算過程中保存應(yīng)得計算結(jié)果大小,而輸出要變成所需大小的定點表示形式。只要因子位數(shù)足夠大,浮點FFT計算是不會溢出的。而定點則是所有計算過程中都是定點運(yùn)算,如果各個Pass的截位規(guī)則不適當(dāng),很容易出現(xiàn)溢出,必須要有溢出控制。塊浮點是介于它們之間的一種運(yùn)算機(jī)制,它是根據(jù)本Pass的輸入數(shù)據(jù)的大小,在計算之前進(jìn)行控制(數(shù)據(jù)上移一比特或下移一比特或乘以一特定因子),可以保證不溢出,但一般也需要溢出控制。
浮點運(yùn)算沒有溢出,信號平均信噪比高,但由于因子的運(yùn)算必然導(dǎo)致電路復(fù)雜,實現(xiàn)困難。定點運(yùn)算實現(xiàn)簡單,難以保證不溢出,需要統(tǒng)計得出合適的截位規(guī)則,否則溢出嚴(yán)重導(dǎo)致輸出結(jié)果錯誤。塊浮點由于每個Pass(包括最后輸出前)結(jié)束后有一統(tǒng)計控制過程,延時較大,但是可以保證不溢出而且電路又相對浮點來說簡單得多。
應(yīng)根據(jù)具體應(yīng)用的具體要求,選擇合適的FFT。如果要求精度,并且要解決頻域很高的單頻干擾,就必須使用浮點的FFT,使用數(shù)據(jù)位數(shù)很大的定點和塊浮點也能解決這個問題,但位數(shù)的確定十分困難。如果不要求高精度,邏輯資源和Rom比較緊張,可考慮定點運(yùn)算。如果輸入在頻域集中于幾個點上或者對精度要求一般,可以慢速處理,可以采用塊浮點運(yùn)算,就能夠保證這幾點的信噪比,而忽略其他點處的信噪比。



有你想看的精彩



至芯科技FPGA就業(yè)培訓(xùn)班——助你步入成功之路、9月23號北京中心開課、歡迎咨詢!
FPGA芯片在編程器燒錄器里的應(yīng)用
FPGA是什么(超級詳細(xì))






掃碼加微信邀請您加入FPGA學(xué)習(xí)交流群




歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!

點個在看你最好看




原文標(biāo)題:如何用FPGA實現(xiàn)FFT算法?

文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1650

    文章

    22217

    瀏覽量

    627758

原文標(biāo)題:如何用FPGA實現(xiàn)FFT算法?

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    何用FPGA實現(xiàn)4K視頻的輸入輸出與處理

    在游戲、影視和顯示領(lǐng)域,4K 已經(jīng)成為標(biāo)配。而今天,我們就來聊聊——如何用 FPGA 實現(xiàn) 4K 視頻的輸入輸出與處理。
    的頭像 發(fā)表于 10-15 10:47 ?1056次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>4K視頻的輸入輸出與處理

    25年11月上海FPGA算法實現(xiàn)與應(yīng)用技術(shù)高級研修分享

    最常用的算法,本課程將離散傅里葉變換的原理和實現(xiàn)過程進(jìn)行了詳細(xì)的分解和論述,同時對數(shù)字中頻處理涉及的許多概念和應(yīng)用場景進(jìn)行闡述,不僅幫助大家結(jié)合工程設(shè)計去深入了解算法,也為后續(xù)的課程學(xué)習(xí)建立良好
    發(fā)表于 10-11 11:55

    泰克示波器FFT功能詳解

    的原理、設(shè)置方法及典型應(yīng)用場景,助力高效使用這一強(qiáng)大工具。 ? 一、理解FFT:信號分析的“數(shù)學(xué)顯微鏡” 傅里葉變換的核心思想是:任何復(fù)雜信號均可分解為不同頻率的正弦波疊加。泰克示波器的FFT功能通過算法將時域波形數(shù)據(jù)轉(zhuǎn)換為
    的頭像 發(fā)表于 09-23 17:52 ?588次閱讀
    泰克示波器<b class='flag-5'>FFT</b>功能詳解

    Tektronix泰克MDO32示波器FFT功能使用指南

    應(yīng)用于信號失真分析、噪聲排查、電磁兼容性測試等場景。本文將詳細(xì)介紹MDO32示波器的FFT功能使用步驟、參數(shù)設(shè)置技巧及典型應(yīng)用案例,幫助用戶高效掌握這一關(guān)鍵功能。 ? 二、FFT功能基礎(chǔ) 1. 什么是FFT?
    的頭像 發(fā)表于 08-18 17:02 ?619次閱讀
    Tektronix泰克MDO32示波器<b class='flag-5'>FFT</b>功能使用指南

    DFT算法FFT算法的優(yōu)劣分析

    一概述 在諧波分析儀中,我們常常提到的兩個詞語,就是DFT算法FFT算法,那么一款功率分析儀/諧波分析儀采用DFT算法或者FFT
    的頭像 發(fā)表于 08-04 09:30 ?732次閱讀

    FPGA通信設(shè)計常見問答

    FFT(快速傅里葉變換)是離散傅里葉變換(DFT)的高效實現(xiàn)算法,它的核心作用是快速將信號從時域轉(zhuǎn)換到頻域,從而簡化信號分析和處理的過程。
    的頭像 發(fā)表于 07-21 16:05 ?2222次閱讀

    基于FPGA實現(xiàn)FOC算法之PWM模塊設(shè)計

    哈嘍,大家好,從今天開始正式帶領(lǐng)大家從零到一,在FPGA平臺上實現(xiàn)FOC算法,整個算法的框架如下圖所示,如果大家對算法的原理不是特別清楚的話
    的頭像 發(fā)表于 07-17 15:21 ?2945次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>FOC<b class='flag-5'>算法</b>之PWM模塊設(shè)計

    基于Matlab與FPGA的雙邊濾波算法實現(xiàn)

    前面發(fā)過中值、均值、高斯濾波的文章,這些只考慮了位置,并沒有考慮相似度。那么雙邊濾波來了,既考慮了位置,有考慮了相似度,對邊緣的保持比前幾個好很多,當(dāng)然實現(xiàn)上也是復(fù)雜很多。本文將從原理入手,采用Matlab與FPGA設(shè)計實現(xiàn)雙邊
    的頭像 發(fā)表于 07-10 11:28 ?3486次閱讀
    基于Matlab與<b class='flag-5'>FPGA</b>的雙邊濾波<b class='flag-5'>算法</b><b class='flag-5'>實現(xiàn)</b>

    基于FPGA的壓縮算法加速實現(xiàn)

    本設(shè)計中,計劃實現(xiàn)對文件的壓縮及解壓,同時優(yōu)化壓縮中所涉及的信號處理和計算密集型功能,實現(xiàn)對其的加速處理。本設(shè)計的最終目標(biāo)是證明在充分并行化的硬件體系結(jié)構(gòu) FPGA實現(xiàn)
    的頭像 發(fā)表于 07-10 11:09 ?1868次閱讀
    基于<b class='flag-5'>FPGA</b>的壓縮<b class='flag-5'>算法</b>加速<b class='flag-5'>實現(xiàn)</b>

    進(jìn)群免費(fèi)領(lǐng)FPGA學(xué)習(xí)資料!數(shù)字信號處理、傅里葉變換與FPGA開發(fā)等

    ~ 01、數(shù)字信號處理的FPGA實現(xiàn) 旨在講解前端數(shù)字信號處理算法的高效實現(xiàn)。首先概述了當(dāng)前的FPGA技術(shù)、器件以及用于設(shè)計最先進(jìn)DSP系
    發(fā)表于 04-07 16:41

    FPGA開發(fā)任務(wù)

    我想請人幫我開發(fā)一款基于FPGA的產(chǎn)品,把我寫好MATLAB代碼固化在FPGA中,實現(xiàn)算法加速和加密功能。有興趣的聯(lián)系我
    發(fā)表于 03-15 10:19

    PID控制算法的C語言實現(xiàn):PID算法原理

    在工業(yè)應(yīng)用中 PID 及其衍生算法是應(yīng)用最廣泛的算法之一,是當(dāng)之無愧的萬能算法,如果能夠熟練掌握 PID 算法的設(shè)計與實現(xiàn)過程,對于一般的研
    發(fā)表于 02-26 15:24

    EE-267:在SISD和SIMD SHARC處理器上實現(xiàn)就地FFT

    電子發(fā)燒友網(wǎng)站提供《EE-267:在SISD和SIMD SHARC處理器上實現(xiàn)就地FFT.pdf》資料免費(fèi)下載
    發(fā)表于 01-05 09:54 ?0次下載
    EE-267:在SISD和SIMD SHARC處理器上<b class='flag-5'>實現(xiàn)</b>就地<b class='flag-5'>FFT</b>

    Vivado中FFT IP核的使用教程

    本文介紹了Vidado中FFT IP核的使用,具體內(nèi)容為:調(diào)用IP核>>配置界面介紹>>IP核端口介紹>>MATLAB生成測試數(shù)據(jù)>>測試verilogHDL>>TestBench仿真>>結(jié)果驗證>>FFT運(yùn)算。
    的頭像 發(fā)表于 11-06 09:51 ?4853次閱讀
    Vivado中<b class='flag-5'>FFT</b> IP核的使用教程

    是否可以使用TLC320AIC3262片內(nèi)miniDSP_A進(jìn)行FFT變換對ADC采樣后的一組數(shù)據(jù)進(jìn)行FFT?

    是否可以使用TLC320AIC3262片內(nèi)miniDSP_A進(jìn)行FFT變換對ADC采樣后的一組數(shù)據(jù)進(jìn)行FFT,通過主控器(FPGA)通過SPI讀取轉(zhuǎn)換后的各階分量
    發(fā)表于 10-24 06:53