版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上DSP課程設計 姓名: 學號: 日期:一、實驗目的1. 加深對DFT算法原理和基本性質的理解;2. 熟悉FFT的算法原理和FFT子程序的算法流程和應用;3. 學習用FFT對連續(xù)信號和時域信號進行頻譜分析的方法;4. 學習DSP中FFT的設計和編程思想;5. 學習使用CCS的波形觀察器觀察波形和頻譜情況;二、實驗內容 用DSP匯編語言及C語言進行編程,實現(xiàn)FFT運算、對輸入信號進行頻譜分析。三、實驗原理快速傅里葉變換FFT旋轉因子WN 有如下的特性。對稱性:WNk+N/2=-WNk (2)周期性:WNn(N-k)=WNk(N-n)=WN-nk (3)利用這些特性,既可以
2、使DFT中有些項合并,減少了乘法積項,又可以將長序列的DFT分解成幾個短序列的DFT。FFT就是利用了旋轉因子的對稱性和周期性來減少運算量的。FFT的算法是將長序列的DFT分解成短序列的DFT。例如:N為偶數(shù)時,先將N點的DFT分解為兩個N/2點的DFT,使復數(shù)乘法減少一半:再將每個N/2點的DFT分解成N/4點的DFT,使復數(shù)乘又減少一半,繼續(xù)進行分解可以大大減少計算量。最小變換的點數(shù)稱為基數(shù),對于基數(shù)為2的FFT算法,它的最小變換是2點DFT。一般而言,F(xiàn)FT算法分為按時間抽取的FFT(DIT FFT)和按頻率抽取的FFT(DIF FFT)兩大類。DIF FFT算法是在時域內將每一級輸入序
3、列依次按奇偶分成2個短序列進行計算。而DIF FFT算法是在頻域內將每一級輸入序列依次奇偶分成2個短序列進行計算。兩者的區(qū)別是旋轉因子出現(xiàn)的位置不同,得算法是一樣的。在DIF FFT算法中,旋轉因子WN出現(xiàn)在輸入端,而在DIF FFT算法中它出現(xiàn)在輸入端。假定序列x(n)的點數(shù)N是2的冪,按照DIF FFT算法可將其分為偶序列和奇序列。偶序列:x(2r)=x1(r)奇序列:x(2r+1)=x2(r)其中:r=0,1,2,N/2-1,則x(n)的DFT表示為 式中,X1 (k)和X2(k)分別為X1(r)和X2(r)的N/2的DFT。 由于對稱性,WNk+N/2=-WNk。因此,N點DFT可分為
4、兩部分:前半部分:x(k)=x1(k)+WkNx2(k) (4)后半部分:x(N/2+k)=x1(k)-WkNx2(k) k=0,1,N/2-1 (5)從式(4)和式(5)可以看出,只要求出0N/2-1區(qū)間x1(k)和x2(k)的值,就可求出0N-1區(qū)間x(k)的N點值。以同樣的方式進行抽取,可以求得N/4點的DFT,重復抽取過程,就可以使N點的DFT用上組2點的DFT來計算,這樣就可以大減少運算量?;? DIF FFT的蝶形運算如圖3.1所示。設蝶形輸入為x1(k)和x2(k),輸出為x(k)和x(N/2+K),則有 x(k)=x1(k)+WkNx2(k) (6)x(N/2+k)=x1(k)
5、-WkNx2(k) (7)在基數(shù)為2的FFT中,設N=2M,共有M級運算,每級有N/2個2點FFT蝶形運算,因此,N點FFT總共有MN/2個蝶形運算。 圖3.1 基2 DIF FFT的蝶形運算例如:基數(shù)為2的FFT,當N=8時,共需要3級,12個基2 DIT FFT的蝶形運算。其信號流程如圖3.2所示。x(0) x(0) WN0x(4) x(1) -1 WN0x(2) x(2) -1 WN0 WN2x(6) x(3) -1 -1 WN0x(1) x(4) -1 WN0 WN1x(5) x(5) -1 -1 WN0 WN2x(3) x(6) -1 -1 WN0 WN2 WN3x(7) x(7)
6、-1 -1 -1圖3.2 8點基2 DIF FFT蝶形運算從圖(b)可以看出,輸入是經過比特反轉的倒位序列,稱為位碼倒置,其排列順序為x(0),x(4),x(2),x(6),x(1),x(5),x(3),x(7),輸出是按自然順序排列,其順序為x(0),x(1),x(2),x(3),x(4),x(5),x(6),x(7).程序設計順序DSP初始化串口設置AD設置功率譜計算觀看轉換結果,保存數(shù)據(jù)串口發(fā)送轉換結果FFT運算位碼倒置串口接收,AD采樣設置信號源類型、頻率幅值、和采樣點數(shù) 四、FFT算法的DSP實現(xiàn)過程:DSP芯片的出現(xiàn)使FFT的實現(xiàn)方法變得更為方便。由于大多數(shù)DSP芯片都具有在單指令
7、周期內完成乘法累加操作,并且提供了專門的FFT指令,使得FFT算法在DSP芯片實現(xiàn)的速度更快。FFT算法可以分為按時間抽取FFT和按頻率抽取FFT兩大類,輸入也有實數(shù)和復數(shù)之分,一般情況下,都假定輸入序列為復數(shù)。(一)FFT運算序列的存儲分配FFT運算時間是衡量DSP芯片性能的一個重要指標,因此提高FFT的運算速度是非常重要的。在用DSP芯片實現(xiàn)FFT算法時,應允許利用DSP芯片所提供的各種軟、硬件資源。如何利用DSP芯片的有限資源,合理地安排好所使用的存儲空間是十分重要的。(二)FFT運算的實現(xiàn)用TMS320C54x的匯編程序實現(xiàn)FFT算法主要分為四步:1.實現(xiàn)輸入數(shù)據(jù)的比特反轉輸入數(shù)據(jù)的比
8、特反轉實際上就是將輸入數(shù)據(jù)進行碼位倒置,以便在整個運算后的輸出序列是一個自然序列。在用匯編指令進行碼位倒置時,使用碼位倒置可以大大提高程序執(zhí)行速度和使用存儲器的效率。在這種尋址方式下,AR0存放的整數(shù)N是FFT點的一半,一個輔助寄存器指向一個數(shù)據(jù)存放的單元。當使用位碼倒置尋址將AR0加到輔助寄存器時,地址將以位碼倒置的方式產生。2.實現(xiàn)N點復數(shù)FFTN點復數(shù)FFT算法的實現(xiàn)可分為三個功能塊,即第一級蝶形運算、第二級蝶形運算、第三級至log2N級蝶形運算。對于任何一個2的整數(shù)冪,總可以通過M次分解最后成為2點的DFT計算。通過這樣的M次分解,可構成M(即log2N)級迭代計算,每級由N/2個蝶形
9、運算組成。3.功率譜的計算用FFT計算想x(n)的頻譜,即計算X(k)=X(k)一般是由實部XR(k)和虛部Xl(k)組成的復數(shù),即X(k)=XR(k)+jXl(k)因此,計算功率譜時只需將FFT變換好的數(shù)據(jù),按照實部實部XR(k)和虛部Xl(k)求它們的平方和,然后對平方和進行開平方運算。但是考慮到編程的難度,對于求FFT變換后數(shù)據(jù)的最大值,不開平方也可以找到最大值,并對功率譜的結果沒有影響,所以在實際的DSP編程中省去了開方運算。4.輸出FFT結果(三)匯編語言程序程序主體由rfft-task、bit-rev、fft和power四個子程序組成。rfft-task:主調用子程序,用來調用其他
10、子程序,實現(xiàn)統(tǒng)一的接口。bit-rev:位碼倒置子程序,用來實現(xiàn)輸入數(shù)據(jù)的比特反轉。fft:FFT算法子程序,用來完成N點FFT運算。在運算過程中,為避免運算結果的溢出,對每個蝶形的運算結果右移一位。fft子程序分為三個功能塊:第一級蝶形運算、第二級蝶形運算、第三級至至log2N級蝶形運算。(四)正弦系數(shù)表和余弦系數(shù)表:正弦系數(shù)表和余弦系數(shù)表可以由數(shù)據(jù)文件coeff.inc給出,主程序通過.copy匯編命令將正弦和余弦系數(shù)表與程序代碼匯編在一起。在本例中,數(shù)據(jù)文件coeff.inc給出1024復數(shù)點FFT的正弦、余弦系數(shù)各512個。利用此系數(shù)表可完成81024點FFT的運算。(五)FFT算法的
11、模擬信號輸入:FFT算法的模擬信號輸入可以采用C語言編程來生成一個文本文件sindata,然后在rfft-task匯編程序中,通過.copy匯編命令將生成的數(shù)據(jù)文件復制到數(shù)據(jù)存儲器中,作為FFT算法的輸入數(shù)據(jù)參與FFT運算。這種方法的優(yōu)點是程序的可讀性強,缺點是當輸入數(shù)據(jù)修改后,必須重新編譯、匯編和鏈接。五、設計步驟:1.啟動CCS,在CCS中建立一個C源文件和一個命令文件,并將這兩個文件添加到工程,再編譯并裝載程序:閱讀Dsp原理及應用中fft 用dsp實現(xiàn)的有關程序。2.雙擊,啟動CCS的仿真平臺的配著選項。選擇C5502 Simulator。3.啟動ccs2后建立工程文件FFT.pjt4
12、.建立源文件FFT.c與鏈接文件FFT.cmd5.將這兩個文件加到FFT.pjt這個工程中。6.創(chuàng)建out文件7.加載out文件六、編譯程序int INPUTSAMPLENUMBER,DATASAMPLENUMBER;float fWaveRSAMPLENUMBER,fWaveISAMPLENUMBER,wSAMPLENUMBER;float sin_tabSAMPLENUMBER,cos_tabSAMPLENUMBER;void InitForFFT()int i;for ( i=0;i<SAMPLENUMBER;i+ )sin_tabi=sin(PI*2*i/SAMPLENUMBER
13、);cos_tabi=cos(PI*2*i/SAMPLENUMBER);void MakeWave()int i;for ( i=0;i<SAMPLENUMBER;i+ )INPUTi=sin(PI*2*i/SAMPLENUMBER*3)*1024;main()int i;InitForFFT();MakeWave();for ( i=0;i<SAMPLENUMBER;i+ )fWaveRi=INPUTi;fWaveIi=0.0f;wi=0.0f;FFT(fWaveR,fWaveI);for ( i=0;i<SAMPLENUMBER;i+ )DATAi=wi;while (
14、1 );/ break pointvoid FFT(float dataRSAMPLENUMBER,float dataISAMPLENUMBER)int x0,x1,x2,x3,x4,x5,x6,xx;int i,j,k,b,p,L;float TR,TI,temp;/* following code invert sequence */for ( i=0;i<SAMPLENUMBER;i+ )x0=x1=x2=x3=x4=x5=x6=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01; x3=(i/8)&0x01;x4=
15、(i/16)&0x01; x5=(i/32)&0x01; x6=(i/64)&0x01;xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;dataIxx=dataRi;for ( i=0;i<SAMPLENUMBER;i+ )dataRi=dataIi; dataIi=0; for ( L=1;L<=7;L+ ) /* for(1) */b=1; i=L-1;while ( i>0 ) b=b*2; i-; /* b= 2(L-1) */for ( j=0;j<=b-1;j+ ) /* for (2) */p=1; i
16、=7-L;while ( i>0 ) /* p=pow(2,7-L)*j; */p=p*2; i-;p=p*j;for ( k=j;k<128;k=k+2*b ) /* for (3) */TR=dataRk; TI=dataIk; temp=dataRk+b;dataRk=dataRk+dataRk+b*cos_tabp+dataIk+b*sin_tabp;dataIk=dataIk-dataRk+b*sin_tabp+dataIk+b*cos_tabp;dataRk+b=TR-dataRk+b*cos_tabp-dataIk+b*sin_tabp;dataIk+b=TI+tem
17、p*sin_tabp-dataIk+b*cos_tabp; /* END for (3) */ /* END for (2) */ /* END for (1) */for ( i=0;i<SAMPLENUMBER/2;i+ ) wi=sqrt(dataRi*dataRi+dataIi*dataIi); /* END FFT */七、實驗過程1編譯并下載程序。2打開觀察窗口:*選擇菜單View->Graph->Time/Frequency進行如下圖所示設置。圖1圖2圖33清除顯示:在以上打開的窗口中單擊鼠標右鍵,選擇彈出式菜單中“Clear Display”功能。4設置斷點:
18、在程序FFT.c 中有注釋“break point”的語句上設置軟件斷點。圖45運行并觀察結果。 選擇“Debug”菜單的“Animate”項,或按Alt+F5 鍵運行程序。 觀察“Test Wave”窗口中時域圖形;圖5 在“Test Wave”窗口中點擊右鍵,選擇屬性,更改圖形顯示為FFT。觀察頻域圖形。圖6 觀察“FFT”窗口中的由CCS 計算出的正弦波的FFT。圖7(5)改變輸入函數(shù)INPUTi=(sin(PI*2*i/SAMPLENUMBER*3)+sin(PI*2*i/SAMPLENUMBER*4+sin(PI*2*i/SAMPLENUMBER*8)*1024;圖8(5)改變輸入函數(shù)INPUTi=(sin(PI*2*i/SAMPLENUMBER*3)+sin(PI*2*i/SAMPLENUMBER*10)+sin(PI*2*i/SAMPLENU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色家居產品免責任協(xié)議書3篇
- 2025年度農村土地租賃與農業(yè)廢棄物資源化利用項目合作合同2篇
- 二零二五年度全新音樂節(jié)演出活動承辦服務合同3篇
- 2025年度年度合伙開設中式快餐連鎖店合同3篇
- 2025年度農村土地互換與農業(yè)綠色發(fā)展合作協(xié)議
- 二零二五年度建筑用石材采購與加工合作協(xié)議3篇
- 二零二五年度現(xiàn)代化工廠生產線整體轉讓協(xié)議3篇
- 2025年度養(yǎng)老院老人外出社區(qū)活動安全保障合同3篇
- 二零二五年度金融科技基金公司投資合作協(xié)議3篇
- 二零二五年度房地產開發(fā)企業(yè)借款合同3篇
- 2021年貴安新區(qū)產業(yè)發(fā)展控股集團有限公司招聘筆試試題及答案解析
- 安全文化培訓 (注冊安工再培訓)課件
- 色粉-MSDS物質安全技術資料
- 骨科學研究生復試真題匯總版
- 石油化工鋼結構工程施工及驗收規(guī)范
- 遼海版六年級音樂上冊第8單元《3. 演唱 姐妹們上場院》教學設計
- 形勢任務教育宣講材料第一講——講上情
- 物業(yè)安全員考核實施細則
- 中國地質大學(武漢)教育發(fā)展基金會籌備成立情況報告
- 第四章破產法(破產法)教學課件
- PE拖拉管施工方案標準版
評論
0/150
提交評論