關於硬體實現FFT逆運算

2021-01-10 卿萃科技FPGA

前面的文章我們介紹了關於FFT的硬體實現。關於FFT的逆運算IFFT,其實就是將實現FFT的過程反過來執行就可以了。

在實現過程中要注意很多問題。

同 FFT一樣,效率問題。以2048點為例,根據理論值計算,計算一次2048點的IFFT的時間應為130us。在採用流水線的方式下,實部計算和虛部計算均採用兩塊RAM實現流水線。

結構如上圖。在這種方式下,FPGA的片上RAM會消耗很多。

為了節省RAM,可以採用一塊RAM的流水線方式。在實現過程中要注意對RAM操作的reading-during-write,之前的文章介紹過了。這種方式速度會降低一半。

最節省的方式是使用控制器方式,但速度更低。這裡不再介紹。

上圖所示的IFFT流程,存在大量的組合邏輯,時序遠遠不夠,所以應當在組合邏輯中加入寄存器提高速度。但是,寄存器流水線的級數又影響到了讀寫兩塊RAM的切換,從而影響計算效率,所以這裡值得商榷。

由於設計中RAM輸出端沒有使用REG,所以1處應該加入REG,提高速度,否則1處會出現時序違規,1處的組合邏輯延遲很大。

2處和3處也是值得深入考慮的地方,加法器的輸出到乘法器的輸入,以及乘法器的輸出再到加法器的輸入,均是大量的組合邏輯,設計中一定要注意,不能僅僅完成功能仿真就可以了,一定要在綜合工具下綜合一下,看看時序是否滿足。實踐中,這兩處均加入REG。

4處是否再加REG需要看綜合後的結果。根據實際分析,4處加REG會降低計算效率,讀RAM和寫RAM來不及切換,這是根據自己的設計得出的結果。

由於FFT計算過程用到乘法器,所以在IFFT中需要用到除法器。如何減少除法器使用的資源或者將除法器更改為其他邏輯實現,需要深入探討。

版權所有權歸 卿萃科技,轉載請註明出處

作者:卿萃科技ALIFPGA

原文地址:卿萃科技FPGA極客空間 微信公眾號

相關焦點

  • 用FPGA實現FFT算法(圖)
    快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 基於MSP430系列微控制器的FFT算法實現
    硬體乘法器模塊支持8/16位x8/16位有符號,或者無符號的乘法運算,並可以選擇「乘法與累加」功能。採用MSP430系列微控制器實現FFT算法具有超低功耗、低電壓工作、低成本、分析速度快等優點,它比採用專用晶片和DSP晶片價格便宜,比採用FPGA晶片容易實現。
  • 通俗易懂的講解FFT的讓你快速了解FFT
    相信網上現在有很多關於FFT的教程,我曾經也參閱了很多網上的教程,感覺都不怎麼通俗易懂。在基本上的研究FFT,並且通過編程的形式實現之後。我決定寫一篇通俗易懂的關於FFT的講解。因此我在接下來的敘述中儘量非常通俗細緻的講解。 本人最早知道傅立葉變換的時候是沉迷於音樂的頻譜跳動無法自拔,當時就很想做一個音樂頻譜顯示器。
  • 基於FPGA的FFT算法硬體實現
    基於FPGA的FFT算法硬體實現
  • 基2 FFT 算法的模塊化硬體實現與比較
    但不同的應用場合對 FFT 算法的實現有不同的特性要求。研究的主要熱點在於硬體資源的佔用量與運算速度[1-3]。而這兩者又是互相制衡的關係。所以有必要比較實現 FFT 算法的多種方案。基 2 算法具有算法簡單、時序清晰、在高速實時數據處理中不容易出錯的優點。所以本文簡要介紹了基 2 FFT 的算法化簡原理,設計實現了將 FFT 處理器劃分為通用化的三個模塊。
  • 基於DSP的FFT算法實現
    當N=1024點甚至更多的時候,需要N2=1048576次運算,在FFT中,利用WN的周期性和對稱性,把一個N項序列(設N=2k,k為正整數),分為兩個N/2項的子序列,每個N/2點DFT變換需要(N/2)2次運算,再用N次運算把兩個N/2點的DFT變換組合成一個N點的DFT變換。這樣變換以後,總的運算次數就變成N+2(N/2)2=N+N2/2。
  • 基於Verilog硬體描述語言的AES密碼算法實現
    目前,分組密碼算法AES以其高效率、低開銷、實現簡單等特點被廣泛應用於密碼模塊的研製。隨著計算機信息技術和超大規模集成電路技術的成熟與發展,通過硬體來實現密鑰模塊的內部運作,可保證在外界無密鑰的明文流動,能夠實現真正意義上的保密。此外,硬體實現還具有高速、高可靠性等特點。目前許多AES算法的硬體實現採用基於RAM查找表方式來實現算法中最關鍵的SubBytes部分。
  • 數學運算和它們的逆運算
    一級運算包括加法和減法。加法a+b=c,由此推出逆運算,減法c-a=b和減c-b=a。也可以把減法看做加法,即c+(-a)=b和c+(-b)=a。二級運算包括乘方和除法。乘方a×b=c,由此推出逆運算,除法c÷a=b和除法c÷b=a。也可以把除法看做乘法,即c×(1/a)=b和c×(1/b)=a。
  • matlab下實現FFT信號分析
    利用matlab做頻譜分析前我們需要了解分析過程中的一些基礎知識,matlab中的 fft 函數用法、fftshift 函數的用法函數 1  fft :作用:快速傅立葉變換。語法:Y = fft(X)Y = fft(X,n)Y = fft(X,n,dim)語法:Y = fft(X) 用快速傅立葉變換 (FFT) 算法計算 X 的離散傅立葉變換 (DFT)。
  • DSP集成開發環境中的混合編程及FFT算法的實現
    CCS一般工作在兩種模式下:軟體仿真器和與硬體開發板相結合的在線編程。前者可以脫離DSP晶片,在PC機上模擬DSP指令集與工作機制,主要用於前期算法實現和調試。後者實時運行在DSP晶片上,可以在線編制和調試應用程式。
  • 基於FPGA的高速卷積硬體設計及實現
    如果直接在時域進行卷積,卷積過程中所必須的大量乘法和加法運算,一定程度地限制了數據處理的實時性,不能滿足時效性強的工程應用。本文從實際工程應用出發,使用快速傅立葉變換(FFT)技術,探討卷積的高速硬體實現方法。
  • 用C語言實現FFT算法
    /*****************fft programe*********************/#include typedef.h #include math.h本文引用地址:http://www.eepw.com.cn/article/150637.htmstruct compx
  • 利用FFT IP Core實現FFT算法
    結合工程實踐,介紹了一種利用FFT IP Core實現FFT的方法,設計能同時對兩路實數序列進行256點FFT運算,並對轉換結果進行求模平方運算,且對數據具有連續處理的能力。
  • 開根號算法的證明——逆運算
    求一個整數的平方根,即開根號的計算方法如下圖所示:       由於我們知道開根號是平方的逆運算,所以我們在探討開根號算法時需要從平方的角度考慮
  • 基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計
    本系統採用了Altera公司的Cyclone II FPGA開發平臺和相應的開發工具Quartus II進行系統硬體部分的開發;利用Nios II IDE實現了語音識別算法的編譯、連結、調試和運行;同時還應用了Altera公司獨具特色的C2H加速工具,實現了語音算法程序的硬體加速,使系統性能得到了明顯的提升。
  • 固定幾何結構的FFT算法及其FPGA實現
    FFT的實現方法也多種多樣,可以用軟體實現,也可以用硬體實現,用軟體在PC機或工作站上實現則計算速度很慢。一般多結合具體系統用硬體實現。例如用單片機或DSP實現。但是速度仍然很慢,難以與快速的A/D器件匹配。在雷達信號處理領域主要追求的目標是速度,即實時性的要求非常高。針對這種快速信號處理的要求及FPGA器件的特點,本文採用的是一種基2固定幾何結構的FFT算法。
  • 使用STM32 的DSP庫進行FFT變換
    _64_stm32(lBUFOUT, lBUFIN, NPT);#endif#ifdef NPT_256 cr4_fft_256_stm32(lBUFOUT, lBUFIN, NPT);#endif#ifdef NPT_1024 cr4_fft_1024_stm32(lBUFOUT, lBUFIN, NPT);#endif
  • 基於FPGA IP核的FFT實現與改進
    FFT運算複雜,需要大量的存儲器和運算單元,其硬體實現平臺多種多樣。DSP需要外置存儲器和特定接口,限制了運算速度。ASIC雖能滿足速度要求,但其硬體電路複雜、可擴展性差、且價格昂貴。FPGA具有陝速並行運算、高集成度、低功耗等特點,且具有豐富的IP核資源,方便調用,適合FFT算法的實現。
  • LTE系統中FFT的實現
    對於實時性要求很強的信號處理來說,運算速度對整個處理的影響是顯而易見的。因為FFT擁有很高的運算能力,使其在無線通信和數字通信、高速圖像處理、匹配濾波等領域得到極為廣泛的應用。而X(K)共有N個點,所以完成整個DFT運算需要進行N2次複數乘法和N(N-1)次複數加法運算,當N很大時,運算量相當可觀。然而對於實時性很強的信號處理來說,如滿足其要求,運算速度就太高了。利用旋轉因子WNkn的對稱性、周期性和可約性,可以使DFT運算中的有些項合併,將長序列的DFT分解為幾個短序列的DFT,從而大大減少運算次數。FFT算法可以分為時間抽取法和頻域抽取法兩大類。
  • 利用FPGA實現的FFT變換設計
    快速傅立葉變換(FFT)算法的提出,使得數位訊號處理的運算時間上面縮短了好幾個數量級。因此對FFT算法及其實現方法的研究具有很強的理論和現實意義。本文引用地址:http://www.eepw.com.cn/article/266000.htm  1 FFT算法及其實現方法  現場可編程門陣列FPGA是一種可編程使用的信號處理器件,其運算速度高,內置高速乘法器可實現複雜累加乘法運算;同時其存儲量大,無需外接存儲器就可實現大量數據運算;而且算法實現簡單,通過VHDL程式語言可輕鬆實現功能開發