28335DSP的FFT算法時間

2021-01-14 Yi起DSP

最近在做課題過程中用到28335實現FFT算法,分析的數據是由AD高速採樣得來,為減輕CPU的負擔,保證實時性,AD採樣的數據通過DMA直接送到存儲器,通過AD完成採樣的EOC信號啟動DMA傳輸。經過多次傳輸,當採樣數據達到一定數量時,產生DMA中斷,算法就在該中斷函數內完成。整個方案的大致框架如下圖:

算法每次更新的數據量為90點,而算法處理的數據長度為128點,這是因為計算過程中需要數據重疊。數據採樣頻率約為54kHz,DMA中斷間隔即90點數據採樣的時間約為1.6ms,所以算法時間要小於1.6ms才能保證實時性。

 

算法內需要4次計算FFT,而FFT時間是整個算法最耗時的部分。因此,需要對FFT的算法時間進行測試。

 

FFT算法實現有2種方案,一種是直接根據FFT原理編寫代碼實現,另一種是利用TI公司的FFT庫函數實現。

 

第1種方案直接利用例程中的FFT代碼,如下圖,它是根據FFT算法原理利用3重循環實現的:

對照FFT算法流圖(下圖),可以看出,該代碼完全是按照FFT算法流圖的原理來做的(下圖為8點,課題中用的是128點): 

對該FFT算法的128點數據的處理時間測試,需要67206個機器時鐘(這似乎是DFT的算法次數,但分析代碼確實是FFT,為什麼需要這多時鐘周期?),而整個算法要用4次FFT,在系統時鐘150MHz的情況下,整個算法的FFT時間為:

4*67206*6.67ns = 1.793ms

該時間已經超出DMA中斷間隔時間,無法做到實時運算,從下圖的處理後曲線也可以看出,由於不能實時處理,結果存儲器的數據還沒得到完整的結果就被覆蓋,使算法結果錯誤。所以,這種情況下無法滿足算法的實時性。

第2種方案採用TI的FFT庫函數實現,庫函數利用壓縮算法實現FFT,使得計算效率得到了很大提高,庫函數的源碼在controlSUITE目錄下可以找到,基本都是採用彙編語言編寫,想了解細節的可以找來看看:

關於FFT庫函數的用法可以查看文檔C28x-FPU-LIB-UG.pdf,整個FPU庫除了FFT外,還有求IFFT和求幅值等函數,在使用過程中也有一些細節需要注意,如輸入數據是否對齊、處理結果存放緩衝區等。在工程中添加C28x_FPU_Lib.lib庫文件和FPU.h頭文件後,實現FFT就很簡單了。

在主程序做初始化:

在DMA中斷程序中調用FFT庫函數:

測試一次CFFT_f32( )函數的執行機器周期:


可以看到,CFFT庫函數計算128點FFT的機器周期為5926,整個算法的FFT時間為:

4*5926*6.67ns = 0.1581ms

不到第1種方案時間的十分之一。

 

所以,在實時性要求很高的情況下,建議採用庫函數計算FFT


相關焦點

  • 使用STM32 的DSP庫進行FFT變換
    (void);void dsp_asm_init(void);#endif /* End of module include.>* Email:heroxx@163.com* Date:2010-08-11* Description:This file showes how to use the dsp library in mdk project.
  • 第六講 DSP在雷達信號處理中的應用
    dsp可以利用硬體算術單元、片內存儲器、哈佛總線結構、專用尋址單元、流水處理技術等特有的硬體結構,高速完成fft、fir、複數乘加、相關、三角函數以及矩陣運算等數位訊號處理。因此,dsp非常適合雷達數位訊號處理算法的實現。 fft是雷達信號處理的重要工具。
  • 用FPGA實現FFT算法(圖)
    當n較大時,因計算量太大,直接用dft算法進行譜分析和信號的實時處理是不切實際的。快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 基於DSP的FFT算法實現
    基於DSP的FFT算法實現1、FFT的原理快速傅氏變換(FFT)是離散傅氏變換的快速算法,它是根據離散傅氏變換的奇、偶、
  • 基於MSP430系列微控制器的FFT算法實現
    實測結果顯示對一個信號周期256個採樣點的快速傅立葉變換分析,完成全部計算僅需要0.3 s的時間,前10次諧波的計算相對誤差低於千分之一。所研製的在供電質量監測系統完全滿足用戶要求。離散時間採樣的快速傅立葉變換FFT(fast Fouriertrans form)算法是目前最主要的諧波檢測和分析方法。FFT算法的實現可以採用專用晶片37—40、DSP晶片6—1141—44、FPGA晶片193— 207以及微控制器等。隨著集成電路製造技術和數字計算機技術的進步,微控制器晶片的功能和所能提供的邏輯資源越來越多。
  • DSP集成開發環境中的混合編程及FFT算法的實現
    前者可以脫離DSP晶片,在PC機上模擬DSP指令集與工作機制,主要用於前期算法實現和調試。後者實時運行在DSP晶片上,可以在線編制和調試應用程式。 除了特殊的運行時間支持庫函數外,任何調用函數和被C函數調用的函數都必須遵守這些規則。結合作者在編程中的實際情況和切身體會,提出在編程時要注意以下幾點:        (1) 必須保護任何被函數修正的專用寄存器。這些專用寄存器包括:AR1,AR6,AR72和堆棧指針(SP)。其中,如果對SP正常使用,則不必明顯的保存。
  • 通俗易懂的講解FFT的讓你快速了解FFT
    當然這都是以前的事情了,經過了系統的學習+2個星期的研究,自製了一個FFT的算法,不敢說速度上的優勢,但是個人認為是一種通俗易懂的實現方法。經過實際的VC++模擬實驗、和STM32跑的也很成功。 首先,要會FFT,就必須要對DFT有所了解,因為兩者之間本質上是一樣的。
  • 每日函數——fft
    fft快速傅立葉變換語法Y  = fft(X)Y  = fft(X
  • 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和FPGA的機器人聲控系統設計與實現
    工作流程是麥克風將人的語音信號轉化為模擬信號,在經過音頻晶片tlv320aic23量化轉化成數位訊號輸入dsp.dsp完成識別後,輸出動作指令。 fpga根據dsp輸入的動作指令產生正確的正反轉信號和準確的脈衝給步進電機驅動晶片,驅動晶片提供步進電機的驅動信號,控制步進電機的轉動。片外flash用於存儲系統程序和語音庫並完成系統的上電加載。
  • 基於DSP的數字掃描探針顯微鏡的硬體解決方案研究
    (3)由於需要較大的計算資源開銷並要運行一個複雜的非線性校正算法,該控制板需要一個處理能力強的處理器。 (4)存儲器及握手方式不夠理想。 系統設計思想 為了解決上述缺點,筆者給出了一種基於dsp的新型數字式spm系統的設計方案,新方案的系統框圖如圖2所示。
  • MATLAB實驗——FFT變換
    對任何想在工作中有效應用數字圖像處理技術的人來說,把時間用在學習和掌握博裡葉變換上是很有必要的。2 傅立葉(Fourier)變換的定義對於二維信號,二維Fourier變換定義為:逆變換:圖像的傅立葉變換與一維信號的傅立葉變換變換一樣,有快速算法,具體參見參考書目,有關傅立葉變換的快速算法的程序不難找到。實際上,現在有實現傅立葉變換的晶片,可以實時實現傅立葉變換。
  • 史上最簡單的FFT(快速傅立葉變換)
    FFT1 簡述FFT是專門用來求解多項式乘法的一個高效算法。總所周知,樸素的多項式乘法的時間複雜度是所以多項式乘法的瓶頸在於如果在更快的時間內把多項式轉換為點值表達式。這個就需要傅立葉變換了。3 複數複數是數學上一個很常見的概念,複數的特點是對負數進行開方。負數相加的規則是實部(x軸)和實部相加,虛部(y軸)和虛部相加。
  • 數字與信號處理實驗3 用FFT進行譜分析
    實驗三 用FFT進行譜分析                 一、實驗要求 進一步加深DFT 算法原理和基本性質的理解
  • 基於小波變換與DSP的實時音頻視頻處理系統
    將adv611接收來自saa7111的數字視頻信號進行壓縮,dsp將通過訪問adv611獲得壓縮數據;將adv611設置為解壓縮模式時,dsp將壓縮數據發給adv611進行解壓縮處理,而saa7111僅為adv611提供時鐘信號。 此外,為提高系統的集成度和靈活性。
  • 用C語言實現FFT算法
    /*****************fft programe*********************/#include typedef.h #include math.h本文引用地址:http://www.eepw.com.cn/article/150637.htmstruct compx
  • 快速傅立葉變換FFT在MATLAB中的實現
    對於傅立葉變換的類型:非周期連續信號採用傅立葉變化;周期連續信號採用傅立葉級數;非周期連續離散信號採用離散時間傅立葉變換;周期離散信號採用離散傅立葉級數。FFT是DFT的快速算法可以節省大量的計算時間,其本質仍然是DFT。
  • 利用FFT IP Core實現FFT算法
    大多數FPGA廠商都提供了可配置的邏輯核(Core)實現各種算法功能,其中包括FFT IP Core(智慧財產權核)。使用這些資源允許設計師將更多的時間和精力放在改善增加系統功能上,這無疑將大大減少設計風險及縮短開發周期。
  • 2019-2025年dsp晶片市場深度調查分析及發展前景研究報告
    《2019-2025年dsp晶片市場深度調查分析及發展前景研究報告》首先介紹了dsp晶片的背景知識,包括dsp晶片的相關概念、分類、應用、產業鏈結構、產業概述,國際市場動態分析,國內市場動態分析,宏觀經濟環境分析及經濟形勢對dsp晶片行業的影響,dsp晶片行業國家政策及規劃分析,dsp晶片產品技術參數,生產工藝技術,產品成本結構等;接著統計了中國主要企業
  • N為合數的FFT算法
    上面討論的以2為基(即N=2M)的時間抽選和頻率抽選FFT算法,由於具有程序簡單、 計算效率高、對存儲量要求不很高等優點,因而在實際中得到了最廣泛的應用。如果N不等於 2的冪2M,通常有兩種處理辦法:(1)用補零的辦法將x(n)延長為2M。