1、傅里葉變換
傅里葉變換可以將一個信號從時域變換到頻域。時域信號在經過傅立葉變換的分解之后,變為了不同正弦波信號的疊加,我們再去分析這些正弦波的頻率,可以將一個信號變換到頻域。有些信號在時域上是很難看出什么特征的,但是如果變換到頻域之后,就很容易看出特征了。這就是很多信號分析采用FFT變換的原因。
2、離散傅里葉變換
離散傅里葉變換作為信號處理中最基本和最常用的運算,在信號處理領域占有基礎性的地位,如果直接按照離散傅里葉變換的公式進行計算,求出N點X(k)需要N^2次復數運算、N(N-1)次復數加法,當N很大時,運算量是非常大的,這對于實時處理是無法接受的。
3、FFT算法
傅里葉快速算法的提出,使傅里葉變換成為一種真正實用的算法。根據傅立葉變換的對稱性和周期性,我們可以將DFT運算中有些項合并。 在計算機上進行的DFT,使用的輸入值是時域的信號值,輸入采樣點的數量決定了轉換的計算規模。變換后的頻譜輸出包含同樣數量的采樣點,但是其中有一半的值是冗余的,通常不會顯示在頻譜中,所以真正有用的信息是N/2+1個點。FFT算法的原理是通過許多小的更加容易進行的變換去實現大規模的變換,降低了運算要求,提高了與運算速度。FFT不是DFT的近似運算,它們完全是等效的,FFT的過程大大簡化了在計算機中進行DFT的過程。
4、程序流程
程序流程設計中首先產生測試信號,接著確定FFT基和旋轉因子,然后進行FFT和FFT逆變換運算,最后輸出FFT結果
5、數字信號處理庫
本實驗中的FFT算法是基于TI提供的數字信號處理庫完成的。 DSPLIB 包含優化的、C語言可調用的通用信號處理例程,用于計算密集型實時應用程序。 調用這些例程的運行速度比直接用C語言編寫的等效代碼快得多,可以縮短應用程序開發時間。實驗中使用的是 dsplib_c674x_3_4_0_0 。
6、dsplib_c674x_3_4_0_0
在CCS5.5 的安裝路徑安裝DSPLIB后,會有相應的文件夾出現,包含組件庫、頭文件、測試示例和源碼等。
7、函數源碼
FFT運算函數
程序使用DSPLIB 的庫來進行FFT運算,調用的程序源碼和使用說明可以安裝DSPLIB后 查看。
調用的FFT函數中:
第一個參數是樣本中FFT 的長度;
第二個參數是指向數據輸入的指針;
第三個參數是指向復雜旋轉因子的指針;
第四個參數是指向復雜輸出數據的指針;
第五個參數是指向包含64 個條目的位反轉表的指針。如果樣本的FFT長度可以表示為 4 的冪;
第六個參數是4,否則 第六個參數是 2 ;
第五個參數是從主FFT開始的樣本中的子 FFT偏移索引 。;
第六個參數是樣本中主FFT的大小。
FFT逆變換函數
程序使用DSPLIB 的庫來進行FFT逆變換,調用的程序源碼和使用說明可以安裝DSPLIB后查看。
調用的IFFT函數中:
第一個參數是樣本中FFT 的長度;
第二個參數是指向數據輸入的指針;
第三個參數是指向復雜旋轉因子的指針;
第四個參數是指向復雜輸出數據的指針;
第五個參數是指向包含64 個條目的位反轉表的指針 ;
如果樣本的FFT長度可以表示為 4 的冪,第六個參數是4,否則第六個參數是2 ;
第七個參數是從主FFT開始的復雜樣本中的子FFT偏移索引 ;
第八個參數是樣本中主FFT的大小。
8、二進制位翻轉
FFT和FFT 逆變換函數中的第五個參數brev是指向包含64個表項的位反轉表的指針,因此程序中需要提供64個表項,程序中的位反向表是計算出來的,可以通過代碼提前轉換的。 采用位反轉的原因是因為FFT算法的蝶形內部兩點交叉使數據以反轉的方式輸出而不是數字反轉順序。
二進制位翻轉表的原理
首先確認二進制數的位數,64個數只需要有6位的二進制位數;
接著將二進制數分成兩部分,前五位一部分,最后一位一部分;
最后進行二進制翻轉,把最后一位放到最高位,剩下的五位進行翻轉依次放入。
數組內存放的依次是0~63的二進制翻轉結果,我們可以來看一個例子,
(點擊鼠標)以數字5為例,(點擊鼠標)轉換為二進制數是000101
(點擊鼠標)接著進行二進制翻轉,將“00010”看為一個部分,“1”看為一個部分,那么將“1”放到第一位,然后將后面的數據翻轉過來進行放置即可
(點擊鼠標)最后進行十六進制轉換得到0x28,所以在數組的第6個數字為0x28。
三、操作現象
導入工程,選擇Demo文件夾下的對應工程
編譯工程,生成可執行文件
將CCS連接實驗箱并加載程序
程序加載完成后點擊運行程序
運行程序后,程序執行完成后會在斷點處停下。
點擊"Tools->Graph->Single Time"選擇單時域信號圖,在彈出的界面設置相關參數,可查看DSP計算的FFT結果。
點擊"Tools->Graph->FFT Magnitude",在彈出的界面設置相關參數,可查看CCS計算的FFT結果。
對比后,可發現CCS和DSP計算的FFT結果相同,
實驗結束后,點擊紅色按鈕退出CCS與實驗箱的連接,最后實驗箱斷電即可。
-
正弦波
+關注
關注
11文章
651瀏覽量
56284 -
二進制
+關注
關注
2文章
803瀏覽量
42151 -
DSP芯片
+關注
關注
9文章
152瀏覽量
30571 -
數字信號處理器
+關注
關注
5文章
478瀏覽量
27735 -
傅里葉變換
+關注
關注
6文章
442瀏覽量
43021
發布評論請先 登錄
【創龍TMS320C6748開發板試用】+ 官方FFT測試與CCS波形查看功能
FFT 算法的一種 FPGA 實現
如何在FPGA上實現硬件上的FFT算法
請問怎么利用TI提供的FFT的匯編算法?
基于CCS的DSP算法仿真實驗設計
用FPGA實現FFT算法

用C語言實現FFT算法
淺談FFT算法原理 基于FPGA的FFT算法的硬件實現

評論