DSP原理與應(yīng)用教程課程設(shè)計基于DSP的卷積算法的實現(xiàn)_第1頁
DSP原理與應(yīng)用教程課程設(shè)計基于DSP的卷積算法的實現(xiàn)_第2頁
DSP原理與應(yīng)用教程課程設(shè)計基于DSP的卷積算法的實現(xiàn)_第3頁
DSP原理與應(yīng)用教程課程設(shè)計基于DSP的卷積算法的實現(xiàn)_第4頁
DSP原理與應(yīng)用教程課程設(shè)計基于DSP的卷積算法的實現(xiàn)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、dsp課程考核論文 課程名稱: dsp原理與應(yīng)用教程 題 目:基于dsp的卷積算法的實現(xiàn) 專 業(yè): 電子信息工程 班 級: 08級1班 目錄摘 要.3緒 論.3課程設(shè)計方案及原理.3課程設(shè)計步驟及過程.10總 結(jié).17參考文獻.17基于dsp的卷積算法的實現(xiàn)摘要:卷積和(簡稱卷積)是信號處理中常用的算法之一。數(shù)字卷積運算通常采用兩種方法:線性卷積和圓卷積。為了能使卷積運算在c54x系列dsp上的實現(xiàn)方法,首先要對數(shù)字卷積的基本概念作深入了解。使大家從根本上掌握卷積的實現(xiàn)方法,我們以模擬信號的卷積和數(shù)字信號的卷積為主,以及他們在c54x系列dsp上的實現(xiàn)方法。緒論:在通信和信號處理中,常用的運算

2、,如卷積,自相關(guān),濾波和快速傅里葉交換等。都具有較高的密度性和復(fù)雜性,而這些運算中所用到的最基本的是乘法-累加運算。c54x的硬件及軟件設(shè)計使其具有快速的進行乘法-累加運算功能,并具有豐富的軟件資源為這些算法的實施提供有力的條件。因此,這種芯片在通信及信號處理等領(lǐng)域得到廣泛的應(yīng)用。本節(jié)主要介紹卷積算法在dsp原理中的應(yīng)用。課程設(shè)計方案及原理一、實驗?zāi)康?掌握用窗函數(shù)法設(shè)計卷積算法的原理和方法;2熟悉卷積算法特性;3了解各種窗函數(shù)對卷積算法的影響。二、實驗設(shè)備計算機,code composer studio 2.0 for c5000系統(tǒng)。三、實驗原理1卷積的基本原理和公式 卷集和:對離散系統(tǒng)“

3、卷積和”也是求線性時不變系統(tǒng)輸出響應(yīng)(零狀態(tài)響應(yīng))的主要方法。 卷積和的運算在圖形表示上可分為四步: y(n)= x(m)h(nm)=x(n)*h(n) m= 1)翻褶 先在啞變量坐標(biāo)m上作出x(m)和h(m),將m=0的垂直軸為軸翻褶成h(-m)。 2)移位 將h(-m)移位n,即得h(n-m)。當(dāng)n為正整數(shù)時,右移n位。當(dāng)n為負(fù)整數(shù)時,左移n位。 3)相乘 再將h(n-m)和x(m)的相同m值的對應(yīng)點值相乘。 4)相加 把以上所有對應(yīng)點的乘積疊加起來,即得y(n)值。依上法,取n=,-2,-1,0,1,2,3,各值,即可得全部y(n)值。 2.程序流程圖3程序的自編函數(shù)及其功能 (1)pr

4、ocessing1(int *input2, int *output2) 調(diào)用形式:processing1(int *input2, int *output2) 參數(shù)解釋:intput2、output2為兩個整型指針數(shù)組。 返回值解釋:返回了一個“tren”,讓主函數(shù)的while循環(huán)保持連續(xù)。 功能說明:對輸入的input2 buffer波形進行截取m點,再以零點的y軸為對稱軸進行翻褶,把生成的波形上的各點的值存入以output2指針開始的一段地址空間中。 (2)processing2(int *output2, int *output3) 調(diào)用形式:processing2(int *outp

5、ut2, int *output3) 參數(shù)解釋:output2、output3為兩個整型指針數(shù)組。 返回值解釋:返回了一個“tren”,讓主函數(shù)的while循環(huán)保持連續(xù)。 功能說明:對輸出的output2 buffer波形進行作n點移位,然后把生成的波形上的各點 的值存入以output3指針開始的一段地址空間中。 (3)processing3(int *input1,int *output2,int *output4) 調(diào)用形式:processing3(int *input1,int *output2,int *output4) 參數(shù)解釋:output2、output4、input1為三個整型

6、指針數(shù)組。 返回值解釋:返回了一個“tren”,讓主函數(shù)的while循環(huán)保持連續(xù)。 功能說明:對輸入的input2 buffer波形和輸入的input1 buffer作卷積和運算,然后把 生成的波形上的各點的值存入以output4指針開始的一段地址空間中。 (4)processing4(int *input2,int *output1) 調(diào)用形式:processing4(int *input2,int *output1) 參數(shù)解釋:output1、input2為兩個整型指針數(shù)組。 返回值解釋:返回了一個“tren”,讓主函數(shù)的while循環(huán)保持連續(xù)。 功能說明:對輸入的input2 buffe

7、r波形截取m點,然后把生成的波形上的各點的值存 入以output1指針開始的一段地址空間中。源程序如下:#include #include volume.h/* global declarations */int inp1_bufferbufsize;int inp2_bufferbufsize; /* processing data buffers */int out1_bufferbufsize;int out2_bufferbufsize;int out3_bufferbufsize;int out4_bufferbufsize*2;int size = bufsize;int ain

8、= mingain;int zhy=0;int sk=64; /*sk代表所開的bufsize的大小,需修改它.輸入文件sine.dat為32點,sine11.dat, sin22.dat,sin33.dat,sin44.dat為64點的輸入波形.*/ /* volume control variable */unsigned int processingload = 1; /* processing routine /load value */* functions */extern void load(unsigned int loadvalue);static int processin

9、g1(int *output1, int *output2);static int processing2(int *output2, int *output3); static int processing3(int *input1,int *output2,int *output4);static int processing4(int *input2, int *output1);static void dataio1(void);static void dataio2(void);/* * = main = */void main() int *input1 = &inp1_buffe

10、r0; int *input2 = &inp2_buffer0; int *output1 = &out1_buffer0; int *output2 = &out2_buffer0; int *output3 = &out3_buffer0; int *output4 = &out4_buffer0; puts(volume example startedn); /* loop forever */ while(true) /* * read input data using a probe-point connected to a host file. * write output dat

11、a to a graph connected through a probe-point. */ dataio1(); dataio2(); /* apply gain */ processing4(input2,output1); processing1(output1, output2); processing2(output2, output3); processing3(input1,output2,output4) ; /* * = processing = * * function: apply signal processing transform to input signal

12、. * * parameters: address of input and output buffers. * * return value: true. */static int processing4(int *input2,int *output1) int m=sk; for(;m=0;m-) *output1+ = *input2+ * ain; for(;(size-m)0;m+) output1m=0; /load(processingload); return(true); static int processing1(int *output1,int *output2) i

13、nt m=sk-1; for(;m0;m-) *output2+ = *output1+ * ain; /* additional processing /load */ /load(processingload); return(true);static int processing2(int *output2, int *output3) int n=zhy; size=bufsize; for(;(size-n)0;n+) *output3+ = output2n; /* for (;n0;n-) *output3+ = 0; */ /load(processingload); retu

14、rn(true); static int processing3(int *input1,int *output2,int *output4) int m=sk; int y=zhy; int z,x,w,i,f,g; for(;(m-y)0;) i=y; x=0; z=0; f=y; for(;i=0;i-) g=input1z*output2f; x=x+g; z+; f-; *output4+ = x; y+; m=sk; y=sk-1; w=m-zhy-1; for(;m0;m-) y-; i=y; z=sk-1; x=0; f=sk-y; for(;i0;i-,z-,f+) g=in

15、put1z*output2f; x=x+g; out4_bufferw=x; w+; /load(processingload); return(true); /* * = dataio = * * function: read input signal and write processed output signal. * * parameters: none. * * return value: none. */static void dataio1() /* do data i/o */ return;static void dataio2() /* do data i/o */ re

16、turn;課程設(shè)計步驟及過程 1實驗準(zhǔn)備 (1)連接設(shè)備 關(guān)閉計算機和實驗箱電源。 如使用pp型仿真器則用附帶的并口連線連接計算機并口和仿真器相應(yīng)接口。 檢查icetek-vc5416-a板上dip開關(guān)mp/mc的位置,應(yīng)設(shè)置在“off”位置(靠近 復(fù)位按鈕),即設(shè)置dsp工作在mp方式。 關(guān)閉實驗箱上三個開關(guān)。 (2)開啟設(shè)備 打開計算機電源。 打開實驗箱電源開關(guān), 如使用usb型仿真器用附帶的usb電纜連接計算機和仿真器相應(yīng)接口,注意仿真器上 兩個指示燈均亮。 (3)設(shè)置code composer studio為simulator方式: 參見“code composer studio入門實

17、驗”之四.2。 (4)啟動code composer studio 2.02打開工程,瀏覽程序,工程目錄為c:icetek-vc5416-edulablab20-convolve3編譯并下載程序 4設(shè)置輸入數(shù)據(jù)文件 請在c程序中的如下兩行上設(shè)置probe point:dataio1();1 dataio2(); 設(shè)置方法是把光標(biāo)指示到這一行上,按鼠標(biāo)右鍵,從顯示的菜單上分別選擇probe point。 在c程序的“dataio1();”行上設(shè)置break point。5打開觀察窗口-選擇菜單“view”、“graph”、“time/frequency”進行如下設(shè)置: -選擇菜單“view”、“

18、graph”、“time/frequency”進行如下設(shè)置: -在彈出的三個圖形窗口中單擊鼠標(biāo)右鍵,選擇“clear display”。6. 設(shè)置波形輸入文件 -選擇“file”菜單中的“file i/o”,打開“file i/o”窗口;單擊“add file”按鈕,在“fileinput”窗口中選擇c:icetek-vc5416-edulablab20-convolve目錄下的sin.dat文件,單擊“打開”按鈕;在“address”項中輸入inp1_buffer,在“l(fā)ength”項中輸入32,在“warp around”項前加上選擇標(biāo)記,單擊“add probe point”按鈕; -在

19、“break/probe/profile points”窗口中單擊“probe point”列表中的“convolve.c line52 noconnection”,再單擊“connect”項尾部的展開按鈕,在顯示的展開式列表中選擇列表末尾的“file in:c:.sin.dat”,單擊“replace”按鈕,單擊“確定”按鈕。 -在“file i/o”窗口中單擊“確定”,完成設(shè)置。 -選擇“file”菜單中的“file i/o”,打開“file i/o”窗口;單擊“add file”按鈕,在“fileinput”窗口中選擇c:icetek-vc5416-edulablab20-convolv

20、e目錄下的sin.dat文件,單擊“打開”按鈕;在“address”項中輸入inp2_buffer,在“l(fā)ength”項中輸入32,在“warp around”項前加上選擇標(biāo)記,單擊“add probe point”按鈕; -在“break/probe/profile points”窗口中單擊“probe point”列表中的“convolve.c line53 noconnection”,再單擊“connect”項尾部的展開按鈕,在顯示的展開式列表中選擇列表末尾的“file in:c:.sin.dat”,單擊“replace”按鈕,單擊“確定”按鈕。 -在“file i/o”窗口中單擊“確定”,完成設(shè)置。7運行程序,觀察結(jié)果 -按f5鍵運行程序,待程序停留在軟件斷點;觀察剛才打開的三個圖形窗口,其中顯示的是輸入和輸出的時域波形; -觀察頻域波形:在各圖形窗口中單擊鼠標(biāo)右鍵,選擇“properties”,在“graph property dialog”中的第1項“display type”項中選擇“fft magnitude”,單擊“ok”完成;這 時圖形窗口中顯示波形的頻域圖。(也可再打開顯示頻域圖的窗口) -驗算結(jié)果:在各頻域窗口中的波形上單擊鼠標(biāo)左鍵,將光標(biāo)停到統(tǒng)一的位置(通過觀察窗口狀態(tài)欄中的第1個浮點數(shù)表示其坐標(biāo)值),讀取

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論