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

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

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

如何實(shí)現(xiàn)FFT算法并通過CCS圖形窗口查看結(jié)果?

冬至子 ? 來源:創(chuàng)龍教儀-木江鵬 ? 作者:創(chuàng)龍教儀-木江鵬 ? 2023-09-21 14:38 ? 次閱讀

1、傅里葉變換

傅里葉變換可以將一個(gè)信號(hào)從時(shí)域變換到頻域。時(shí)域信號(hào)在經(jīng)過傅立葉變換的分解之后,變?yōu)榱瞬煌也ㄐ盘?hào)的疊加,我們?cè)偃シ治鲞@些正弦波的頻率,可以將一個(gè)信號(hào)變換到頻域。有些信號(hào)在時(shí)域上是很難看出什么特征的,但是如果變換到頻域之后,就很容易看出特征了。這就是很多信號(hào)分析采用FFT變換的原因。

2、離散傅里葉變換

離散傅里葉變換作為信號(hào)處理中最基本和最常用的運(yùn)算,在信號(hào)處理領(lǐng)域占有基礎(chǔ)性的地位,如果直接按照離散傅里葉變換的公式進(jìn)行計(jì)算,求出N點(diǎn)X(k)需要N^2次復(fù)數(shù)運(yùn)算、N(N-1)次復(fù)數(shù)加法,當(dāng)N很大時(shí),運(yùn)算量是非常大的,這對(duì)于實(shí)時(shí)處理是無法接受的。

image.png

3、FFT算法

傅里葉快速算法的提出,使傅里葉變換成為一種真正實(shí)用的算法。根據(jù)傅立葉變換的對(duì)稱性和周期性,我們可以將DFT運(yùn)算中有些項(xiàng)合并。 在計(jì)算機(jī)上進(jìn)行的DFT,使用的輸入值是時(shí)域的信號(hào)值,輸入采樣點(diǎn)的數(shù)量決定了轉(zhuǎn)換的計(jì)算規(guī)模。變換后的頻譜輸出包含同樣數(shù)量的采樣點(diǎn),但是其中有一半的值是冗余的,通常不會(huì)顯示在頻譜中,所以真正有用的信息是N/2+1個(gè)點(diǎn)。FFT算法的原理是通過許多小的更加容易進(jìn)行的變換去實(shí)現(xiàn)大規(guī)模的變換,降低了運(yùn)算要求,提高了與運(yùn)算速度。FFT不是DFT的近似運(yùn)算,它們完全是等效的,F(xiàn)FT的過程大大簡化了在計(jì)算機(jī)中進(jìn)行DFT的過程。

image.png

4、程序流程

程序流程設(shè)計(jì)中首先產(chǎn)生測試信號(hào),接著確定FFT基和旋轉(zhuǎn)因子,然后進(jìn)行FFT和FFT逆變換運(yùn)算,最后輸出FFT結(jié)果

image.png

5、數(shù)字信號(hào)處理庫

本實(shí)驗(yàn)中的FFT算法是基于TI提供的數(shù)字信號(hào)處理庫完成的。 DSPLIB 包含優(yōu)化的、C語言可調(diào)用的通用信號(hào)處理例程,用于計(jì)算密集型實(shí)時(shí)應(yīng)用程序。 調(diào)用這些例程的運(yùn)行速度比直接用C語言編寫的等效代碼快得多,可以縮短應(yīng)用程序開發(fā)時(shí)間。實(shí)驗(yàn)中使用的是 dsplib_c674x_3_4_0_0 。

6、dsplib_c674x_3_4_0_0

在CCS5.5 的安裝路徑安裝DSPLIB后,會(huì)有相應(yīng)的文件夾出現(xiàn),包含組件庫、頭文件、測試示例和源碼等。

image.png

7、函數(shù)源碼

FFT運(yùn)算函數(shù)

程序使用DSPLIB 的庫來進(jìn)行FFT運(yùn)算,調(diào)用的程序源碼和使用說明可以安裝DSPLIB后 查看。

調(diào)用的FFT函數(shù)中:

第一個(gè)參數(shù)是樣本中FFT 的長度;

第二個(gè)參數(shù)是指向數(shù)據(jù)輸入的指針;

第三個(gè)參數(shù)是指向復(fù)雜旋轉(zhuǎn)因子的指針;

第四個(gè)參數(shù)是指向復(fù)雜輸出數(shù)據(jù)的指針;

第五個(gè)參數(shù)是指向包含64 個(gè)條目的位反轉(zhuǎn)表的指針。如果樣本的FFT長度可以表示為 4 的冪;

第六個(gè)參數(shù)是4,否則 第六個(gè)參數(shù)是 2 ;

第五個(gè)參數(shù)是從主FFT開始的樣本中的子 FFT偏移索引 。;

第六個(gè)參數(shù)是樣本中主FFT的大小。

image.png

FFT逆變換函數(shù)

程序使用DSPLIB 的庫來進(jìn)行FFT逆變換,調(diào)用的程序源碼和使用說明可以安裝DSPLIB后查看。

調(diào)用的IFFT函數(shù)中:

第一個(gè)參數(shù)是樣本中FFT 的長度;

第二個(gè)參數(shù)是指向數(shù)據(jù)輸入的指針;

第三個(gè)參數(shù)是指向復(fù)雜旋轉(zhuǎn)因子的指針;

第四個(gè)參數(shù)是指向復(fù)雜輸出數(shù)據(jù)的指針;

第五個(gè)參數(shù)是指向包含64 個(gè)條目的位反轉(zhuǎn)表的指針 ;

如果樣本的FFT長度可以表示為 4 的冪,第六個(gè)參數(shù)是4,否則第六個(gè)參數(shù)是2 ;

第七個(gè)參數(shù)是從主FFT開始的復(fù)雜樣本中的子FFT偏移索引 ;

第八個(gè)參數(shù)是樣本中主FFT的大小。

image.png

8、二進(jìn)制位翻轉(zhuǎn)

FFT和FFT 逆變換函數(shù)中的第五個(gè)參數(shù)brev是指向包含64個(gè)表項(xiàng)的位反轉(zhuǎn)表的指針,因此程序中需要提供64個(gè)表項(xiàng),程序中的位反向表是計(jì)算出來的,可以通過代碼提前轉(zhuǎn)換的。 采用位反轉(zhuǎn)的原因是因?yàn)镕FT算法的蝶形內(nèi)部兩點(diǎn)交叉使數(shù)據(jù)以反轉(zhuǎn)的方式輸出而不是數(shù)字反轉(zhuǎn)順序。

image.png

二進(jìn)制位翻轉(zhuǎn)表的原理

首先確認(rèn)二進(jìn)制數(shù)的位數(shù),64個(gè)數(shù)只需要有6位的二進(jìn)制位數(shù);

接著將二進(jìn)制數(shù)分成兩部分,前五位一部分,最后一位一部分;

最后進(jìn)行二進(jìn)制翻轉(zhuǎn),把最后一位放到最高位,剩下的五位進(jìn)行翻轉(zhuǎn)依次放入。

image.png

數(shù)組內(nèi)存放的依次是0~63的二進(jìn)制翻轉(zhuǎn)結(jié)果,我們可以來看一個(gè)例子,

(點(diǎn)擊鼠標(biāo))以數(shù)字5為例,(點(diǎn)擊鼠標(biāo))轉(zhuǎn)換為二進(jìn)制數(shù)是000101

(點(diǎn)擊鼠標(biāo))接著進(jìn)行二進(jìn)制翻轉(zhuǎn),將“00010”看為一個(gè)部分,“1”看為一個(gè)部分,那么將“1”放到第一位,然后將后面的數(shù)據(jù)翻轉(zhuǎn)過來進(jìn)行放置即可

(點(diǎn)擊鼠標(biāo))最后進(jìn)行十六進(jìn)制轉(zhuǎn)換得到0x28,所以在數(shù)組的第6個(gè)數(shù)字為0x28。

image.png

三、操作現(xiàn)象

導(dǎo)入工程,選擇Demo文件夾下的對(duì)應(yīng)工程

編譯工程,生成可執(zhí)行文件

將CCS連接實(shí)驗(yàn)箱并加載程序

程序加載完成后點(diǎn)擊運(yùn)行程序

運(yùn)行程序后,程序執(zhí)行完成后會(huì)在斷點(diǎn)處停下。

點(diǎn)擊"Tools->Graph->Single Time"選擇單時(shí)域信號(hào)圖,在彈出的界面設(shè)置相關(guān)參數(shù),可查看DSP計(jì)算的FFT結(jié)果。

點(diǎn)擊"Tools->Graph->FFT Magnitude",在彈出的界面設(shè)置相關(guān)參數(shù),可查看CCS計(jì)算的FFT結(jié)果。

對(duì)比后,可發(fā)現(xiàn)CCS和DSP計(jì)算的FFT結(jié)果相同,

實(shí)驗(yàn)結(jié)束后,點(diǎn)擊紅色按鈕退出CCS與實(shí)驗(yàn)箱的連接,最后實(shí)驗(yàn)箱斷電即可。

image.png

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

    關(guān)注

    11

    文章

    647

    瀏覽量

    55506
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    795

    瀏覽量

    41697
  • DSP芯片
    +關(guān)注

    關(guān)注

    9

    文章

    149

    瀏覽量

    30011
  • 數(shù)字信號(hào)處理器

    關(guān)注

    5

    文章

    469

    瀏覽量

    27371
  • 傅里葉變換
    +關(guān)注

    關(guān)注

    6

    文章

    442

    瀏覽量

    42649
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于FPGA的超高速FFT硬件實(shí)現(xiàn)

    是處理數(shù)字信號(hào)如圖形、語音及圖像等領(lǐng)域的重要變換工具。快速傅里葉變換(FFT)是DFT的快速算法。FFT算法的硬件
    發(fā)表于 06-14 00:19

    【創(chuàng)龍TMS320C6748開發(fā)板試用】+ 官方FFT測試與CCS波形查看功能

    *150*(i/Fs))+15*sin(2*PI*350*(i/Fs));如上方法,再建一個(gè)窗口,查看幅值。一定是與matlab的結(jié)果相同的。以上就是對(duì)官方FFT測試的
    發(fā)表于 10-14 23:10

    FFT 算法的一種 FPGA 實(shí)現(xiàn)

    FPGA實(shí)現(xiàn)FFT 處理器的硬件結(jié)構(gòu)。接收單元采用乒乓RAM 結(jié)構(gòu), 擴(kuò)大了數(shù)據(jù)吞吐量。中間數(shù)據(jù)緩存單元采用雙口RAM , 減少了訪問RAM 的時(shí)鐘消耗。計(jì)算單元采用基 2 算法, 流水線結(jié)構(gòu), 可在
    發(fā)表于 11-21 15:55

    如何在FPGA上實(shí)現(xiàn)硬件上的FFT算法

    =64 點(diǎn)的基-4DIT信號(hào)流其輸入數(shù)據(jù)序列是按自然順序排列的,輸出結(jié)果需經(jīng)過整序。64點(diǎn)數(shù)據(jù)只需進(jìn)行3次迭代運(yùn)算,每次迭代運(yùn)算含有N/4=16個(gè)蝶形單元。2 FFT算法的硬件實(shí)現(xiàn)2.
    發(fā)表于 06-17 09:01

    請(qǐng)問怎么利用TI提供的FFT的匯編算法?

    小弟用ti提供的高度優(yōu)化了的FFT匯編算法,一直用不好。 這樣的:一個(gè)正弦函數(shù),用數(shù)組離散化,256個(gè)點(diǎn),通過黑匣子(匯編FFT算法,我不懂
    發(fā)表于 03-17 10:38

    DSP操作教程 4-7 快速傅立葉變換(FFT算法CCS顯示)

    一、實(shí)驗(yàn)?zāi)康?了解FFT的作用,掌握FFT 算法算法原理、計(jì)算量和算法特點(diǎn),實(shí)現(xiàn)
    發(fā)表于 09-20 11:13

    基于CCS的DSP算法仿真實(shí)驗(yàn)設(shè)計(jì)

    摘要:簡要介紹了CCS軟件的主要功能,利用CCS軟件,設(shè)計(jì)數(shù)字信號(hào)處理實(shí)驗(yàn)課程,實(shí)現(xiàn)FFT算法的譜分析和FIR濾波器。
    發(fā)表于 11-09 16:07 ?104次下載

    利用FFT IP Core實(shí)現(xiàn)FFT算法

    利用FFT IP Core實(shí)現(xiàn)FFT算法 摘要:結(jié)合工程實(shí)踐,介紹了一種利用FFT IP Core實(shí)現(xiàn)
    發(fā)表于 01-16 10:04 ?6933次閱讀
    利用<b class='flag-5'>FFT</b> IP Core<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>FFT</b><b class='flag-5'>算法</b>

    用FPGA實(shí)現(xiàn)FFT算法

    用FPGA實(shí)現(xiàn)FFT算法 引言  DFT(Discrete Fourier Transformation)是數(shù)字信號(hào)分析與處理如圖形、語音及圖像等領(lǐng)域的重
    發(fā)表于 10-30 13:39 ?1617次閱讀
    用FPGA<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>FFT</b><b class='flag-5'>算法</b>

    用C語言實(shí)現(xiàn)FFT算法

    用C語言實(shí)現(xiàn)FFT算法 /*****************fft programe*********************/#include "typedef.h" #inc
    發(fā)表于 10-30 13:39 ?6349次閱讀

    存儲(chǔ)深度對(duì)FFT結(jié)果的影響

    存儲(chǔ)深度對(duì)FFT結(jié)果的影響     在DSO中,通過快速傅立葉變換(FFT)可以得到信號(hào)的
    發(fā)表于 08-25 08:06 ?910次閱讀

    實(shí)數(shù)FFT算法的設(shè)計(jì)及其C語言實(shí)現(xiàn)

    首先分析實(shí)數(shù)FFT算法的推導(dǎo)過程,然后給出一種具體實(shí)現(xiàn)FFT算法的C語言程序,可以直接應(yīng)用于需要FFT
    發(fā)表于 01-13 11:32 ?1.1w次閱讀
    實(shí)數(shù)<b class='flag-5'>FFT</b><b class='flag-5'>算法</b>的設(shè)計(jì)及其C語言<b class='flag-5'>實(shí)現(xiàn)</b>

    淺談FFT算法原理 基于FPGA的FFT算法的硬件實(shí)現(xiàn)

    FFT算法中,數(shù)據(jù)的寬度通常都是固定的寬度。然而,在FFT的運(yùn)算過程中,特別是乘法運(yùn)算中,運(yùn)算的結(jié)果將不可避免地帶來誤差。因此,為了保證結(jié)果
    發(fā)表于 05-25 05:23 ?2.7w次閱讀
    淺談<b class='flag-5'>FFT</b><b class='flag-5'>算法</b>原理 基于FPGA的<b class='flag-5'>FFT</b><b class='flag-5'>算法</b>的硬件<b class='flag-5'>實(shí)現(xiàn)</b>

    用FPGA實(shí)現(xiàn)FFT算法的方法

    摘要:在對(duì)FFT(快速傅立葉變換)算法進(jìn)行研究的基礎(chǔ)上,描述了用FPGA實(shí)現(xiàn)FFT的方法,對(duì)其中的整體結(jié)構(gòu)、蝶形單元及性能等進(jìn)行了分析。
    的頭像 發(fā)表于 04-12 19:28 ?5582次閱讀

    基2FFT的verilog代碼實(shí)現(xiàn)及仿真

    上文基2FFT算法推導(dǎo)及python仿真推導(dǎo)了基2FFT的公式,通過python做了算法驗(yàn)證
    的頭像 發(fā)表于 06-02 12:38 ?1760次閱讀
    基2<b class='flag-5'>FFT</b>的verilog代碼<b class='flag-5'>實(shí)現(xiàn)</b>及仿真