基於改進的CORDIC算法的FFT復乘及其FPGA實現

2020-12-17 電子產品世界

FFT(快速傅立葉變換)在無線通信、語音識別、圖像處理和頻譜分析等領域有著廣泛應用。在FFT運算中,核心操作是蝶形運算,而蝶形運算的主要操作是向量旋轉,實現向量旋轉可用複數乘法運算來實現,但複數乘耗費了FFT運算中大量的乘法器資源。CORDIC算法只需簡單的移位與加減運算就能實現向量旋轉,具有使用資源少、硬體規模小等優勢。因此在FFT蝶形運算中用其代替傳統FFT運算中的複數乘法器,可以獲得更好的性能。但傳統CORDIC算法中每次CORDIC迭代方向需由剩餘角度的計算來確定,影響了工作速度。為此,本文根據定點FFT復乘中旋轉因子的旋轉方向可預先確定的特點,對CORDIC算法做了一些改進,在節省資源的同時保證了工作速度。
1 CORDIC算法原理
假設直角坐標系中有一向量A(Xa,Ya),逆時針旋轉?茲角度後得到另一個向量B(Xb,Yb),這個過程可用如下矩陣表示:


本文引用地址:http://www.eepw.com.cn/article/191111.htm

針對這一特點,可在CORDIC算法上做一點改進,把旋轉因子所對應的CORDIC旋轉係數預先存在ROM中(人工計算旋轉係數比較麻煩,可用MATLAB編一段程序來計算,並把旋轉係數存為.mif文件以便ROM初始化),而不是把旋轉因子角度預先存在ROM中。這樣,在進行CORDIC運算時,直接從ROM中取出旋轉係數,從而減少計算Zi來確定下一步旋轉方向的步驟,減少CORDIC模塊設計的複雜性,提高了運算速度,並且旋轉係數不比旋轉因子角度佔用的ROM資源多。另外由於旋轉因子需要進行0°、-90°或+90°三種預旋轉,所以預旋轉還要分配兩位二進位數,這樣存儲旋轉係數的ROM就為18位的ROM。
改進的CORDIC算法結構如圖1所示,所有旋轉因子所對應的CORDIC旋轉係數都存儲在ROM中,通過地址產生器的控制實現序列與相應的旋轉因子的復乘運算。與傳統CORDIC算法相比去掉了預旋轉角與已旋轉角之差的計算來確定下一次旋轉方向的結構,不但增加了係數寄存器模塊,而且總體上結構更為簡單。此CORDIC算法還採用流水線結構提高了運算的速度,從當前VLSI的發展趨勢上來看,晶片內的門資源相對富裕,對流水線CORDIC的實現規模約束很小。此外,流水線CORDIC不存在迭代式CORDIC的反饋迴路,使得單元結構更加規則,有利於VLSI實現。


相關焦點

  • 基於FPGA的CORDIC算法的改進及實現
    若用傳統的乘、除等計算方法,需要佔用大量的硬體資源,甚至算法是難以實現的,這樣就不能滿足設計者的要求。CORDIC算法正是由此產生的,它僅在硬體電路上用到了移位和加/減,大大節約了硬體資源,使得這些算法在硬體上可以得到較好地實現,從而滿足設計者的要求。根據它的迭代原理,CORDIC單元可以用流水線結構表示,使向量旋轉並行處理,大大加快了蝶形運算的速度[1]。
  • 基於CORDIC改進算法的DDS設計
    將基於改進的並行流水結構的CORDIC算法作為IP應用於高端DDS晶片中,同時利用Matlab的M語言進行仿真與調試,可以直觀地看到該改進算法的輸出波形。關鍵詞: 直接數字頻率合成;CORDIC算法;Matlab 傳統DDS是由美國學者Tierney 等提出,採用查找表結構實現,很難滿足數位訊號處理領域中高精度、高解析度、實時運算的要求。而採用基於CORDIC算法的DDS結構可以很容易地滿足這些要求,且易於採用流水線技術,因此這一技術越來越多的用於雷達等電子系統中[1]。
  • Cordic算法(sinx,cosx)的Verilog實現
    該算法通過基本的加和移位運算代替乘法運算,使得矢量的旋轉和定向的計算不再需要三角函數、乘法、開方、反三角、指數等函數【2】。為什麼要用cordic算法?首先根據上述的解釋,我們可以看出:cordic算法的最大特點是使用加減法和移位操作實現初等函數的計算。
  • 基於CORDIC 2FSK調製器的FPGA設計
    提出一種基於流水線CORDIC算法的2FSK調製器的FPGA實現方案,可有效地節省FPGA的硬體資源,提高運算速度。最後,給出該方案的硬體測試結果,驗證了設計的正確性。0 引言 頻移鍵控(FSK)是用不同頻率的載波來傳送數位訊號,並用數字基帶信號控制載波信號的頻率。
  • 基於CORDIC算法和FPGA的數字頻率校正的實現
    打開APP 基於CORDIC算法和FPGA的數字頻率校正的實現 佚名 發表於 2010-11-16 10:05:31   頻偏校正電路中通常需要根據給定相位產生餘弦信號和正弦信號,其中最重要的實現技術是CORDIC (Coordinate Rotation Digital Computer,坐標旋轉數字計算機)算法。本文將詳細分析CORDIC算法的原理及其FPGA實現方法。
  • 基於FPGA IP核的FFT實現與改進
    驗證結果表明,系統性能良好,改進效果明顯。本文引用地址:http://www.eepw.com.cn/article/201610/306475.htmFFT是離散傅立葉變換(DFT)的一種快速算法,被廣泛應用於頻譜分析、音頻編碼、圖像處理等數位訊號處理領域。FFT運算複雜,需要大量的存儲器和運算單元,其硬體實現平臺多種多樣。DSP需要外置存儲器和特定接口,限制了運算速度。
  • 基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解
    基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解 工程師青青 發表於 2018-07-16 18:22:00 基於FFT算法的電力系統諧波檢測裝置,大多採用DSP晶片設計。
  • 基於FPGA的可擴展高速FFT處理器的設計與實現
    摘 要:本文提出了基於FPGA實現傅立葉變換點數可靈活擴展的流水線FFT處理器的結構設計以及各功能模塊的算法實現,包括高組合數FFT算法的流水線實現結構、級間混序讀/寫RAM地址規律、短點數FFT陣列處理結構以及補碼實現CORDIC算法的流水線結構等。
  • 基於FPGA實現的FFT插值正弦波頻率估計
    文獻給出了在高斯白噪聲中對正弦波信號頻率進行最大似然估計算法,該算法能夠達到卡拉美-羅限(CRB),但計算量大,實現困難。FFT頻率估計方法具有速度快、便於實時處理的特性而得到了廣泛應用。但FFT頻率估計方法得到的是離散頻率值,當信號頻率與FFT離散頻率不重合時,由於FFT的「柵欄」效應,信號的實際頻率應位於兩條譜線之間。
  • FPGA基於CORDIC算法的求平方實現
    CORDIC是在沒有專用乘法器(最小化門數量)情況下,一組完成特定功能的算法,包括平方、超越、Log、sin/cos/artan。
  • FFT實時譜分析系統的FPGA設計和實現
    摘要: 採用按時間抽選的基4原位算法和坐標旋轉數字式計算機(CORDIC)算法實現了一個FFT實時譜分析系統。其中,衰減限幅模塊負責對數據進行衰減及限幅壓縮處理;雙口RAM負責存儲外部輸入的原始數據及經過蝶形運算後的中間數據;四點FFT模塊完成4點DFT運算;地址控制模塊負責產生讀地址、寫地址、寫使能信號以及相關模塊的啟動、控制信號,是FFT系統的控制核心;復乘運算模塊是系統運算的核心部分,採用CORDIC算法實現;旋轉因子產生器產生復乘運算中的旋轉因子的角度數據;倒序模塊實現頻譜正常順序輸出
  • 3G系統中AGC的FPGA設計實現
    IF信號可以經過agc控制算法處理後控制VGA的增益。agc增益控制算法在數字部分來實現,在本設計中,agc電路可以有效提高鏈路的動態範圍(+25~-105 dBm),提高ADC輸出的SNR,以使DSP能更容易地實現Dw-PTS同步。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 基於Verilog的Cordic算法實現
    任何適合產品實現的算法,都是將簡易實現作為第一目標。CORDIC算法是建立在適應性濾波器、FFT、解調器等眾多應用基礎上計算超越函數的方法。
  • 基於FPGA的可配置FFT_IFFT處理器的設計與實現
    式(4) 表明首先對X[k] 取共軛, 然後對其進行FFT變換, 對其結果再取一次共軛, 乘因子1/N, 這樣就實現了IFFT 與FFT 處理模塊的復用。OFDM數字基帶數據流需要高速連續處理[3], 故FFT 處理系統在輸入、輸出均採用了桌球處理, 共需要4 組存儲單元,一組存儲單元需要4 塊RAM;RAM 地址產生單元主要生成存儲單元寫入及讀出數據的地址, 數據選擇模塊主要完成了桌球操作RAM 的數據選擇;ROM 及其地址產生單元主要在控制單元的控制下將旋轉因子送入蝶形單元, 配置單元控制不同點數的數據流操作及其相應地址配置。
  • 利用FFT IP Core實現FFT算法
    大多數FPGA廠商都提供了可配置的邏輯核(Core)實現各種算法功能,其中包括FFT IP Core(智慧財產權核)。使用這些資源允許設計師將更多的時間和精力放在改善增加系統功能上,這無疑將大大減少設計風險及縮短開發周期。
  • 基於CORDIC算法的32位浮點三角超越函數之正餘弦函數的FPGA實現
    最終在Altera公司NiosⅡ處理器中通過增加自定義指令的方式完成了硬體實現。因此,設計並實現浮點三角超越函數是非常重要的。硬體實現的超越函數算法,按照數學公式和對應的實現方式的不同,可以分為查表法、多項式近似法、基於查表的多項式結合方法、有理數近似和逐位法五類。經過對這些算法進行分析和比較,本文選擇 CORDIC作為超越函數的算法,並用Altera公司的CycloneⅡ晶片完成硬體實現。
  • 基於改進的LM算法的可見光定位研究
    為解決以上問題,本文提出了一種基於改進的Levenberg-Markuardt算法的可見光定位方法,該方法可以高效的利用有效冗餘光源信息,同時以二階收斂速度獲得全局收斂解。其次,針對算法的非負參數4 總結算法方面,本文提出基於改進LM算法的可見光定位方法相比於神經網絡,理論上擁有更好的靈活性與魯棒性,而相比於啟發式算法,實際中
  • STM32F103 如何實現 FFT?
    關於 Cortex M4 的信號處理本文暫不進行闡述,相反本文的對象是 Cortex M3 ,基於 STM32F103 的 FFT,而在上述圖中,我們看到針對於 Cortex M3 來說,是不帶 FPU 以及 DSP 的,那有如何來進行 FFT 呢?FFT 的提出在數位訊號處理中常常需要使用到離散傅立葉變換(DFT),從而能夠獲取到信號的頻域特徵。
  • 分分鐘看懂CORDIC算法
    最近出於項目需要,對CORDIC算法深入學習下。