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

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)(論文)題 目 名 稱(chēng) 基于DSP的FFT的實(shí)現(xiàn) 課 程 名 稱(chēng) 專(zhuān)業(yè)課程設(shè)計(jì) 學(xué) 生 姓 名 學(xué) 號(hào) 系 、專(zhuān) 業(yè) 信息工程系通信工程 指 導(dǎo) 教 師 2014 年 4 月 27 日摘 要隨著計(jì)算機(jī)和微電子技術(shù)的飛速發(fā)展,基于數(shù)字信號(hào)處理的頻譜分析已經(jīng)應(yīng)用到各個(gè)領(lǐng)域并且發(fā)揮著重要作用。信號(hào)處理方法是當(dāng)前機(jī)械設(shè)備故障診斷中重要的技術(shù)基礎(chǔ)之一,分析結(jié)果的精確程度是診斷成功與否的關(guān)鍵因素。研究頻譜分析是當(dāng)前主要的發(fā)展方向之一。數(shù)字信號(hào)處理基本上從兩個(gè)方面來(lái)解決信號(hào)的處理問(wèn)題:一個(gè)是時(shí)域方法,即數(shù)字濾波;另一個(gè)是頻域方法,即頻譜分析. 本文主要介紹了離散傅里葉變換以及快速傅里葉變換

2、,通過(guò)對(duì)DFT以及FFT算法進(jìn)行研究,從基礎(chǔ)深入研究和學(xué)習(xí),掌握FFT算法的關(guān)鍵。通過(guò)對(duì)DSP芯片工作原理以及開(kāi)發(fā)環(huán)境的學(xué)習(xí),掌握CCS的簡(jiǎn)單調(diào)試和軟件仿真,在DSP芯片上實(shí)現(xiàn)對(duì)信號(hào)的實(shí)時(shí)頻譜分析。關(guān)鍵字:DSP;CCS仿真軟件;FFT目 錄第1章 緒論11.1 DSP簡(jiǎn)介11.2設(shè)計(jì)目的11.3設(shè)計(jì)內(nèi)容11.4設(shè)計(jì)原理11.5 FFT算法的DSP實(shí)現(xiàn)過(guò)程2第2章 硬件實(shí)現(xiàn)42.1系統(tǒng)的硬件設(shè)計(jì)42.2原理圖的設(shè)計(jì)5第3章 軟件設(shè)計(jì)73.1 FFT運(yùn)算及存儲(chǔ)分配73.2設(shè)計(jì)流程圖8第4章 系統(tǒng)仿真94.1 FFT實(shí)現(xiàn)的方法94.2程序運(yùn)行結(jié)果9第5章 總結(jié)12致 謝13參考文獻(xiàn)14附錄 源程序

3、15第1章 緒論1.1 DSP簡(jiǎn)介數(shù)字信號(hào)處理(Digital Signal Processing,簡(jiǎn)稱(chēng)DSP)是一門(mén)涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。數(shù)字信號(hào)處理是利用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備,以數(shù)字的形式對(duì)信號(hào)進(jìn)行分析、采集、合成、變換、濾波、估算、壓縮、識(shí)別等加工處理,以便提取有用的信息并進(jìn)行有效的傳輸與應(yīng)用。數(shù)字信號(hào)處理是以眾多學(xué)科為理論基礎(chǔ),它所涉及的范圍極其廣泛。如數(shù)學(xué)領(lǐng)域中的微積分、概率統(tǒng)計(jì)、隨機(jī)過(guò)程、數(shù)字分析等都是數(shù)字信號(hào)處理的基礎(chǔ)工具。它與網(wǎng)絡(luò)理論、信號(hào)與系統(tǒng)、控制理論、通信理論、故障診斷等密切相關(guān)。1.2設(shè)計(jì)目的(1)加深對(duì)DFT算法原理和基本性質(zhì)的理解;(2)熟悉

4、FFT的算法原理和FFT子程序的算法流程和應(yīng)用;(3)學(xué)習(xí)用FFT對(duì)連續(xù)信號(hào)和時(shí)域信號(hào)進(jìn)行頻譜分析的方法;(4)學(xué)習(xí)DSP中FFT的設(shè)計(jì)和編程思想;(5)學(xué)習(xí)使用CCS的波形觀察器觀察波形和頻譜情況;(6)簡(jiǎn)要畫(huà)出硬件設(shè)計(jì)電路圖。1.3設(shè)計(jì)內(nèi)容 用DSP匯編語(yǔ)言進(jìn)行編程,實(shí)現(xiàn)FFT運(yùn)算,對(duì)輸入信號(hào)進(jìn)行頻譜分析。1.4設(shè)計(jì)原理快速傅氏變換(FFT)是一種高效實(shí)現(xiàn)離散傅氏變換的快速算法,是數(shù)字信號(hào)處理中最為重要的工具之一,它在聲學(xué)、語(yǔ)音、電信、和信號(hào)處理等領(lǐng)域有著廣泛的應(yīng)用。 對(duì)于有限長(zhǎng)離散數(shù)字信號(hào)xn,0 n N-1,其離散譜xk可以由離散付氏變換(DFT)求得??梢苑奖愕陌阉膶?xiě)為如下形式:不

5、難看出,WN是周期性的,且周期為N,即N的周期性是DFT的關(guān)鍵性質(zhì)之一。為了強(qiáng)調(diào)起見(jiàn),常用表達(dá)式WN取代W以便明確其周期是N。FFT算法可以分為按時(shí)間抽取FFT和按頻率抽取FFT兩大類(lèi),輸入也有和復(fù)數(shù)之分,一般情況下,都假定輸入序列為復(fù)數(shù)。FFT算法利用旋轉(zhuǎn)因子的對(duì)稱(chēng)性和周期性,加快了運(yùn)算速度。用定點(diǎn)DSP芯片實(shí)現(xiàn)FFT程序時(shí),一個(gè)比較重要的問(wèn)題是防止中間結(jié)果的溢出,防止中間結(jié)果的溢出的方法是對(duì)中間數(shù)值歸一化。為了避免對(duì)每級(jí)都進(jìn)行歸一化會(huì)降低運(yùn)算速度,最好的方法是只對(duì)可能溢出的進(jìn)行歸一化,而不可能溢出的則不進(jìn)行歸一化。由DFT的定義可以看出,在xn為復(fù)數(shù)序列的情況下,完全直接運(yùn)算N點(diǎn)DFT需要

6、(N-1)2次復(fù)數(shù)乘法和N(N-1)次加法。因此,對(duì)于一些相當(dāng)大的N值(如1024)來(lái)說(shuō),直接計(jì)算它的DFT所作的計(jì)算量是很大的。FFT的基本思想在于,將原有的N點(diǎn)序列序列分成兩個(gè)較短的序列,這些序列的DFT可以很簡(jiǎn)單的組合起來(lái)得到原序列的DFT。例如,若N為偶數(shù),將原有的N點(diǎn)序列分成兩個(gè)(N/2)點(diǎn)序列,那么計(jì)算N點(diǎn)DFT將只需要約(N/2)2 ·2=N2/2次復(fù)數(shù)乘法。即比直接計(jì)算少作一半乘法。因子(N/2)2表示直接計(jì)算(N/2)點(diǎn)DFT所需要的乘法次數(shù),而乘數(shù)2代表必須完成兩個(gè)DFT。上述處理方法可以反復(fù)使用,即(N/2)點(diǎn)的DFT計(jì)算也可以化成兩個(gè)(N/4)點(diǎn)的DFT(假定

7、N/2為偶數(shù)),從而又少作一半的乘法。這樣一級(jí)一級(jí)的劃分下去一直到最后就劃分成兩點(diǎn)的FFT運(yùn)算的情況。1.5 FFT算法的DSP實(shí)現(xiàn)過(guò)程DSP芯片的出現(xiàn)使FFT的實(shí)現(xiàn)方法變得更為方便。由于大多數(shù)DSP芯片都具有在單指令周期內(nèi)完成乘法累加操作,并且提供了專(zhuān)門(mén)的FFT指令,使得FFT算法在DSP芯片實(shí)現(xiàn)的速度更快。FFT算法可以分為按時(shí)間抽取FFT和按頻率抽取FFT兩大類(lèi),輸入也有實(shí)數(shù)和復(fù)數(shù)之分,一般情況下,都假定輸入序列為復(fù)數(shù)。運(yùn)算序列的存儲(chǔ)分配FFT運(yùn)算時(shí)間是衡量DSP芯片性能的一個(gè)重要指標(biāo),因此提高FFT的運(yùn)算速度是非常重要的。在用DSP芯片實(shí)現(xiàn)FFT算法時(shí),應(yīng)允許利用DSP芯片所提供的各種

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

9、個(gè)功能塊,即第一級(jí)蝶形運(yùn)算、第二級(jí)蝶形運(yùn)算、第三級(jí)至級(jí)蝶形運(yùn)算。對(duì)于任何一個(gè)2的整數(shù)冪,總可以通過(guò)M次分解最后成為2點(diǎn)的DFT計(jì)算。通過(guò)這樣的M次分解,可構(gòu)成M(即)級(jí)迭代計(jì)算,每級(jí)由N/2個(gè)蝶形運(yùn)算組成。(3)功率譜的計(jì)算用FFT計(jì)算想x(n)的頻譜,即計(jì)算X(k)=X(k)一般是由實(shí)部(k)和虛部(k)組成的復(fù)數(shù),即X(k)=(k)+j(k)因此,計(jì)算功率譜時(shí)只需將FFT變換好的數(shù)據(jù),按照實(shí)部實(shí)部(k)和虛部(k)求它們的平方和,然后對(duì)平方和進(jìn)行開(kāi)平方運(yùn)算。但是考慮到編程的難度,對(duì)于求FFT變換后數(shù)據(jù)的最大值,不開(kāi)平方也可以找到最大值,并對(duì)功率譜的結(jié)果沒(méi)有影響,所以在實(shí)際的DSP編程中省去

10、了開(kāi)方運(yùn)算。 第2章 硬件實(shí)現(xiàn)2.1系統(tǒng)的硬件設(shè)計(jì) 基于DSP的系統(tǒng)設(shè)計(jì)過(guò)程中,最小系統(tǒng)的設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)的第一步,系統(tǒng)設(shè)計(jì)總是從最小系統(tǒng)開(kāi)始,逐步向系統(tǒng)應(yīng)用范圍擴(kuò)展,最終以DSP為核心的大系統(tǒng)的設(shè)計(jì)。因此最小系統(tǒng)設(shè)計(jì)DSP設(shè)計(jì)的關(guān)鍵。DSP最小系統(tǒng)的設(shè)計(jì)包括DSP電源和地線的設(shè)計(jì),JTAG仿真口的設(shè)計(jì)、復(fù)位和時(shí)鐘電路的設(shè)計(jì)、上拉和下拉引腳的設(shè)計(jì)等。TMS320C54X鎖相環(huán)電路、指示燈、 濾波電路時(shí)鐘復(fù)位電路TPS7333Q電源模塊RAM存儲(chǔ)模塊JTAG仿真電路圖2.1.1 最小系統(tǒng)的設(shè)計(jì)芯片介紹(1)該模塊上的資源有32千字FLASH;(2)千字SARAM,544字DARAM,外擴(kuò)64千

11、字的程序ROM,64千字的數(shù)據(jù)RAM;(3)兩個(gè)事件管理器EVA和EVB;(4)可擴(kuò)展外部存儲(chǔ)器總共192K字空間:64K程序存儲(chǔ)器,64K字?jǐn)?shù)據(jù)存儲(chǔ)器空間,64K字I/O尋址空間;(5)看門(mén)狗定時(shí)模塊;(6)19位A/D轉(zhuǎn)換器;(7)控制局域網(wǎng)絡(luò)CAN模塊,串行通信接口SCI模塊;(8)16位串行外設(shè)SPI接口模塊;(9)基于鎖相環(huán)的時(shí)鐘發(fā)生器;(10)高達(dá)40個(gè)可單獨(dú)編程或復(fù)用的通用輸入/輸出引腳GPIO;(11)5個(gè)外部中斷;(12)電源管理包括3種低功耗模式,能獨(dú)立地將外設(shè)器件轉(zhuǎn)入低功耗工作模式;2.2原理圖的設(shè)計(jì) DSP最小系統(tǒng)的設(shè)計(jì)包括DSP電源設(shè)計(jì),JTAG仿真口的設(shè)計(jì)、復(fù)位和時(shí)

12、鐘電路的設(shè)計(jì)、上拉和下拉引腳的設(shè)計(jì)等電源電路的設(shè)計(jì)電源電路的選擇是系統(tǒng)設(shè)計(jì)的一個(gè)重要的部分,設(shè)計(jì)好壞對(duì)系統(tǒng)的影響最大。首先需要注意的是,為了減少電源噪聲和互相干擾,數(shù)字電路和模擬電路一般要獨(dú)立供電,數(shù)字地和模擬地也要分開(kāi),并最終通過(guò)一個(gè)磁珠在一點(diǎn)連在一起,用TPS7333Q進(jìn)行3.3V電壓的轉(zhuǎn)換對(duì)最小系統(tǒng)供電 圖2.2.1 電源電路復(fù)位電路設(shè)計(jì)TMS320C54X內(nèi)部帶有復(fù)位電路,因此可以直接RS復(fù)位引腳外面接一個(gè)上拉電阻即可,這對(duì)于簡(jiǎn)化外圍電路,減少電路板尺寸很有用處,但是為了調(diào)試方便經(jīng)常采用手動(dòng)復(fù)位電路。鎖相環(huán)電路設(shè)計(jì) 圖2.2.3 鎖相環(huán)電路 JTAG口JTAG是Joint Test A

13、ction Group的簡(jiǎn)稱(chēng),又稱(chēng)JTAG口,它是一符合IEEE Std 1149.1邊界掃描邏輯標(biāo)準(zhǔn)的標(biāo)準(zhǔn)接口。它主要用于在硬件上對(duì)DSP進(jìn)行實(shí)時(shí)在線仿真測(cè)試和DSP程序的下載,它提供對(duì)所連接設(shè)備的邊界掃描,同時(shí)也可以用來(lái)測(cè)試引腳到引腳的連續(xù)性,以及進(jìn)一步進(jìn)行DSP芯片的外圍器件的操作測(cè)試。 第3章 軟件設(shè)計(jì)3.1 FFT運(yùn)算及存儲(chǔ)分配(1)DSP芯片的出現(xiàn)使FFT的實(shí)現(xiàn)方法變得更為方便,由于大多數(shù)DSP芯片都具有在單指令周期內(nèi)完成乘法累加的操作,并提供了專(zhuān)門(mén)的FFT指令,使得FFT算法在DSP的實(shí)現(xiàn)速度更快。一般,F(xiàn)FT的算法可分為按時(shí)間抽取FFT和按頻率抽取FFT,輸入也有實(shí)數(shù)和復(fù)數(shù)之分

14、,一般情況下都假定輸入是復(fù)數(shù)序列。(2)FFT運(yùn)算序列的存儲(chǔ)分配 FFT運(yùn)算時(shí)間是衡量DSP芯片性能的一個(gè)重要指標(biāo),因此提高FFT的運(yùn)算速度是非常重要的。在用DSP芯片實(shí)現(xiàn)FFT算法時(shí),應(yīng)允許利用DSP芯片所提供的各種軟、硬件資源。如何合理的利用DSP芯片的有限資源,合理的安排DSP芯片所提供的存儲(chǔ)空間相當(dāng)關(guān)鍵。本設(shè)計(jì)采用如下所示的存儲(chǔ)分配:圖3.1數(shù)據(jù)空間分配圖3.2設(shè)計(jì)流程圖DSP初始化串口設(shè)置AD設(shè)置 設(shè)置信號(hào)源類(lèi)型、頻率幅值、和采樣點(diǎn)數(shù)串口接收,AD采樣位碼倒置FFT運(yùn)算功率譜計(jì)算串口發(fā)送轉(zhuǎn)換結(jié)果觀看轉(zhuǎn)換結(jié)果,保存數(shù)據(jù) 圖3.2 程序流程圖第4章 系統(tǒng)仿真4.1 FFT實(shí)現(xiàn)的方法(1)

15、根據(jù)N值,修改rfft_task.asm中的兩個(gè)常數(shù),如N=64.K_FFT_SIZE .set 64K_LOGN .set 6(2)準(zhǔn)備輸入數(shù)據(jù)文件in.dat。輸入數(shù)據(jù)按實(shí)部、虛部,實(shí)部、虛部,順序存放。(3)匯編、鏈接、仿真執(zhí)行,得到輸出數(shù)據(jù)文件out.dat。(4)根據(jù)out.dat作圖,就可以得到輸入信號(hào)的功率譜圖。當(dāng)N超過(guò)1024時(shí),除了修改K_FFT_SIZE和K_LOGN兩個(gè)常數(shù)外,還要增加系數(shù)并且修改rfft_task.cmd命令文件。通過(guò)data.pjt完成一個(gè)64點(diǎn)FFT程序,輸入信號(hào)為一正弦波。操作步驟如下:(1)進(jìn)入CCS環(huán)境。(2)打開(kāi)CCS選擇FileNewSou

16、rce File。(3)編寫(xiě)源程序代碼。(4)創(chuàng)建工程文件。(5)點(diǎn)擊Project選擇Build Options。(6)在彈出的對(duì)話框在設(shè)置相應(yīng)的編譯參數(shù),一般情況下,按默認(rèn)值就可以。(7)在彈出的對(duì)話框中選擇連接的參數(shù)設(shè)置,設(shè)置傳輸文件、堆棧的大小以及初始化的方式。(8)點(diǎn)擊ProjectBuild all,對(duì)工程進(jìn)行編譯。(9)點(diǎn)擊Fileload program,彈出的對(duì)話框中載入debug文件夾下的.out可執(zhí)行文件。(10)點(diǎn)擊debugGo M ain回到C程序的入口。(11)運(yùn)行程序,觀察結(jié)果。4.2程序運(yùn)行結(jié)果驗(yàn)證輸入數(shù)據(jù)波形,設(shè)置參數(shù):Start Address=0x280

17、0,Page=Data,Acquisition Buffer Size=64,Display Data Size=64,DSP Data Type=32-bit signed integer 點(diǎn)擊OK,就可以看到輸入數(shù)據(jù)波形:圖4.2.1輸入數(shù)據(jù)波形全速運(yùn)行程序,看輸出結(jié)果,設(shè)置波形對(duì)話框參數(shù):Start Address=0x2c80,Page=Data,Acquisition Buffer Size=64,Display Data Size=64,DSP Data Type=16-bit signed integer點(diǎn)擊OK,就可以看到FFT輸出結(jié)果:圖4.2.2 FFT輸出結(jié)果 第5章 總

18、結(jié)在本次課程設(shè)計(jì)中,我、XXX、XXX三人一組。XXX負(fù)責(zé)硬件設(shè)計(jì)部分,XXX負(fù)責(zé)軟件設(shè)計(jì)部分,我負(fù)責(zé)系統(tǒng)仿真及論文的編寫(xiě)。在系統(tǒng)仿真時(shí)我們需要在實(shí)驗(yàn)箱上設(shè)置信號(hào)源,信號(hào)源的幅度應(yīng)該設(shè)在1000左右,信號(hào)的頻率設(shè)在300左右,電壓偏移設(shè)為1,通道設(shè)為0。在論文編寫(xiě)的過(guò)程中,我首先對(duì)本次課程設(shè)計(jì)進(jìn)行了總體設(shè)計(jì),然后根據(jù)XXX、XXX和我各自負(fù)責(zé)的內(nèi)容進(jìn)行匯總編排。通過(guò)本次課程設(shè)計(jì)我發(fā)現(xiàn)DSP應(yīng)用型很強(qiáng),許多的原理,程序看似簡(jiǎn)單,真正去做才知道知識(shí)并沒(méi)有自己想象的那樣扎實(shí)。從而懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真

19、正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。樹(shù)立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動(dòng)手的能力,使我充分體會(huì)到了在創(chuàng)造過(guò)程中探索的艱難和成功時(shí)的喜悅。本次設(shè)計(jì)也讓我明白了思路即出路,有什么不懂不明白的地方要及時(shí)請(qǐng)教或上網(wǎng)查詢(xún),只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐,就沒(méi)有弄不懂的知識(shí),收獲頗豐。 致 謝在此次設(shè)計(jì)中,XX老師作為我的指導(dǎo)老師,至始至終都給予我了不少幫助,從下任務(wù)書(shū)開(kāi)始,就幫我制定規(guī)劃,提醒我應(yīng)注意的問(wèn)題,借給我資料和實(shí)驗(yàn)器材,和我一起調(diào)程序,并提出了很多的修改意見(jiàn)以及完善方案。此外還認(rèn)真批閱了我的論文,指出其中很多瑕疵和不清

20、晰的地方,更重要的是在我遇到困難時(shí)對(duì)我的鼓勵(lì),讓我不懈怠、不退縮、也讓我更有信心,可以說(shuō)我的每一點(diǎn)進(jìn)展都與黃老師的付出是分不開(kāi)的。當(dāng)然還在此,我向身邊關(guān)心我的老師、同學(xué)致以誠(chéng)摯的謝意!有其他老師和同學(xué)都幫了我不少忙,在此不再贅述。謹(jǐn)祝老師們工作順利,萬(wàn)事如意,桃李滿(mǎn)天下;同學(xué)們學(xué)業(yè)有成,前程似錦!參考文獻(xiàn)1 戴明楨等編著TMS320C54X DSP 結(jié)構(gòu)原理及應(yīng)用北京:航空航天大學(xué)出版社,第2版,2007;2 彭啟琮編著DSP技術(shù)的發(fā)展與應(yīng)用北京:高等教育出版社,2002;3 胡廣書(shū)編著數(shù)字信號(hào)處理理論、算法與實(shí)現(xiàn)北京:清華大學(xué)出版社,2005;4 黃席椿、高順良編著濾波器綜合法設(shè)計(jì)原理北京:

21、人民郵電出版社,1978;5 沈永歡 梁在中等編著實(shí)用數(shù)學(xué)手冊(cè)北京:科學(xué)出版社,2001;6 程佩青編著數(shù)字濾波與快速傅里葉變換北京:清華大學(xué)出版社,1990;7 北京合眾達(dá)電子技術(shù)有限公司編著SEED-DTK系列實(shí)驗(yàn)手冊(cè)北京合眾達(dá)電子技術(shù)有限公司出版,2007。附錄 源程序#include "stdio.h"#include "math.h"main() int i; float f256; FILE *fp;if(fp=fopen("d:tms320c54fftsindata", "wt")=NULL) pri

22、ntf("can't open file!n"); exit(0);for(i=0;i<=255;i+) fi=sin(2*3.1415926*i/256.0); fprintf(fp, ".word %ldn",(log)(fi*16384);fclose(fp);將生成的數(shù)據(jù)文件復(fù)制到目標(biāo)系統(tǒng)存儲(chǔ)器的語(yǔ)句為 d_input .copy sindata匯編語(yǔ)言程序: .title "fft.asm" .mmregs .include "coeff.inc" .include "in.inc

23、" .def startsine: .usect "sine",512cosine: .usect "cosine",512fft_data: .usect "fft_data",1024fft_out: .usect "fft_out",512 STACK .usect "STACK",10K_DATA_IDX_1 .set 2K_DATA_IDX_2 .set 4K_DATA_IDX_3 .set 8K_TWID_TBL_SIZE .set 512K_TWID_IDX_3 .set

24、 128K_FLY_COUNT_3 .set 4K_FFT_SIZE .set 64 K_LOGN .set 6 PA0 .set 0 .bss d_twid_idx,1 .bss d_data_idx,1 .bss d_grps_cnt,1 .sect "fft_prg" .asg AR2,REORDERED .asg AR3,ORIGINAL_INPUT .asg AR7,DATA_PROC_BUF start: SSBX FRCT STM #STACK+10,SP STM #sine,AR1 RPT #511 MVPD #sine1,*AR1+ STM #cosine

25、,AR1 RPT #511 MVPD cosine1,*AR1+ STM #d_input,ORIGINAL_INPUT STM #fft_data,DATA_PROC_BUF MVMM DATA_PROC_BUF,REORDERED STM #K_FFT_SIZE-1,BRC · RPTBD bit_rev_end-1 STM #K_FFT_SIZE,AR0 MVDD *ORIGINAL_INPUT+,*REORDERED+ MVDD *ORIGINAL_INPUT-,*REORDERED+ MAR *ORIGINAL_INPUT+0B bit_rev_end: .asg AR1,

26、GROUP_COUNTER .asg AR2,PX .asg AR3,QX .asg AR4,WR .asg AR5,WI .asg AR6,BUTTERFLY_COUNTER .asg AR7,STAGE_COUNTER STM #0,BK LD #-1,ASM STM #fft_data,PX STM #fft_data+K_DATA_IDX_1,QX STM K_FFT_SIZE/2-1,BRC LD *PX,16,A RPTBD stage1end-1 STM #K_DATA_IDX_1+1,AR0 SUB *QX,16,A,B ADD *QX,16,A STH A,ASM,*PX+

27、ST B,*QX+ |LD *PX,A SUB *QX,16,A,B ADD *QX,16,A STH A,ASM,*PX+0% ST B,*QX+0% |LD *PX,A stage1end: STM #fft_data,PX STM #fft_data+K_DATA_IDX_2,QX STM #K_FFT_SIZE/4-1,BRC LD *PX,16,A RPTBD stage2end-1 STM #K_DATA_IDX_2+1,AR0 SUB *QX,16,A,B ADD *QX,16,A STH A,ASM,*PX+ ST B,*QX+ |LD *PX,A SUB *QX,16,A,B

28、 ADD *QX,16,A STH A,ASM,*PX+ STH B,ASM,*QX+ MAR *QX+ ADD *PX,*QX,A SUB *PX,*QX-,B STH A,ASM,*PX+ SUB *PX,*QX,A ST B,*QX |LD *QX+,B ST A,*PX |ADD *PX+0%,A ST A,*QX+0% |LD *PX,A stage2end: STM #K_TWID_TBL_SIZE,BK ST #K_TWID_IDX_3,d_twid_idx STM #K_TWID_IDX_3,AR0 STM #cosine,WR STM #sine,WI STM #K_LOGN

29、-2-1,STAGE_COUNTER ST #K_FFT_SIZE/8-1,d_grps_cnt STM #K_FLY_COUNT_3-1,BUTTERFLY_COUNTER ST #K_DATA_IDX_3,d_data_idx stage: STM #fft_data,PX LD d_data_idx,A ADD *(PX),A STLM A,QX MVDK d_grps_cnt,GROUP_COUNTER group: MVMD BUTTERFLY_COUNTER,BRC RPTBD butterflyend-1 LD *WR,T MPY *QX+,A MAC *WI+0%,*QX-,A ADD PX,16,A,B ;B:=(QR*WR+QI*WI)+PR ST B,*PX ;PR':=(QR*WR+QI*WI)+PR)/2 |SUB *PX+,B ST B,*QX |MPY *QX+,A MAS *QX,*WR+0%,A ADD *PX,16,A,B ST B,*QX+ |SUB *PX,B LD *WR,T ST B,*PX+ |MPY *QX+,A butterflyend: PSHM AR0 MVDK d_data_idx,AR0 MAR *PX+0 MAR *QX+0 BANZD group,*GROUP

溫馨提示

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

評(píng)論

0/150

提交評(píng)論