




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 DSP原理與應(yīng)用教程課程設(shè)計(jì) DSP原理與應(yīng)用(yngyng)教程課程設(shè)計(jì)說明書課題(kt):基于TMS320VC5416的簡(jiǎn)易(jiny)信號(hào)分析儀設(shè)計(jì)專業(yè): 電子信息工程 班級(jí): 電子信息工程1102班 姓名: 陳瑋 學(xué)號(hào): 3110209424 指導(dǎo)老師: 方衛(wèi)東、李錦彬、朱悅涵 2014年 12 月 14日 - 12月 26日 摘要(zhiyo)系統(tǒng)(xtng)基于快速傅立葉變換(FFT)算法(sun f),以TMS320VC5416為控制與數(shù)據(jù)處理核心,通過CCS開發(fā)環(huán)境以及MATLAB模擬實(shí)現(xiàn)對(duì)音頻信號(hào)頻率成分的分析。系統(tǒng)由電源模塊、音頻輸入輸出模塊、時(shí)鐘模塊等組成。通過A/DC
2、采樣并進(jìn)行FFT變換,分析音頻信號(hào)的頻譜結(jié)構(gòu)。關(guān)鍵詞: 音頻信號(hào),CCS,F(xiàn)FT, 頻譜目錄(ml) TOC o 1-3 h z u HYPERLINK l _Toc407306637 摘要(zhiyo) PAGEREF _Toc407306637 h 2 HYPERLINK l _Toc407306638 一、設(shè)計(jì)任務(wù)(rn wu)與目標(biāo) PAGEREF _Toc407306638 h 4 HYPERLINK l _Toc407306639 1.1設(shè)計(jì)課題 PAGEREF _Toc407306639 h 4 HYPERLINK l _Toc407306640 1.2設(shè)計(jì)要求 PAGEREF
3、_Toc407306640 h 4 HYPERLINK l _Toc407306641 二、諧波的概念 PAGEREF _Toc407306641 h 4 HYPERLINK l _Toc407306642 三、諧波的分析方法 PAGEREF _Toc407306642 h 4 HYPERLINK l _Toc407306643 2.1模擬電路 PAGEREF _Toc407306643 h 4 HYPERLINK l _Toc407306644 2.2傅立葉變換 PAGEREF _Toc407306644 h 5 HYPERLINK l _Toc407306645 2.3小波變換 PAGER
4、EF _Toc407306645 h 5 HYPERLINK l _Toc407306646 四、DFT/FFT分析原理 PAGEREF _Toc407306646 h 5 HYPERLINK l _Toc407306647 4.1 DFT計(jì)算公式 PAGEREF _Toc407306647 h 5 HYPERLINK l _Toc407306648 4.2 N點(diǎn)DFT的計(jì)算量 PAGEREF _Toc407306648 h 6 HYPERLINK l _Toc407306649 4.3旋轉(zhuǎn)因子WN的特性 PAGEREF _Toc407306649 h 6 HYPERLINK l _Toc40
5、7306650 4.4基-2 FFT算法推導(dǎo) PAGEREF _Toc407306650 h 6 HYPERLINK l _Toc407306651 4.5 N點(diǎn)基-2 FFT算法的計(jì)算量 PAGEREF _Toc407306651 h 10 HYPERLINK l _Toc407306652 4.6 N點(diǎn)基-2 FFT算法的實(shí)現(xiàn)方法 PAGEREF _Toc407306652 h 10 HYPERLINK l _Toc407306653 4.6.1對(duì)于輸入數(shù)據(jù)序列進(jìn)行倒位序變換 PAGEREF _Toc407306653 h 10 HYPERLINK l _Toc407306654 4.6.
6、2蝶形運(yùn)算的循環(huán)結(jié)構(gòu) PAGEREF _Toc407306654 h 11 HYPERLINK l _Toc407306655 4.6.3浮點(diǎn)到定點(diǎn)轉(zhuǎn)換需要注意的關(guān)鍵問題 PAGEREF _Toc407306655 h 11 HYPERLINK l _Toc407306656 4.6.4計(jì)算過程中的溢出問題 PAGEREF _Toc407306656 h 12 HYPERLINK l _Toc407306657 五、硬件系統(tǒng) PAGEREF _Toc407306657 h 12 HYPERLINK l _Toc407306658 5.1硬件電路的總體框圖 PAGEREF _Toc4073066
7、58 h 12 HYPERLINK l _Toc407306659 5.2各子模塊的組成 PAGEREF _Toc407306659 h 13 HYPERLINK l _Toc407306660 5.2.1電源模塊 PAGEREF _Toc407306660 h 13 HYPERLINK l _Toc407306661 5.2.2時(shí)鐘模塊 PAGEREF _Toc407306661 h 14 HYPERLINK l _Toc407306662 5.2.3音頻輸入輸出模塊 PAGEREF _Toc407306662 h 15 HYPERLINK l _Toc407306663 5.2.4 TMS
8、320VC5416和CODEC接口 PAGEREF _Toc407306663 h 16 HYPERLINK l _Toc407306664 5.2.5 TMS320VC5416DSP最小系統(tǒng) PAGEREF _Toc407306664 h 17 HYPERLINK l _Toc407306665 六、基于MATLAB的程序仿真 PAGEREF _Toc407306665 h 18 HYPERLINK l _Toc407306666 6.1程序流程圖 PAGEREF _Toc407306666 h 18 HYPERLINK l _Toc407306667 6.2 MATLAB構(gòu)造音頻信號(hào) PA
9、GEREF _Toc407306667 h 19 HYPERLINK l _Toc407306668 6.3仿真步驟 PAGEREF _Toc407306668 h 19 HYPERLINK l _Toc407306669 6.4仿真結(jié)果 PAGEREF _Toc407306669 h 20 HYPERLINK l _Toc407306670 6.5結(jié)果分析 PAGEREF _Toc407306670 h 20 HYPERLINK l _Toc407306671 七、課程設(shè)計(jì)總結(jié) PAGEREF _Toc407306671 h 21 HYPERLINK l _Toc407306672 八、參考
10、文獻(xiàn) PAGEREF _Toc407306672 h 22 HYPERLINK l _Toc407306673 附錄 PAGEREF _Toc407306673 h 22一、設(shè)計(jì)(shj)任務(wù)與目標(biāo)1.1設(shè)計(jì)(shj)課題基于TMS320VC5416的簡(jiǎn)易(jiny)信號(hào)分析儀設(shè)計(jì)1.2設(shè)計(jì)要求1.給出算法原理2.寫出應(yīng)用軟件流程圖3.以TMS320VC5416 DSP為核心,設(shè)計(jì)一DSP應(yīng)用系統(tǒng),用DSP C語言和匯編混合編程的方法設(shè)計(jì)應(yīng)用軟件,實(shí)現(xiàn)音頻信號(hào)功率譜分析,并驗(yàn)證最終的分析結(jié)果。最后按要求寫出設(shè)計(jì)說明書,繪出設(shè)計(jì)的軟硬件系統(tǒng).1.3設(shè)計(jì)目標(biāo) 學(xué)習(xí)FFT算法在功率譜分析中的應(yīng)用;以
11、TMS320VC5416 DSP為核心CPU,設(shè)計(jì)一小型DSP應(yīng)用系統(tǒng),編制軟件實(shí)現(xiàn)頻譜分析,在CCS上觀察分析的結(jié)果.二、諧波的概念任何周期性波形均可分解為一個(gè)基頻正弦波加上許多高次頻率的正弦波,高次頻率是基頻的整倍數(shù)(N,只能為整數(shù)),直流成分稱為0次諧波,基波稱為1次諧波,二次以上的波形稱為高次諧波,其中偶次頻率的波形稱為偶次諧波,奇次頻率的波形稱為奇次諧波。三、諧波的分析方法2.1.模擬電路 消除諧波的方法很多,即有主動(dòng)型,又有被動(dòng)型;既有無源的,也有有源的,還有混合型的,目前較為先進(jìn)的是采用有源電力濾波器。但由于其檢測(cè)環(huán)節(jié)多采用模擬電路,因而造價(jià)較高,且由于模擬帶通濾波器對(duì)頻率和溫度
12、的變化非常敏感,故使其基波幅值誤差很難控制在10%以內(nèi),嚴(yán)重影響了有源濾波器的控制性能。近年來,人工神經(jīng) HYPERLINK /network/ 網(wǎng)絡(luò)的研究取得了較大進(jìn)展,由于神經(jīng)元有自適應(yīng)和自學(xué)習(xí)能力,且結(jié)構(gòu)簡(jiǎn)單,輸入輸出關(guān)系明了,因此可用神經(jīng)元替代自適應(yīng)濾波器,再用一對(duì)與基波頻率相同,相位相差90度的正弦向量作為神經(jīng)元的輸入。由神經(jīng)元先得到基波電流,然后檢測(cè)出應(yīng)補(bǔ)償?shù)碾娏鳎瑥亩瓿芍C波電流的檢測(cè)。但人工神經(jīng)網(wǎng)絡(luò)的硬件目前還是一個(gè)比較薄弱的環(huán)節(jié),限制了其應(yīng)用范圍。2.2.傅立葉變換(binhun)利用傅立葉變換可在數(shù)字域進(jìn)行(jnxng)諧波檢測(cè),電力系統(tǒng)的諧波分析,目前大都是通過該方法實(shí)現(xiàn)
13、的,離散傅立葉變換所需要處理的是經(jīng)過采樣和A/D轉(zhuǎn)換得到的數(shù)字信號(hào),設(shè)待測(cè)信號(hào)為x(t),采樣間隔為 t秒,采樣頻率 =1/ t滿足采樣定理,即 大于信號(hào)最高頻率分量的2倍,則采樣信號(hào)為x(n t),并且采樣信號(hào)總是有限長(zhǎng)度的,即n=0,1N-1。這相當(dāng)于對(duì)無限長(zhǎng)的信號(hào)做了截?cái)?,因而造成了傅立葉變換的泄露現(xiàn)象,產(chǎn)生誤差。此外,對(duì)于離散傅立葉變換來說,如果不是整數(shù)周期采樣,那么即使信號(hào)只含有單一頻率,離散傅立葉變換也不可能求出信號(hào)的準(zhǔn)確參數(shù),因而出現(xiàn)柵欄效應(yīng)。通過加窗可以減小泄露現(xiàn)象的影響。2.3.小波變換(binhun)小波變換已廣泛應(yīng)用于信號(hào)分析、語音識(shí)別與合成、自動(dòng)控制、圖象處理與分析等領(lǐng)
14、域。電力諧波是由各種頻率成分合成的、隨機(jī)的、出現(xiàn)和消失都非常突然的信號(hào),在應(yīng)用離散傅立葉變換進(jìn)行處理受到局限的情況下,可充分發(fā)揮小波變換的優(yōu)勢(shì)。即對(duì)諧波采樣離散后,利用小波變換對(duì)數(shù)字信號(hào)進(jìn)行處理,從而實(shí)現(xiàn)對(duì)諧波的精確測(cè)定。小波可以看作是一個(gè)雙窗函數(shù),對(duì)一信號(hào)進(jìn)行小波變換相當(dāng)于從這一時(shí)頻窗內(nèi)的信息提取信號(hào)。對(duì)于檢測(cè)高頻信息,時(shí)窗變窄,可對(duì)信號(hào)的高頻分量做細(xì)致的觀測(cè);對(duì)于分析低頻信息,這時(shí)時(shí)窗自動(dòng)變寬,可對(duì)信號(hào)的低頻分量做概貌分析。所以小波變換具有自動(dòng)“調(diào)焦”性。其次,小波變換是按頻帶而不是按頻點(diǎn)的方式處理頻域信息,因此信號(hào)頻率的微小波動(dòng)不會(huì)對(duì)處理產(chǎn)生很大的影響,并不要求對(duì)信號(hào)進(jìn)行整周期采樣。另外
15、,由小波變換的時(shí)間局部可知,在信號(hào)的局部發(fā)生波動(dòng)時(shí),不會(huì)象傅立葉變換那樣把影響擴(kuò)散到整個(gè)頻譜,而只改變當(dāng)時(shí)一小段時(shí)間的頻譜分布,因此,采用小波變換可以跟蹤時(shí)變和暫態(tài)信號(hào)。四、DFT/FFT分析原理4.1 DFT計(jì)算公式其中x(n)表示輸入的離散數(shù)字信號(hào)序列,WN為旋轉(zhuǎn)因子,X(k)為輸入序列x(n)對(duì)應(yīng)(duyng)的N個(gè)離散頻率點(diǎn)的相對(duì)幅度。一般情況下,假設(shè)x(n)來自于低通采樣,采樣頻率為fs,那么X(k)表示了從-fs/2率開始,頻率間隔為fs/N,到fs/2-fs/N截至的N個(gè)頻率點(diǎn)的相對(duì)幅度。因?yàn)镈FT計(jì)算得到的一組離散頻率幅度值實(shí)際上是在頻率軸上從成周期變化的,即X(k+N)=X(
16、k)。因此任意取連續(xù)的N個(gè)點(diǎn)均可以表示DFT的計(jì)算效果,負(fù)頻率成分比較抽象,難于理解,根據(jù)X(k)的周期特性,于是我們又可以認(rèn)為X(k)表示了從零頻率開始,頻率間隔為fs/N,到fs-fs/N截至的N個(gè)頻率點(diǎn)的相對(duì)幅度。4.2 N點(diǎn)DFT的計(jì)算(j sun)量根據(jù)(1)式給出的DFT計(jì)算公式,我們可以知道每計(jì)算一個(gè)頻率點(diǎn)X(k)均需要進(jìn)行N次復(fù)數(shù)乘法(chngf)和N-1次復(fù)數(shù)加法,計(jì)算N各點(diǎn)的X(k)共需要N2次復(fù)數(shù)乘法和N*(N-1)次復(fù)數(shù)加法。當(dāng)x(n)為實(shí)數(shù)的情況下,計(jì)算N點(diǎn)的DFT需要2*N2次實(shí)數(shù)乘法,2*N*(N-1)次實(shí)數(shù)加法。4.3旋轉(zhuǎn)因子WN的特性1.WN的對(duì)稱性 2.WN
17、的周期性3.WN的可約性根據(jù)以上這些性質(zhì),我們可以得到式(5)的一系列有用結(jié)果4.4基-2 FFT算法(sun f)推導(dǎo)假設(shè)采樣序列點(diǎn)數(shù)為N=2L,L為整數(shù),如果不滿足這個(gè)條件可以人為地添加若干個(gè)0以使采樣序列點(diǎn)數(shù)滿足這一要求。首先我們將序列x(n)按照(nzho)奇偶分為兩組如下:于是(ysh)根據(jù)DFT計(jì)算公式(1)有:至此,我們將一個(gè)N點(diǎn)的DFT轉(zhuǎn)化為了式(7)的形式,此時(shí)k的取值為0到N-1,現(xiàn)在分為兩段來討論,當(dāng)k為0N/2-1的時(shí)候,因?yàn)閤1(r),x2(r)為N/2點(diǎn)的序列,因此,此時(shí)式(7)可以寫為:而當(dāng) k取值為N/2N-1時(shí),k用k+N/2取代,k取值為0N/2-1。對(duì)式(
18、7)化簡(jiǎn)可得:綜合以上推導(dǎo)我們可以(ky)得到如下結(jié)論:一個(gè)N點(diǎn)的DFT變換過程可以用兩個(gè)N/2點(diǎn)的DFT變換過程來表示,其具體公式如式(10)所示DFT快速算法的迭代公式:上式中X(k)為偶數(shù)項(xiàng)分支(fnzh)的離散傅立葉變換,X(k)為奇數(shù)項(xiàng)分支的離散傅立葉變換。 式(10)的計(jì)算過程可以用圖1的蝶形算法流圖直觀地表示出來。圖1 時(shí)間(shjin)抽取法蝶形運(yùn)算流圖在圖1中,輸入為兩個(gè)N/2點(diǎn)的DFT輸出為一個(gè)N點(diǎn)的DFT結(jié)果,輸入輸出點(diǎn)數(shù)一致。運(yùn)用這種表示方法,8點(diǎn)的DFT可以用圖2來表示:圖2 8點(diǎn)DFT的4點(diǎn)分解(fnji)根據(jù)公式(10),一個(gè)N點(diǎn)的DFT可以由兩個(gè)N/2點(diǎn)的DFT
19、運(yùn)算構(gòu)成,再結(jié)合(jih)圖1的蝶形信號(hào)流圖可以得到圖2的8點(diǎn)DFT的第一次分解。該分解可以用以下幾個(gè)步驟來描述: 1.將N點(diǎn)的輸入序列(xli)按奇偶分為2組分別為N/2點(diǎn)的序列 2.分別對(duì)1中的每組序列進(jìn)行DFT變換得到兩組點(diǎn)數(shù)為N/2的DFT變換值X1和X2 3.按照蝶形信號(hào)流圖將2的結(jié)果組合為一個(gè)N點(diǎn)的DFT變換結(jié)果根據(jù)式(10)我們可以對(duì)圖2中的4點(diǎn)DFT進(jìn)一步分解,得到圖3的結(jié)果,分解步驟和前面一致。圖3 8點(diǎn)DFT的2點(diǎn)分解最后對(duì)2點(diǎn)DFT進(jìn)一步分解得到最終的8點(diǎn)FFT信號(hào)計(jì)算流圖:圖4 8點(diǎn)DFT的全分解(fnji)從圖2到圖4的過程中關(guān)于旋轉(zhuǎn)系數(shù)的變化規(guī)律需要說明一下??雌饋?/p>
20、似乎向前推一級(jí),在奇數(shù)分組部分的旋轉(zhuǎn)系數(shù)因子增量(zn lin)似乎就要變大,其實(shí)不是這樣。事實(shí)上奇數(shù)分組部分的旋轉(zhuǎn)因子指數(shù)每次增量固定為1,只是因?yàn)槊肯蚯巴七M(jìn)一次,該分組序列的數(shù)據(jù)個(gè)數(shù)變少了,為了統(tǒng)一使用以原數(shù)據(jù)N為基的旋轉(zhuǎn)因子就進(jìn)行了變換導(dǎo)致的。每一次分組奇數(shù)部分的系數(shù)WN,這里的N均為本次分組前的序列點(diǎn)數(shù)。以上邊的8點(diǎn)DFT為例,第一次分組N=8,第二次分組N為4,為了統(tǒng)一根據(jù)式(4)進(jìn)行了變換將N變?yōu)榱?,但指數(shù)相應(yīng)的需要乘以2。4.5 N點(diǎn)基-2 FFT算法(sun f)的計(jì)算量從圖4可以看到N點(diǎn)DFT的FFT變換可以轉(zhuǎn)為log2(N)級(jí)級(jí)聯(lián)的蝶形運(yùn)算,每一級(jí)均包含有N/2次蝶形計(jì)算
21、。而每一個(gè)蝶形運(yùn)算包含了1次復(fù)數(shù)乘法,2次復(fù)數(shù)加法。因此N點(diǎn)FFT計(jì)算的總計(jì)算量為:復(fù)數(shù)乘法N/2log2(N) 復(fù)數(shù)加法Nlog2(N)。假設(shè)被采樣的序列為實(shí)數(shù)序列,那么也只有第一級(jí)的計(jì)算為實(shí)數(shù)與復(fù)數(shù)的混合計(jì)算,經(jīng)過一次迭代后來的計(jì)算均變?yōu)閺?fù)數(shù)計(jì)算,在這一點(diǎn)上和直接的DFT計(jì)算不一致。因此對(duì)于輸入序列是復(fù)數(shù)還是實(shí)數(shù)對(duì)FFT算法的效率影響較小。一次復(fù)數(shù)乘法包含了4次實(shí)數(shù)乘法,2次實(shí)數(shù)加法,一次復(fù)數(shù)加法包含了2次復(fù)數(shù)加法。因此對(duì)于N點(diǎn)的FFT計(jì)算需要總共的實(shí)數(shù)乘法數(shù)量為:2Nlog2(N);總的復(fù)數(shù)加法次數(shù)為:2xNxlog2(N)。4.6 N點(diǎn)基-2 FFT算法的實(shí)現(xiàn)方法從圖4我們可以總結(jié)出對(duì)
22、于點(diǎn)數(shù)為N=2L的DFT快速計(jì)算方法的流程:4.6.1對(duì)于輸入數(shù)據(jù)序列進(jìn)行倒位序變換該變換的目的是使輸出能夠得到X(0)X(N-1)的順序序列,同樣以8點(diǎn)DFT為例,該變換將順序輸入序列x(0)x(7)變?yōu)槿鐖D4的x(0),x(4),x(2),x(6),x(1),x(5),x(3),x(7)序列。其實(shí)現(xiàn)方法是:假設(shè)順序輸入序列一次村在A(0)A(N-1)的數(shù)組元素中,首先我們將數(shù)組下標(biāo)進(jìn)行二進(jìn)制化(例:對(duì)于點(diǎn)數(shù)為8的序列只需要LOG2(8) = 3位二進(jìn)制序列表示,序號(hào)6就表示為110)。二進(jìn)制化以后就是將二進(jìn)制序列進(jìn)行倒位,倒位的過程就是將原序列從右到左書寫一次構(gòu)成新的序列,例如序號(hào)為6的二
23、進(jìn)制表示為110,倒位后變?yōu)榱?11,即使十進(jìn)制的3。第三步就是將倒位前和倒位后的序號(hào)對(duì)應(yīng)的數(shù)據(jù)互換。依然以序號(hào)6為例,其互換過程如下:Temp = A(6); A(6) = A(3); A(3) = A(6);實(shí)際上考慮(kol)到執(zhí)行效率,如果對(duì)于每一次輸入的數(shù)據(jù)都需要這個(gè)處理過程是非常浪費(fèi)時(shí)間的。我們可以采用指向指針的指針來實(shí)現(xiàn)該過程,或者是采用指針數(shù)組來實(shí)現(xiàn)該過程。4.6.2蝶形運(yùn)算(yn sun)的循環(huán)結(jié)構(gòu)從圖4中我們可以看到對(duì)于點(diǎn)數(shù)為N = 2L的fft運(yùn)算,可以分解為L(zhǎng)階蝶形圖級(jí)聯(lián),每一階蝶形圖內(nèi)又分為M個(gè)蝶形組,每個(gè)蝶形組內(nèi)包含K個(gè)蝶形。根據(jù)這一點(diǎn)我們就可以構(gòu)造三階循環(huán)來實(shí)現(xiàn)蝶
24、形運(yùn)算。編程過程需要注意旋轉(zhuǎn)因子(ynz)與蝶形階數(shù)和蝶形分組內(nèi)的蝶形個(gè)數(shù)存在關(guān)聯(lián)。4.6.3浮點(diǎn)到定點(diǎn)轉(zhuǎn)換需要注意的關(guān)鍵問題上邊的分析都是基于浮點(diǎn)運(yùn)算來得到的結(jié)論,事實(shí)上大多數(shù)嵌入式系統(tǒng)對(duì)浮點(diǎn)運(yùn)算支持甚微,因此在嵌入式系統(tǒng)中進(jìn)行離散傅里葉變換一般都應(yīng)該采用定點(diǎn)方式。對(duì)于簡(jiǎn)單的DFT運(yùn)算從浮點(diǎn)到定點(diǎn)顯得非常容易。根據(jù)式(1),假設(shè)輸入x(n)是經(jīng)過AD采樣的數(shù)字序列,AD位數(shù)為12位,則輸入信號(hào)范圍為04096。為了進(jìn)行定點(diǎn)運(yùn)算我們將旋轉(zhuǎn)因子實(shí)部虛部同時(shí)擴(kuò)大212倍,取整數(shù)部分代表旋轉(zhuǎn)因子。之后,我們可以按照(1)式計(jì)算,得到的結(jié)果與原結(jié)果成比例關(guān)系,新的結(jié)果比原結(jié)果的212倍。但是,對(duì)于使用
25、蝶形運(yùn)算的fft我們不能采用這種簡(jiǎn)單的放大旋轉(zhuǎn)因子轉(zhuǎn)為整數(shù)計(jì)算的方式。因?yàn)閒ft是一個(gè)非對(duì)稱迭代過程,假設(shè)我們對(duì)旋轉(zhuǎn)因子進(jìn)行了放大,根據(jù)蝶形流圖我們可以發(fā)現(xiàn)其最終的結(jié)果是,不同的輸入被放大了不同的倍數(shù),對(duì)于第一個(gè)輸入x(0)永遠(yuǎn)也不會(huì)放大。舉一個(gè)更加形象的例子,還是以圖4為例。從圖中可以看出右側(cè)的X(0)可以直接用下式表示: 可以通過簡(jiǎn)單的右移位運(yùn)算將之前的放大(fngd)抵消,而右移位又代替了 從上式我們(w men)可以看到不同輸入項(xiàng)所乘的旋轉(zhuǎn)因子個(gè)數(shù)(注意這里是個(gè)數(shù),就算是wn0,也被考慮進(jìn)去了,因?yàn)樵跊]有放大(fngd)時(shí)wn0等于1,放大后所有旋轉(zhuǎn)因子指數(shù)模均不為1,因此需要考慮)。
26、這就導(dǎo)致輸入不平衡,運(yùn)算結(jié)果不正確。經(jīng)查閱相關(guān)資料,比較妥善的做法是,首先對(duì)所有旋轉(zhuǎn)因子都放大2Q倍,Q必須要大于等于L,以保證不同旋轉(zhuǎn)因子的差異化。旋轉(zhuǎn)因子放大,為了保證其模為1,在每一次蝶形運(yùn)算的乘積運(yùn)算中我們需要將結(jié)果右移Q位來抵消這個(gè)放大,從而得到正確的結(jié)果。之所以采用放大倍數(shù)必須是2的整數(shù)次冪的原因也在于此,我們之后可以通過簡(jiǎn)單的右移位運(yùn)算將之前的放大抵消,而右移位又代替了除法運(yùn)算,大大節(jié)省了時(shí)間。4.6.4計(jì)算過程中的溢出問題最后需要注意的一個(gè)問題就是計(jì)算過程中的溢出問題。在實(shí)際應(yīng)用中,AD雖然有12位的位寬,但是采樣得到的信號(hào)可能較小,例如可能在08之間波動(dòng),也就是說實(shí)際可能只有
27、3位的情況。這種情況下為了在計(jì)算過程中不丟失信息,一般都需要先將輸入數(shù)據(jù)左移P位進(jìn)行放大處理,數(shù)據(jù)放大可能會(huì)導(dǎo)致溢出,從而使計(jì)算錯(cuò)誤,而溢出的極限情況是這樣:假設(shè)我們數(shù)據(jù)位寬為D位(不包括符號(hào)位),AD采樣位數(shù)B位,數(shù)字放大倍數(shù)P位,旋轉(zhuǎn)因此放大倍數(shù)Q位,F(xiàn)FT級(jí)聯(lián)運(yùn)算帶來的最大累加倍數(shù)L位。我們得到:假設(shè)AD位寬12,數(shù)據(jù)位寬32,符號(hào)位1位,因此有效位寬31位,采樣點(diǎn)數(shù)N,那么我們可以得到log2(N)+P+Q=L可以得到放大倍數(shù)P VECT PAGE 0.sysregs: BIOSREGS PAGE 1 .trcinit: EPROG PAGE 0 .gblinit: EPROG PAG
28、E 0 frt: EPROG PAGE 0 .text: EPROG PAGE 0/* 已初始化段,包含所有的可執(zhí)行代碼、字符串和編譯器生成的常數(shù) */ .cinit: EPROG PAGE 0/* 已初始化段,包含初始化變量和常數(shù)表 */ .pinit: EPROG PAGE 0/* 已初始化段,包含運(yùn)行時(shí)調(diào)用的全局(qunj)目標(biāo)構(gòu)造器列表 */ .sysinit: EPROG PAGE 0 .bss: IDATA PAGE 1/* 未初始化段 */ .far: IDATA PAGE 1 .const: IDATA PAGE 1/* 已初始化段,包含(bohn)由C限定詞const定義的字
29、符串常量和數(shù)據(jù) */ .switch: IDATA PAGE 1/* 已初始化段 */ .sysmem: IDATA PAGE 1/* 未初始化段,為動(dòng)態(tài)(dngti)存儲(chǔ)器函數(shù)malloc等分配存儲(chǔ)器空間 */ .cio: IDATA PAGE 1 .MEM$obj: IDATA PAGE 1 .sysheap: IDATA PAGE 1 .stack: IDATA PAGE 1/* 未初始化段,為系統(tǒng)堆棧分配存儲(chǔ)器 */ fft.c#include #include #include #include #include fft.h#include sin.incconst float da
30、taR256=/y=100*sin(2*pi/N)*2*n)+200*sin(2*pi/N)*4*n)+300*sin(2*pi/N)*6*n)0,68.529,135.91,201,262.72,320.05,372.05,417.89,456.85,488.37,511.99,527.43,534.57,533.42,524.17,507.16,482.84,451.84,414.88,372.78,326.45,276.88,225.08,172.11,119,66.802,16.49,-31.003,-74.826,-114.22,-148.55,-177.27,-200,-216.4
31、8,-226.58,-230.34,-227.9,-219.56,-205.74,-186.96,-163.84,-137.1,-107.51,-75.891,-43.102,-10,22.563,53.768,82.843,109.08,131.86,150.65,165.02,174.66,179.4,179.16,174.01,164.13,149.82,131.49,109.64,84.883,57.869,29.322,7.3479e-014,-29.322,-57.869,-84.883,-109.64,-131.49,-149.82,-164.13,-174.01,-179.16
32、,-179.4,-174.66,-165.02,-150.65,-131.86,-109.08,-82.843,-53.768,-22.563,10,43.102,75.891,107.51,137.1,163.84,186.96,205.74,219.56,227.9,230.34,226.58,216.48,200,177.27,148.55,114.22,74.826,31.003,-16.49,-66.802,-119,-172.11,-225.08,-276.88,-326.45,-372.78,-414.88,-451.84,-482.84,-507.16,-524.17,-533
33、.42,-534.57,-527.43,-511.99,-488.37,-456.85,-417.89,-372.05,-320.05,-262.72,-201,-135.91,-68.529,1.6111e-012,68.529,135.91,201,262.72,320.05,372.05,417.89,456.85,488.37,511.99,527.43,534.57,533.42,524.17,507.16,482.84,451.84,414.88,372.78,326.45,276.88,225.08,172.11,119,66.802,16.49,-31.003,-74.826,
34、-114.22,-148.55,-177.27,-200,-216.48,-226.58,-230.34,-227.9,-219.56,-205.74,-186.96,-163.84,-137.1,-107.51,-75.891,-43.102,-10,22.563,53.768,82.843,109.08,131.86,150.65,165.02,174.66,179.4,179.16,174.01,164.13,149.82,131.49,109.64,84.883,57.869,29.322,-3.1247e-013,-29.322,-57.869,-84.883,-109.64,-13
35、1.49,-149.82,-164.13,-174.01,-179.16,-179.4,-174.66,-165.02,-150.65,-131.86,-109.08,-82.843,-53.768,-22.563,10,43.102,75.891,107.51,137.1,163.84,186.96,205.74,219.56,227.9,230.34,226.58,216.48,200,177.27,148.55,114.22,74.826,31.003,-16.49,-66.802,-119,-172.11,-225.08,-276.88,-326.45,-372.78,-414.88,
36、-451.84,-482.84,-507.16,-524.17,-533.42,-534.57,-527.43,-511.99,-488.37,-456.85,-417.89,-372.05,-320.05,-262.72,-201,-135.91,-68.529;float re_inputK_FFT_SIZE,im_inputK_FFT_SIZE;/ FFT/DFT運(yùn)算(yn sun)輸入float am_outputK_FFT_SIZE;/ FFT/DFT輸出(shch)諧波幅值float re_outputK_FFT_SIZE,im_outputK_FFT_SIZE;/ DFT運(yùn)算(y
37、n sun)輸出諧波的實(shí)部和虛部void clr_ram(void) unsigned int i;for (i=0;iK_FFT_SIZE;i+) am_outputi=0.0;re_inputi=im_inputi=0.0;re_outputi=im_outputi=0.0;/ 用于DFTvoid put_in(unsigned int N) int i;for(i=0;iN;i+) re_inputi=dataR256i/1.0;/ 實(shí)部im_inputi=0.0;/ 虛部/ 位倒序(do x)運(yùn)算void re_bit(unsigned int N)int i,j,M,s;float
38、temp;M=N/2;i=0;for(j=1;j=s) i=i-s;s=s/2;i=i+s;if(ji) temp=re_inputj;re_inputj=re_inputi;re_inputi=temp;temp=im_inputj;im_inputj=im_inputi;im_inputi=temp;/ 蝶形運(yùn)算(yn sun)void butterfly(unsigned int l) int i,j,r;/分別(fnbi)是級(jí)號(hào)、蝶群號(hào)、運(yùn)算蝶號(hào)int m1,m2,m3,m4;int N,k1,k2;float u,v;int x;N=1l;for(i=1;il+1;i+)/第i級(jí)/m
39、1=pow(2,i-1);/m1=1,2,4,8,16,32,64,128,.m1=1(i-1);m2=2*m1;/第i級(jí)的蝶群長(zhǎng)度m3=N/m2;/第i級(jí)包含的蝶形單元,即“群”個(gè)數(shù)for(j=0;jm3;j+)/第j號(hào)蝶群m4=j*m2;/m4=j*(2i) 蝶群址for(r=0;rm1;r+)/第r號(hào)運(yùn)算蝶k1 = (m4+r);/s=j*(2i)+r 蝶址k2 = (k1+m1);/u=Rek2*cos(2*p*r/m2)+Imk2*sin(2*p*r/m2);/v=Imk2*cos(2*p*r/m2)-Rek2*sin(2*p*r/m2);x = (1(l-i);x = x*r;u
40、= (re_inputk2*cos_tab256x)+(im_inputk2*sin_tab256x);v= (im_inputk2*cos_tab256x)-(re_inputk2*sin_tab256x);re_inputk2 = (re_inputk1-u);im_inputk2 = (im_inputk1-v);re_inputk1 = (re_inputk1+u);im_inputk1 = (im_inputk1+v);/ FFT運(yùn)算(yn sun)/ input: n=采樣(ci yn)點(diǎn)數(shù)N(必須是2的l次冪)void fft(unsigned int n,unsigned in
41、t l) re_bit(n);/ 位倒序(do x)butterfly(l);/ DFT運(yùn)算,計(jì)算結(jié)果為X(0),X(1),.X(N-1)/ sign=1:正變換;sign=-1:反變換void dft(int sign) int i,k;double c,q,w,s;q=(2.0*PI)/K_FFT_SIZE;for (k=0; kK_FFT_SIZE; k+) w=k*q;re_outputk=im_outputk=0.0;for (i=0; iK_FFT_SIZE; i+) unsigned int l;/d=i*w;/c=cos(d);/s=sin(d)*sign;l=(k*i)%K_
42、FFT_SIZE;c=cos_tab256l;s=sin_tab256l;re_outputk += (c*re_inputi+s*im_inputi);/ 計(jì)算(j sun)X(k)的實(shí)部im_outputk += (c*im_inputi-s*re_inputi);/ 計(jì)算(j sun)X(k)的虛部if (sign=-1) c=1.0/K_FFT_SIZE;for (k=0; kK_FFT_SIZE; k+) re_outputk=c*re_outputk;im_outputk=c*im_outputk;/ 計(jì)算(j sun)單次X(k),即只計(jì)算某一次諧波的值/ input:k=諧波次
43、數(shù)void dft_k(unsigned int k) int i;double c,s;re_outputk=im_outputk=0.0;for (i=0; iK_FFT_SIZE; i+) unsigned int l;l=(k*i)%K_FFT_SIZE;c=cos_tab256l;s=sin_tab256l;re_outputk += (c*re_inputi+s*im_inputi);/ 計(jì)算X(k)的實(shí)部 im_outputk += (c*im_inputi-s*re_inputi);/ 計(jì)算X(k)的虛部/ 求FFT運(yùn)算結(jié)果諧波的幅值/ input:n=采樣點(diǎn)數(shù)=諧波個(gè)數(shù)/ o
44、utput:am_output=諧波的幅值void get_am(unsigned int N) unsigned int i;for (i=0; iN; i+)am_outputi=sqrt(re_inputi*re_inputi+im_inputi*im_inputi);am_outputi /= (float)K_FFT_SIZE;am_outputi *= 2;if (am_outputi ZERO_VALVE)/ 屏蔽計(jì)算帶來的0的誤差am_outputi = 0.0;void get_am_dft(void) unsigned int i;for (i=0; iK_FFT_SIZE
45、; i+)am_outputi=sqrt(re_outputi*re_outputi+im_outputi*im_outputi);am_outputi /= (float)K_FFT_SIZE;am_outputi *= 2;if (am_outputi ZERO_VALVE)am_outputi = 0.0;#defineEXE_FFT0/ FFT運(yùn)算(yn sun)#defineEXE_DFT1/ DFT計(jì)算(j sun)所有諧波#defineEXE_DFT_K2/ DFT計(jì)算指定(zhdng)次諧波#defineEXE_MODEEXE_FFTvoid main() int m;clr_
46、ram();/ 清內(nèi)存put_in(K_FFT_SIZE);/ 偽A/D采樣#if EXE_MODE=EXE_FFT/ 快速傅里葉變換FFTfft(K_FFT_SIZE, K_LOGN);/ 得X(k),k=0,1,.,N-1get_am(K_FFT_SIZE);/ 求諧波幅值/ 快速傅里葉逆變換IFFTfor (m=0; mK_FFT_SIZE; m+)/ 求X(k)共軛復(fù)數(shù)im_inputm=-im_inputm;fft(K_FFT_SIZE, K_LOGN);for (m=0; mK_FFT_SIZE; m+)/ 最后取共軛并乘以1/N得到序列x(n),n=0,1,.,N-1im_inp
47、utm=-im_inputm/K_FFT_SIZE;re_inputm/=K_FFT_SIZE;if (abs(re_inputm) ZERO_VALVE)re_inputm = 0.0;if (abs(im_inputm) ZERO_VALVE)im_inputm = 0.0;asm( NOP);#endif#if EXE_MODE=EXE_DFTdft(1);get_am_dft();asm( NOP);#endif#if EXE_MODE=EXE_DFT_Kdft_k(5);get_am_dft();asm( NOP);#endifasm( NOP);while(1);基于MATLAB音
48、頻(ynpn)構(gòu)造代碼function st=mstgN=256Fs=2800;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;fc1=Fs/256*2;fc2=Fs/256*4;fc3=Fs/256*6;xt1=100*sin(2*pi*fc1*t);xt2=200*sin(2*pi*fc2*t);xt3=300*sin(2*pi*fc3*t);st=xt1+xt2+xt3;fxt=fft(st,N);dlmwrite(dsp.txt,st);subplot(3,1,1)plot(t,st);grid;xlabel(t/s);ylabel(s(t);ax
49、is(0,Tp,min(st),max(st);title(a)st的波形(b xn);subplot(3,1,2)stem(f,abs(fxt)/max(abs(fxt),.);grid;title(b)st的頻譜);axis(0,Fs/5,0,1.2);xlabel(f/Hz);ylabel(幅度(fd);基于MATLAB的SIN/COS的查表法代碼fidc=fopen(sin.inc,wt);fprintf(fidc,%s,const float cos_tab256=);fprintf(fidc,%s,1.0000,);for n=1:255a(n)=cos(2*pi/255)*1*n
50、);fprintf(fidc,%.4f,a(n);endfprintf(fidc,%s,);fprintf(fidc,nnn);fprintf(fidc,%s,const float sin_tab256=);fprintf(fidc,%s,0,);for n=1:255a(n)=sin(2*pi/255)*1*n);fprintf(fidc,%.4f,a(n);endfprintf(fidc,%s,);fclose(fidc);sin.inc: const floatcos_tab256=1.0000,0.9997,0.9988,0.9973,0.9951,0.9924,0.9891,0.9
51、852,0.9806,0.9755,0.9698,0.9635,0.9566,0.9491,0.9411,0.9325,0.9233,0.9135,0.9032,0.8924,0.8810,0.8691,0.8566,0.8437,0.8302,0.8162,0.8017,0.7867,0.7713,0.7554,0.7390,0.7222,0.7049,0.6872,0.6691,0.6506,0.6317,0.6124,0.5928,0.5727,0.5524,0.5317,0.5106,0.4893,0.4677,0.4457,0.4235,0.4011,0.3784,0.3555,0.
52、3324,0.3090,0.2855,0.2618,0.2379,0.2139,0.1898,0.1656,0.1412,0.1168,0.0923,0.0677,0.0431,0.0185,-0.0062,-0.0308,-0.0554,-0.0800,-0.1045,-0.1290,-0.1534,-0.1777,-0.2019,-0.2260,-0.2499,-0.2737,-0.2973,-0.3207,-0.3439,-0.3670,-0.3898,-0.4124,-0.4347,-0.4567,-0.4785,-0.5000,-0.5212,-0.5421,-0.5626,-0.5
53、828,-0.6026,-0.6221,-0.6412,-0.6599,-0.6782,-0.6961,-0.7136,-0.7307,-0.7473,-0.7634,-0.7791,-0.7943,-0.8090,-0.8233,-0.8370,-0.8502,-0.8629,-0.8751,-0.8868,-0.8979,-0.9085,-0.9185,-0.9280,-0.9369,-0.9452,-0.9529,-0.9601,-0.9667,-0.9727,-0.9781,-0.9830,-0.9872,-0.9908,-0.9939,-0.9963,-0.9981,-0.9993,
54、-0.9999,-0.9999,-0.9993,-0.9981,-0.9963,-0.9939,-0.9908,-0.9872,-0.9830,-0.9781,-0.9727,-0.9667,-0.9601,-0.9529,-0.9452,-0.9369,-0.9280,-0.9185,-0.9085,-0.8979,-0.8868,-0.8751,-0.8629,-0.8502,-0.8370,-0.8233,-0.8090,-0.7943,-0.7791,-0.7634,-0.7473,-0.7307,-0.7136,-0.6961,-0.6782,-0.6599,-0.6412,-0.6
55、221,-0.6026,-0.5828,-0.5626,-0.5421,-0.5212,-0.5000,-0.4785,-0.4567,-0.4347,-0.4124,-0.3898,-0.3670,-0.3439,-0.3207,-0.2973,-0.2737,-0.2499,-0.2260,-0.2019,-0.1777,-0.1534,-0.1290,-0.1045,-0.0800,-0.0554,-0.0308,-0.0062,0.0185,0.0431,0.0677,0.0923,0.1168,0.1412,0.1656,0.1898,0.2139,0.2379,0.2618,0.2
56、855,0.3090,0.3324,0.3555,0.3784,0.4011,0.4235,0.4457,0.4677,0.4893,0.5106,0.5317,0.5524,0.5727,0.5928,0.6124,0.6317,0.6506,0.6691,0.6872,0.7049,0.7222,0.7390,0.7554,0.7713,0.7867,0.8017,0.8162,0.8302,0.8437,0.8566,0.8691,0.8810,0.8924,0.9032,0.9135,0.9233,0.9325,0.9411,0.9491,0.9566,0.9635,0.9698,0.9755,0.9806,0.9852,0.9891,0.9924,0.9951,0.9973,0.9988,0.9997,1.0000,const float sin_tab256=0,0.0246,0.0493,0.0739,0.0984,0.1229,0.1473,0.1716,0.1958,0.2199,0.243
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝飾工程監(jiān)督方案(3篇)
- 創(chuàng)業(yè)團(tuán)隊(duì)初期管理制度
- 華泰證券風(fēng)險(xiǎn)管理制度
- 學(xué)校采購預(yù)算管理制度
- 線路保護(hù)測(cè)評(píng)方案(3篇)
- 小學(xué)黨員義工管理制度
- 農(nóng)民開店日常管理制度
- 灌渠隧洞加固方案(3篇)
- 租賃場(chǎng)地服務(wù)方案(3篇)
- DB62T 4266-2020 珍珠梅育苗技術(shù)規(guī)程
- 財(cái)務(wù)人員銷售技巧培訓(xùn)課件
- GB/T 45545-2025廚房家具配合尺寸
- 四川甘孜州能源發(fā)展集團(tuán)有限公司招聘真題2024
- 2024年高考化學(xué)試卷(山東)(解析卷)
- 2025新款上海勞動(dòng)合同樣本
- 2025至2030中國超硬刀具市場(chǎng)現(xiàn)狀調(diào)查及前景方向研究報(bào)告
- 2025中國工商銀行總行本部秋季校園招聘100人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 外觀全檢員培訓(xùn)
- 貴陽小升初面試題及答案
- 直流電動(dòng)機(jī)結(jié)構(gòu)與工作原理課件
- 《尋找消失的分?jǐn)?shù)》期中考試分析班會(huì)課件
評(píng)論
0/150
提交評(píng)論