基于DSP的FFT實現(xiàn)_第1頁
基于DSP的FFT實現(xiàn)_第2頁
基于DSP的FFT實現(xiàn)_第3頁
基于DSP的FFT實現(xiàn)_第4頁
基于DSP的FFT實現(xiàn)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 目 錄摘要.i第 1 章 緒論.11.1 dsp 簡介.11.2 設(shè)計內(nèi)容 .11.3 設(shè)計要求 .11.4 設(shè)計原理.11.5 fft 算法的 dsp 實現(xiàn)過程.2第 2 章 硬件實現(xiàn).42.1 系統(tǒng)的硬件設(shè)計.42.2 原理圖的設(shè)計.5第 3 章 軟件設(shè)計.73.1 fft 運算及存儲分配.73.2 程序流程圖.8第 4 章 系統(tǒng)仿真 .9 4.1 fft 實現(xiàn)的方法.9 4.2 程序運行結(jié)果.10第 5 章 總結(jié).12參考文獻.13附錄.142 摘 要 快速傅里葉變換(fft)是將信號從時域變換到頻域的一種方法,廣泛應(yīng)用于各種信號分析領(lǐng)域,文中介紹了 fft 算法的基本原理和 dsp

2、 中 fft 算法的編程思想和設(shè)計原理及其硬件設(shè)計思想,基于 tms320c5502 芯片用 ccs 仿真軟件實現(xiàn)了 fft 算法,文中以基 2fft 為例,簡要介紹了算法的實現(xiàn),并畫出了蝶形運行算圖。然后編程實現(xiàn)算法,輸出波形。關(guān)鍵字:dsp;ccs 仿真軟件;fft3 第 1 章 緒論1.1 dsp 簡介數(shù)字信號處理(digital signal processing,簡稱 dsp)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。 數(shù)字信號處理是利用計算機或?qū)S锰幚碓O(shè)備,以數(shù)字的形式對信號進行分析、采集、合成、變換、濾波、估算、壓縮、識別等加工處理,以便提取有用的信息并進行有效的傳輸與

3、應(yīng)用。數(shù)字信號處理是以眾多學(xué)科為理論基礎(chǔ) ,它所涉及的范圍極其廣泛。如數(shù)學(xué)領(lǐng)域中的微積分、概率統(tǒng)計、隨機過程、數(shù)字分析等都是數(shù)字信號處理的基礎(chǔ)工具。它與網(wǎng)絡(luò)理論、信號與系統(tǒng)、控制理論、通信理論、故障診斷等密切相關(guān)。1.2 設(shè)計目的(1)加深對 dft 算法原理和基本性質(zhì)的理解;(2)熟悉 fft 的算法原理和 fft 子程序的算法流程和應(yīng)用;(3)學(xué)習(xí)用 fft 對連續(xù)信號和時域信號進行頻譜分析的方法;(4)學(xué)習(xí) dsp 中 fft 的設(shè)計和編程思想;(5)學(xué)習(xí)使用 ccs 的波形觀察器觀察波形和頻譜情況;(6)簡要畫出硬件設(shè)計電路圖。1.3 設(shè)計內(nèi)容 用 dsp 匯編語言進行編程,實現(xiàn) ff

4、t 運算,對輸入信號進行頻譜分析。1.4 設(shè)計原理快速傅氏變換(fft)是一種高效實現(xiàn)離散傅氏變換的快速算法,是數(shù)字信號處理中最為重要的工具之一,它在聲學(xué)、語音、電信、和信號處理等領(lǐng)域有著廣泛的應(yīng)用。 對于有限長離散數(shù)字信號xn,0 n n-1,其離散譜xk可以由離散付氏變換(dft)求得??梢苑奖愕陌阉膶憺槿缦滦问剑翰浑y看出,wn 是周期性的,且周期為 n,即 1,.,1 , 010nkwnxkxnknnn4n 的周期性是 dft 的關(guān)鍵性質(zhì)之一。為了強調(diào)起見,常用表達式 wn 取代w 以便明確其周期是 n。fft 算法可以分為按時間抽取 fft 和按頻率抽取 fft 兩大類,輸入也有和復(fù)

5、數(shù)之分,一般情況下,都假定輸入序列為復(fù)數(shù)。fft 算法利用旋轉(zhuǎn)因子的對稱性和周期性,加快了運算速度。用定點 dsp 芯片實現(xiàn) fft 程序時,一個比較重要的問題是防止中間結(jié)果的溢出,防止中間結(jié)果的溢出的方法是對中間數(shù)值歸一化。為了避免對每級都進行歸一化會降低運算速度,最好的方法是只對可能溢出的進行歸一化,而不可能溢出的則不進行歸一化。由 dft 的定義可以看出,在 xn為復(fù)數(shù)序列的情況下,完全直接運算 n 點dft 需要(n-1)2 次復(fù)數(shù)乘法和 n(n-1)次加法。因此,對于一些相當大的n 值(如 1024)來說,直接計算它的 dft 所作的計算量是很大的。fft 的基本思想在于,將原有的

6、n 點序列序列分成兩個較短的序列,這些序列的 dft 可以很簡單的組合起來得到原序列的 dft。例如,若 n 為偶數(shù),將原有的 n 點序列分成兩個(n/2)點序列,那么計算 n 點 dft 將只需要約(n/2)2 2=n2/2次復(fù)數(shù)乘法。即比直接計算少作一半乘法。因子(n/2)2 表示直接計算(n/2)點 dft 所需要的乘法次數(shù),而乘數(shù) 2 代表必須完成兩個 dft。上述處理方法可以反復(fù)使用,即(n/2)點的 dft 計算也可以化成兩個(n/4)點的dft(假定 n/2 為偶數(shù)) ,從而又少作一半的乘法。這樣一級一級的劃分下去一直到最后就劃分成兩點的 fft 運算的情況。1.5 fft 算法

7、的 dsp 實現(xiàn)過程 dsp 芯片的出現(xiàn)使 fft 的實現(xiàn)方法變得更為方便。由于大多數(shù) dsp 芯片都具有在單指令周期內(nèi)完成乘法累加操作,并且提供了專門的 fft 指令,使得fft 算法在 dsp 芯片實現(xiàn)的速度更快。fft 算法可以分為按時間抽取 fft 和按頻率抽取 fft 兩大類,輸入也有實數(shù)和復(fù)數(shù)之分,一般情況下,都假定輸入序列為復(fù)數(shù)。 1,.,1 ,0)2(10nkenxkxnknjnn.2, 1, 0,)(lmwwnknlnkmnnn51.5.1fft 運算序列的存儲分配fft 運算時間是衡量 dsp 芯片性能的一個重要指標,因此提高 fft 的運算速度是非常重要的。在用 dsp

8、芯片實現(xiàn) fft 算法時,應(yīng)允許利用 dsp 芯片所提供的各種軟、硬件資源。如何利用 dsp 芯片的有限資源,合理地安排好所使用的存儲空間是十分重要的。1.5.2 fft 運算的實現(xiàn)用 tms320c54x 的匯編程序?qū)崿F(xiàn) fft 算法主要分為四步: (1)實現(xiàn)輸入數(shù)據(jù)的比特反轉(zhuǎn)輸入數(shù)據(jù)的比特反轉(zhuǎn)實際上就是將輸入數(shù)據(jù)進行碼位倒置,以便在整個運算后的輸出序列是一個自然序列。在用匯編指令進行碼位倒置時,使用碼位倒置可以大大提高程序執(zhí)行速度和使用存儲器的效率。在這種尋址方式下,ar0存放的整數(shù) n 是 fft 點的一半,一個輔助寄存器指向一個數(shù)據(jù)存放的單元。當使用位碼倒置尋址將 ar0 加到輔助寄存

9、器時,地址將以位碼倒置的方式產(chǎn)生。 (2)實現(xiàn) n 點復(fù)數(shù) fftn 點復(fù)數(shù) fft 算法的實現(xiàn)可分為三個功能塊,即第一級蝶形運算、第二級蝶形運算、第三級至級蝶形運算。對于任何一個 2 的整數(shù)冪,log2 = 2總可以通過 m 次分解最后成為 2 點的 dft 計算。通過這樣的 m 次分解,可構(gòu)成m(即)級迭代計算,每級由 n/2 個蝶形運算組成。log2 (3)功率譜的計算用 fft 計算想 x(n)的頻譜,即計算x(k)= 1 = 0()x(k)一般是由實部(k)和虛部(k)組成的復(fù)數(shù),即x(k)=(k)+j(k)因此,計算功率譜時只需將 fft 變換好的數(shù)據(jù),按照實部實部(k)和虛部(k

10、)求它們的平方和,然后對平方和進行開平方運算。但是考慮到編程的難度,對于求 fft 變換后數(shù)據(jù)的最大值,不開平方也可以找到最大值,并對功率譜的結(jié)果沒有影響,所以在實際的 dsp 編程中省去了開方運算。6 第 2 章 硬件實現(xiàn)2.1 系統(tǒng)的硬件設(shè)計 基于 dsp 的系統(tǒng)設(shè)計過程中,最小系統(tǒng)的設(shè)計是整個系統(tǒng)設(shè)計的第一步,系統(tǒng)設(shè)計總是從最小系統(tǒng)開始,逐步向系統(tǒng)應(yīng)用范圍擴展,最終以 dsp 為核心的大系統(tǒng)的設(shè)計。因此最小系統(tǒng)設(shè)計 dsp 設(shè)計的關(guān)鍵。dsp 最小系統(tǒng)的設(shè)計包括 dsp 電源和地線的設(shè)計,jtag 仿真口的設(shè)計、復(fù)位和時鐘電路的設(shè)計、上拉和下拉引腳的設(shè)計等。tms320c5502鎖相環(huán)電

11、路、指示燈、 濾波電路時鐘復(fù)位電路tps7333q 電源模塊ram 存儲模塊jtag 仿真電路圖 2.1.1 最小系統(tǒng)的設(shè)計芯片介紹(1)該模塊上的資源有 32 千字 flash(2)千字 saram,544 字 daram,外擴 64 千字的程序 rom,64 千字的數(shù)據(jù)ram(3)兩個事件管理器 eva 和 evb(4)可擴展外部存儲器總共 192k 字空間:64k 程序存儲器,64k 字數(shù)據(jù)存儲器空間,64k 字 i/o 尋址空間(5)看門狗定時模塊(6)19 位 a/d 轉(zhuǎn)換器(7)控制局域網(wǎng)絡(luò) can 模塊串行通信接口 sci 模塊7(8)16 位串行外設(shè) spi 接口模塊(9)基于

12、鎖相環(huán)的時鐘發(fā)生器(10)高達 40 個可單獨編程或復(fù)用的通用輸入/輸出引腳 gpio(11)5 個外部中斷(12)電源管理包括 3 種低功耗模式,能獨立地將外設(shè)器件轉(zhuǎn)入低功耗工作模式2.2 原理圖的設(shè)計 dsp 最小系統(tǒng)的設(shè)計包括 dsp 電源設(shè)計,jtag 仿真口的設(shè)計、復(fù)位和時鐘電路的設(shè)計、上拉和下拉引腳的設(shè)計等2.2.1 電源電路的設(shè)計電源電路的選擇是系統(tǒng)設(shè)計的一個重要的部分,設(shè)計好壞對系統(tǒng)的影響最大。首先需要注意的是,為了減少電源噪聲和互相干擾,數(shù)字電路和模擬電路一般要獨立供電,數(shù)字地和模擬地也要分開,并最終通過一個磁珠在一點連在一起,用 tps7333q 進行 3.3v 電壓的轉(zhuǎn)換

13、對最小系統(tǒng)供電 圖 2.2.1 電源電路2.2.2 復(fù)位電路設(shè)計8tms320c5502 內(nèi)部帶有復(fù)位電路,因此可以直接 rs 復(fù)位引腳外面接一個上拉電阻即可,這對于簡化外圍電路,減少電路板尺寸很有用處,但是為了調(diào)試方便經(jīng)常采用手動復(fù)位電路。2.2.3 鎖相環(huán)電路設(shè)計 圖 2.2.3 鎖相環(huán)電路2.2.4 jtag 口jtag 是 joint test action group 的簡稱,又稱 jtag 口,它是一符合 ieee std 1149.1 邊界掃描邏輯標準的標準接口。它主要用于在硬件上對 dsp 進行實時在線仿真測試和 dsp 程序的下載,它提供對所連接設(shè)備的邊界掃描,同時也可以用來

14、測試引腳到引腳的連續(xù)性,以及進一步進行 dsp 芯片的外圍器件的操作測試。 第 3 章 軟件實現(xiàn)93.1 fft 運算及存儲分配(1)dsp 芯片的出現(xiàn)使 fft 的實現(xiàn)方法變得更為方便,由于大多數(shù) dsp 芯片都具有在單指令周期內(nèi)完成乘法累加的操作,并提供了專門的 fft 指令,使得 fft 算法在 dsp 的實現(xiàn)速度更快。一般,fft 的算法可分為按時間抽取fft 和按頻率抽取 fft,輸入也有實數(shù)和復(fù)數(shù)之分,一般情況下都假定輸入是復(fù)數(shù)序列。(2)fft 運算序列的存儲分配fft 運算時間是衡量 dsp 芯片性能的一個重要指標,因此提高 fft 的運算速度是非常重要的。在用 dsp 芯片實

15、現(xiàn) fft 算法時,應(yīng)允許利用 dsp 芯片所提供的各種軟、硬件資源。如何合理的利用 dsp 芯片的有限資源,合理的安排dsp 芯片所提供的存儲空間相當關(guān)鍵。本設(shè)計采用如下所示的存儲分配:0000007f20602062.bss206321ffstack220023ffsine存儲映射寄存器暫存單元堆棧正弦系數(shù)表2061240025ff余弦系數(shù)表cosine2800287f28802c7f2c80307fd_inputfft_datafft_out輸入數(shù)據(jù)fft結(jié)果(實部、虛部)fft結(jié)果(功率譜)圖 3.1 數(shù)據(jù)空間分配圖3.2 設(shè)計流程圖10開 始系 統(tǒng) 初 始 化將 波 形 樣 點 值

16、寫 入 內(nèi) 存讀取內(nèi)存值顯示 結(jié) 束是 否 屬 實ny 圖 3.2 最小系統(tǒng)設(shè)計流程圖第 4 章 系統(tǒng)仿真114.1 fft 實現(xiàn)的方法(1)根據(jù) n 值,修改 rfft_task.asm 中的兩個常數(shù),如 n=64. k_fft_size .set 64 k_logn .set 6(2)準備輸入數(shù)據(jù)文件 in.dat。輸入數(shù)據(jù)按實部、虛部,實部、虛部,順序存放。(3)匯編、鏈接、仿真執(zhí)行,得到輸出數(shù)據(jù)文件 out.dat。(4)根據(jù) out.dat 作圖,就可以得到輸入信號的功率譜圖。當 n 超過 1024 時,除了修改 k_fft_size 和 k_logn 兩個常數(shù)外,還要增加系數(shù)并且修

17、改 rfft_task.cmd 命令文件。通過 data.pjt 完成一個 64 點 fft 程序,輸入信號為一正弦波。操作步驟如下:(1)進入 ccs 環(huán)境。(2)打開 ccs 選擇 filenewsource file。(3)編寫源程序代碼。(4)創(chuàng)建工程文件。(5)點擊 project 選擇 build options。(6)在彈出的對話框在設(shè)置相應(yīng)的編譯參數(shù),一般情況下,按默認值就可以。(7)在彈出的對話框中選擇連接的參數(shù)設(shè)置,設(shè)置傳輸文件、堆棧的大小以及初始化的方式。(8)點擊 projectbuild all,對工程進行編譯。(9)點擊 fileload program,彈出的對話

18、框中載入 debug 文件夾下的.out 可執(zhí)行文件。(10)點擊 debuggo m ain 回到 c 程序的入口。(11)運行程序,觀察結(jié)果。4.2 程序運行結(jié)果12驗證輸入數(shù)據(jù)波形,設(shè)置參數(shù):start address=0 x2800,page=data,acquisition buffer size=64,display data size=64,dsp data type=32-bit signed integer 點擊 ok,就可以看到輸入數(shù)據(jù)波形:圖 4.2.1 輸入數(shù)據(jù)波形13全速運行程序,看輸出結(jié)果,設(shè)置波形對話框參數(shù):start address=0 x2c80,page=d

19、ata,acquisition buffer size=64,display data size=64,dsp data type=16-bit signed integer點擊 ok,就可以看到 fft 輸出結(jié)果:圖 4.2.2 fft 輸出結(jié)果 14第 5 章 總結(jié)dsp芯片具有的特殊軟硬件結(jié)構(gòu)和指令系統(tǒng),使其能高速處理各種數(shù)字信號處理算法。并在過程中進一步提高自身的創(chuàng)作、創(chuàng)新水平,扎實基礎(chǔ),擴展所學(xué)。并且此次課程設(shè)計,基于課程理論知識和網(wǎng)上資料,使我fft的實現(xiàn)有了更深一步的了解和掌握,對利用ccs軟件編程的數(shù)字信號處理方法有了進一步的了解。在理論課的基礎(chǔ)上進行實驗實習(xí),是對本門課程的深

20、入學(xué)習(xí)和掌握。這樣一個課程設(shè)計對我們的發(fā)展有著極大的幫助!課程設(shè)計不僅是對前面所學(xué)知識的一種檢驗,而且也是對自己能力的一種提高。通過這次課程設(shè)計使我明白了自己原來知識還比較欠缺,學(xué)習(xí)是一個長期積累的過程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識和綜合素質(zhì)。剛開始時,拿著選定的題目不知如何下手。畢竟課程設(shè)計不同于實驗課,電路圖都要自己設(shè)計。靜下心來,仔細分析題目,再加上指導(dǎo)老師的說明與提示,心中才有了譜。將整個系統(tǒng)根據(jù)不同的功能化分成模塊,再分別進行設(shè)計,逐個攻破,最后將其整合即可?;仡櫰鸫苏n程設(shè)計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。在設(shè)計過程中,我通過查閱大量有關(guān)資料,與同學(xué)交流經(jīng)驗和自學(xué),并向老師請教等方式,使自己學(xué)到了不少知識,也經(jīng)歷了不少艱辛,但收獲同樣巨大。幸虧老師與同學(xué)的幫助,一步步解決了困難。在整個設(shè)計中我懂得了許多東西,也培養(yǎng)了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中探索的艱難和成功時的喜悅。雖然這個設(shè)計做的也不太好,但是在設(shè)計過程中所學(xué)到的東西是這次課程設(shè)計的最大收獲和財富,使我終身受益。在此感謝劉偉春老師

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論