DSP實驗報告作業(yè).doc

上傳人:good****022 文檔編號:116491668 上傳時間:2022-07-05 格式:DOC 頁數(shù):20 大?。?88KB
收藏 版權(quán)申訴 舉報 下載
DSP實驗報告作業(yè).doc_第1頁
第1頁 / 共20頁
DSP實驗報告作業(yè).doc_第2頁
第2頁 / 共20頁
DSP實驗報告作業(yè).doc_第3頁
第3頁 / 共20頁

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《DSP實驗報告作業(yè).doc》由會員分享,可在線閱讀,更多相關(guān)《DSP實驗報告作業(yè).doc(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、五 邑 大 學(xué) 實 驗 報 告實驗課程名稱: DSP原理及應(yīng)用 院系名稱: 信息工程學(xué)院 專業(yè)名稱: 電子信息工程 實驗項目名稱:1、 TMS320VC5402定時器實驗 2、基于DSPLib的FFT程序設(shè)計 3、基于DSPLib的濾波器程序設(shè)計班級: 學(xué)號: 報告人: 一、TMS320VC5402定時器實驗一 實驗?zāi)康?. 了解DSP匯編程序與C語言程序的構(gòu)成;2. 了解DSP程序各段的含義;3. 熟悉如何編寫中斷服務(wù)程序;4. 掌握片內(nèi)定時器的設(shè)置方法;5. 掌握長時間間隔的定時器的處理二 實驗內(nèi)容1. DSP的初始設(shè)置;2. DSP中斷向量表的建立;3. 定時器的使用;設(shè)實驗板時鐘頻率為

2、20MHz,編程實現(xiàn)以下要求:1、TMS320C5402的時鐘頻率為100 MHz2、TMS320C5402XF端輸出一個周期為500ms的方波,周期性地點亮LED3、采用定時中斷方法實現(xiàn)4、用C語言編程,畫出程序流程圖并給出源代碼。5、上機調(diào)試。三 實驗背景知識1 通用TIMER 簡介TMS320VC5402 的定時器的說明:VC5416 中有兩個可編程的片上定時器,總共包含有三個可由用戶設(shè)置的寄存器,并可以申請主機的中斷。這三個寄存器分別為TIM、PRD、TCR。這些寄存器與對應(yīng)的存貯空間地址如下表所示:時間寄存器(TIM)是一個16 位的存貯器映射寄存器,它的值由周期寄存器來進行裝載,并

3、且做減一操作。周期寄存器(PRD)是一個16 位的存貯器映射寄存器,它是用來重裝時間寄存器(TIM)寄存器的值的。定時器控制寄存器(TCR)是一個16 位的存貯器映射寄存器,包含了定時器的控制與狀態(tài)信息。2、CMD 文件簡介cmd 文件用于DSP 代碼的定位。由3 部分組成:1、 (1)輸入輸出定義:.obj 文件:鏈接器要鏈接的目標文件。.lib 文件:鏈接器要鏈接的庫文件。.map 文件:鏈接器生成的交叉索引文件。.out 文件:鏈接器生成的可執(zhí)行代碼;鏈接器選項。(2) MEMORY 命令:描述系統(tǒng)實際的硬件資源。(3.) SECTIONS 命令:描述段如何定位。下面例子則可說明其基本格

4、式:-o sample.out (可缺省)-m sample.map (可缺省)-stack 100 (可缺省)sample.obj meminit.obj (可缺省)-l rts.lib (可缺省)MEMORY PAGE 0:RESEVE: org = 00h len = 0 x80 PAGE 0:PROG1: org = 0 x0100 len = 0 x1200PAGE 0: VECT: org = 0 x0080, len = 0 x80PAGE 1:RESEVE1: org = 00h len = 0 x1300 PAGE 1:DARAM2: org = 0 x1300 len =

5、0 x400PAGE 1: DARAM1: org = 0 x1700 len = 0 x2900 SECTIONS .text : PROG1 PAGE 0 .cinit : PROG1 PAGE 0 .switch: PROG1 PAGE 0 .vectors: VECT PAGE 0 .const: DARAM1 PAGE 1 .bss : DARAM1 PAGE 1 .stack : DARAM2 PAGE 1 .system: DARAM2 PAGE 1 .data : DARAM2 PAGE 1 下面介紹一下CMD 文件中常用的程序段名與含義 .cinit 存放C 程序中的已初始化

6、的變量初值和常數(shù)表;.const 存放C 程序中的字符常量和用const 聲明的常量; .text 存放C 程序的代碼; .bss 為C 程序中的未初始化的全局和靜態(tài)變量保留存儲空間;.far 為C 程序中用far 聲明的全局和靜態(tài)變量保留空間; .stack 為C 程序系統(tǒng)堆棧保留存儲空間,用于保存返回地址、函數(shù)間的參數(shù)傳遞、存儲局部變量和保存中間結(jié)果; .sysmem 用于C 程序中malloc、calloc 和realloc 函數(shù)動態(tài)分配存儲空間.vectors 用于自定義的“.vectors”段,這里是中斷向量表.switch 用于C程序中的switch語句.data 已初始化的數(shù)據(jù)段

7、3 中斷向量表文件中斷服務(wù)程序的地址(中斷向量)要裝載到存儲器的合適區(qū)域。一般用中斷向量表文件編制中斷向量表,中斷向量表文件多采用匯編語言編寫;在文件中一般用匯編指令.sect 來生成一個表,表中各中斷占4個字。這個表包含中斷向量的地址和跳轉(zhuǎn)指令。因為中斷跳轉(zhuǎn)地址的標志符在匯編語言模塊外部使用,所以標志符用.ref 或.global定義。4、GEL文件 GEL文件有兩大作用:(1)配置CCS工作環(huán)境。(2)直接訪問目標處理器(包括軟硬件訪真器),在這是主要使用GEL文件的初始化DSP。以下面的例子介紹一下GEL 文件的構(gòu)成#define PRD0 0 x0025u#define TCR0 0

8、x0026u#define PRD1 0 x0031u#define TCR1 0 x0032uStartUp() GEL_MapOn(); /*存儲空間打開*/GEL_MapReset(); /*存儲空間復(fù)位*/GEL_MapAdd(0 x80u,0,0 x3F80u,1,1); /* 定義程序空間0 x800 x3FFF 可讀寫 */GEL_MapAdd(0 x4000u,0,0 xC000u,1,1);/* 定義程序空間0 x40000 xFFFF 可讀寫 */ /* 定義數(shù)據(jù)空間00 xFFFF 可讀寫 */ GEL_MapAdd(0 x0u,1,0 x60u,1,1);/* MMRs

9、 */ GEL_MapAdd(0 x60u,1,0 x3FA0u,1,1);/* DARAM */ GEL_MapAdd(0 x4000u,1,0 xC000u,1,1);/* External */實驗流程圖:四 、實驗步驟 1、根據(jù)實驗要求編寫輸出周期500ms方波的匯編語言源代碼,和C語言源代碼(c語言中加入外部中斷,通過按鍵改變方波頻率)。2、編譯無誤后下載到C5402開發(fā)板中,運行程序,觀察LED是否周期性亮滅。3、下載c程序到開發(fā)板上,通過按下連接在外部中斷上的按鍵,觀察能否改變LED燈的亮滅頻率。五、程序源代碼1、主函數(shù):#include timer.hint t0_count;

10、void main() CLKMD=0 x00; /清零while(CLKMD&01);CLKMD=0 x47ff; /開啟PLL方式且采用5倍頻PMST=0 x00a0; /將片內(nèi)數(shù)據(jù)RAM映射到程序空間和數(shù)據(jù)空間并從0080地址開始coeff=1;t0_count=250*coeff; asm( SSBX INTM); /關(guān)閉所有可屏蔽的中斷 ST1=ST1|0 x0800; /INTM=1TCR=0 x0010;/停止定時器,且當PSC減到0后,TIM減1;當調(diào)試程序斷點時定時器立即 停止工作PRD=9999; /定時周期寄存器存放定時時間常數(shù),將值賦給TIMTIM=9999; /定時寄

11、存器TCR=0 x669; /定時控制寄存器,啟動定時器,將PRD中的數(shù)加載到TIM中IFR=0 x108; /中斷標志寄存器,啟動外部中斷INT3和定時器中斷0 (TINT0)的標志位IMR=0 x108; /中斷屏蔽寄存器,開放外部中斷INT3和定時器中斷0 (INT0)的屏蔽位asm( RSBX INTM); /開放全部可屏蔽中斷ST1=ST1&0 xf7ff;while(1) while(t0_count0); t0_count=250*coeff; if(ST1&0 x2000) ST1=ST1&0 xdfff; /XF=0,即熄滅LED燈 else ST1=ST1|0 x2000;

12、 /XF=1,即點亮LED燈interrupt void timer() t0_count-;interrupt void change_frequency() coeff+; /改變XF引腳輸出的信號的頻率 if (coeff5) coeff=1; 2、中斷函數(shù): .sect .vectors .ref _c_int00.ref timerrs: BD _c_int00 ;Rest nop nopnmi: .space 4*16 ;NMI, SINT16sint17:.space 4*16 ;SINT17sint18: .space 4*16 ;SINT18sint19: .space 4*

13、16 ;SINT19sint20: .space 4*16 ;SINT20sint21: .space 4*16 ;SINT21sint22: .space 4*16 ;SINT22sint23: .space 4*16 ;SINT23sint24: .space 4*16 ;SINT24sint25: .space 4*16 ;SINT25sint26: .space 4*16 ;SINT26sint27: .space 4*16 ;SINT27sint28: .space 4*16 ;SINT28sint29: .space 4*16 ;SINT29sint30: .space 4*16

14、;SINT30int0: .space 4*16 ;INT0, SINT0int1: .space 4*16 ;INT1, SINT1int2: .space 4*16 ;INT2, SINT2tint0: BD timer ;TINT0, SINT3 nop nopbrint0: .space 4*16 ;BRINT0, SINT4bxint0: .space 4*16 ;BXINT0, SINT5dmac0: .space 4*16 ;DMAC0, brint2, SINT6dmac1: .space 4*16 ;DMAC1, bxint2, SINT7 int3: .space 4*16

15、;INT3, SINT8hpint: .space 4*16 ;HPINT, SINT9brint1: .space 4*16 ;BRINT1 or DMAC2, SINT10bxint1: .space 4*16 ;BXINT1 or DMAC3, SINT11dmac4: .space 4*16 ;DMAC4, SINT12dmac5: .space 4*16 ;DMAC5, SINT13rsvd1: .space 4*16 ;reservedrsvd2: .space 4*16 ;reserved .end3、 鏈接文件: MEMORY PAGE 0: RESERVER: origin

16、= 0 x00, len = 0 x80 INT_VECT: origin = 0 x80, len = 0 x80PROG_RAM: origin = 0 x100, len = 0 x1000 PAGE 1: DATA_1: origin = 0 x1100, len = 0 x0e00 DATA_2: origin = 0 x2000, len = 0 x2000 SECTIONS .vectors: INT_VECT PAGE 0.text: PROG_RAM PAGE 0.stack: DATA_1 PAGE 1vars: DATA_1 PAGE 1.data: DATA_2 PAG

17、E 1.bss: DATA_2 PAGE 1 6、 實驗結(jié)果及體會實驗結(jié)果:每次按下按鍵,LED燈亮滅周期發(fā)生變化。實驗體會:一開始寫入程序沒成功,但是按下按鍵后,LED燈亮滅周期也發(fā)生變化,出現(xiàn)這種情況是實驗板內(nèi)部已經(jīng)因為上一個人在試驗中寫入了程序,所以會出現(xiàn)插電后,程序沒寫入也能夠按鍵改變亮滅周期。最后在老師的提醒下,成功寫入程序,驗證發(fā)現(xiàn)功能也得到了實現(xiàn)。在實驗過程中每一步都要細心的去完成,多想想出現(xiàn)某種情況的原因,有不懂的就向老師、同學(xué)請教,這樣才能在實驗中進步。二、基于DSPLib的FFT程序設(shè)計一、實驗?zāi)康?、了解FFT的原理;2、了解在DSP中FFT 的設(shè)計及編程方法;3、熟悉對

18、DSPLIB的調(diào)用方法;二、實驗內(nèi)容編寫256點的實序列FFT的DSP程序,利用數(shù)據(jù)文件對FFT程序進行調(diào)試。三、實驗要求1、產(chǎn)生256點的數(shù)據(jù)文件,表示方波、正弦等信號;2、編寫256點的實序列FFT的DSP程序?qū)ι鲜鲂盘栠M行傅立葉變換;3、利用CCS中VIEW菜單中的Graph調(diào)試工具觀察信號時域波形及其頻譜。四、背景知識1、時間抽選基2FFT算法的基本原理。(參閱數(shù)字信號處理教材)2、DSPLib的應(yīng)用CCS提供DSPLib,其中包含了基本的數(shù)學(xué)計算和數(shù)字信號處理常用算法模塊的函數(shù),可直接調(diào)用這些函數(shù)實現(xiàn)一些數(shù)字信號處理算法。本實驗主要使用了DSPLib的cbrev,rfft兩個函數(shù)實現(xiàn)

19、數(shù)字序列的逆序和DFT的計算。有關(guān)這兩個函數(shù)的說明請參閱dsplib中文版_TMS32054X_函數(shù)庫中文用戶指南.pdf程序流程圖為: 5、 實驗步驟1、 根據(jù)實驗要求編寫256點FFT的C語言代碼,中斷向量表和CMD文件; 2、編譯成功無誤后下載到C5402開發(fā)板中,然后運行程序;3、 程序運行完成后,通過CCS中的View-Graph選項查看輸入和輸出波形,4、 分析實驗結(jié)果是否符合要求。6、 程序源代碼1、 主程序: #includeregister.h#include #include #include #define Nx 256 /定義數(shù)組的長度即FFT運算長度#define p

20、i 3.1415926 /定義參數(shù)的值int i,j;int scale=1; /歸一化設(shè)置int noscale=0; /非歸一化設(shè)置DATA xNx,x_temptNx; /用于存放輸入的數(shù)據(jù)的數(shù)組DATA yNx/2; /用于存放輸出的數(shù)據(jù)數(shù)組#pragma DATA_SECTION(x,.input)#pragma DATA_SECTION(x_tempt,.input_tempt)#pragma DATA_SECTION(y,.output)static void dataIO(void);void main() PMST=0 x00a0; /將片內(nèi)數(shù)據(jù)RAM映射到程序空間和數(shù)據(jù)空間

21、,且地址從0080開始 dataIO(); /調(diào)用函數(shù)dataIO,即導(dǎo)入數(shù)據(jù),且存放到x數(shù)組中 for(i=0;iNx;i+) / xi=(1000*(cos(2*pi*1000*i/16000)+2*cos(2*pi*2000*i/16000)+cos(2*pi*3000*i/16000);xi=(1000*(cos(2*pi*1000*i/16000)+2*cos(2*pi*2000*i/16000); x_tempti=xi; /將導(dǎo)入的數(shù)據(jù)存放到x_temp中 cbrev(x,x,Nx/2); /將導(dǎo)入的數(shù)據(jù)按一定方式,打亂排序,即碼位倒序運算 rfft(x,Nx,scale); /

22、調(diào)用傅里葉變化函數(shù),進行256點歸一化FFT運算 y0=x0; j=1; for(i=2;i FFT_VECT PAGE 0.text: PROG PAGE 0.data: PROG PAGE 0.bss: DATA_2 PAGE 1.cinit: PROG PAGE 0.stack: DATA_2 PAGE 1.input: DATA_2 PAGE 1 ,align(512).input_tempt: DATA_2 PAGE 1.output: DATA_2 PAGE 1.sintab: DATA_1 PAGE 1.const: PROG PAGE 0 7、 實驗結(jié)果及體會 實驗結(jié)果: 實驗

23、體會:傅里葉變換是將信號從時域的一種變換形式,是信號處理領(lǐng)域中的一種重要的分析工具,所以學(xué)好FFT變換在DSP技術(shù)中很重要。在這次實驗中,進一步熟悉了CCS軟件的使用,實驗過程中感覺自己的基礎(chǔ)知識很不牢固,需要多加強對CCS軟件的操作,對編譯環(huán)境的熟悉對實驗的完成和理解則有更加的幫助。感覺要想學(xué)好DSP這門課程,必須腳踏實地的一步步努力的學(xué)好基礎(chǔ)知識,才能更加順利的完成實驗。三、基于DSPLib的濾波器程序設(shè)計一、實驗?zāi)康?、了解FIR、IIR數(shù)字濾波器的原理;2、掌握FIR、IIR數(shù)字濾波器的設(shè)計方法。3、熟悉對DSPLib的調(diào)用方法以及數(shù)字濾波器在DSP系統(tǒng)中的實現(xiàn);二、實驗內(nèi)容(要求)現(xiàn)

24、有連續(xù)時間信號,已基于采樣頻率對采樣,獲得離散數(shù)據(jù)。設(shè)計一個FIR(或IIR)數(shù)字低通濾波器,對數(shù)據(jù)濾波,濾除中頻率分量,保留頻率分量。要求:1、設(shè)計FIR(或IIR)數(shù)字低通濾波器,得到濾波器的有關(guān)參數(shù);2、基于DSPLib編制DSP的C語言程序,實現(xiàn)上述低通濾波,并對數(shù)據(jù)濾波。3、利用CCS中VIEW菜單中的Graph調(diào)試工具觀察信號時域波形及其頻譜。三、背景知識1、FIR、IIR數(shù)字濾波器的基本原理。(參閱數(shù)字信號處理教材)。2、MATLAB的數(shù)字濾波器設(shè)計工具FDAtool。(詳細請參閱MATLAB幫助文檔。)2.1 啟動濾波器設(shè)計分析器在MATLAB的start菜單中選擇Toolbo

25、xes-Filter Design-Filter Design & Analysis Tools(fdatool),或者在命令行中輸入fdatool來啟動濾波器設(shè)計分析器。啟動后界面如圖2.1所示:圖2.12.2 濾波器設(shè)計在選項中選擇或輸入濾波器參數(shù),然后點擊”Design Filter”按鈕完成濾波器設(shè)計。設(shè)計成功后的結(jié)果如圖2.2所示。圖2.22.3 導(dǎo)出FIR濾波器系數(shù)。 在fdatool中,選擇Targets-Code Composer StudioIDE。 在出現(xiàn)的對話框中選擇輸出文件類型為C.header file,輸出系數(shù)類型為signed 16-bit integer,如圖2

26、.3所示。 點擊OK按鈕,選擇路徑,即可輸出前一步設(shè)計出的FIR濾波器系數(shù)表。圖2.33、DSPLib的應(yīng)用CCS提供DSPLib,其中包含了基本的數(shù)學(xué)計算和數(shù)字信號處理常用算法模塊的函數(shù),可直接調(diào)用這些函數(shù)實現(xiàn)一些數(shù)字信號處理算法。本實驗主要使用了fir、firs、firs2、iircas4、iircas5、iircas5I等函數(shù)實現(xiàn)數(shù)字濾波。有關(guān)這些函數(shù)的說明請參閱dsplib中文版_TMS32054X_函數(shù)庫中文用戶指南.pdf實驗程序流程圖為: 四 、實驗步驟1、 根據(jù)實驗要求,利用Matlab的fdatools設(shè)計FIR低通濾波器和帶通濾波 器,導(dǎo)出有FIR系數(shù)數(shù)組的頭文件。2、 根

27、據(jù)實驗要求編FIR濾波器的C語言代碼,中斷向量表和CMD文件; 3、編譯成功無誤后下載到C5402開發(fā)板中,然后運行程序;4、 程序運行完成后,通過CCS中的View-Graph選項查看輸入和輸出波形, 分析實驗結(jié)果是否符合要求。5、 程序原代碼1、主函數(shù):#include #include #include #include register.h#include fdacoefs.h /濾波文件#define NX 1024 /輸入數(shù)組的長度,即波形取得點數(shù)#define NH 87 /系數(shù)向量的長度#define pi 3.1415926 /定義的值/#define PMST(unsign

28、ed int*)0 x1Dint i,j;DATA xNX,hNH,rNX,dbNH; /分別用于存放導(dǎo)入數(shù)據(jù)、濾波數(shù)據(jù)(低通濾波數(shù)據(jù))、輸出數(shù)據(jù)、緩沖數(shù)組DATA *dbptr=&db0; /延時緩沖區(qū),用于保存計算r所必須的輸入值#pragma DATA_SECTION(h,.coeffs)#pragma DATA_SECTION(db,.dbuffer)void dataIO(void); /預(yù)定義函數(shù)void main(void) PMST=0 x00A0; /將片內(nèi)數(shù)據(jù)RAM映射到程序空間和數(shù)據(jù)空間 dataIO(); /調(diào)用函數(shù),用于導(dǎo)入模擬使用的數(shù)據(jù)且存放到x數(shù)組中for (i=

29、0;iNX;i+) ri=0; /將數(shù)組r初始化為0for (i=0;iNH;i+) dbi=0; /將數(shù)組db初始化為0for(i=0;iFFT_VECT PAGE 0 .text:PROG PAGE 0 .data: PROG PAGE 0 .bss: DATA_2 PAGE 1 .cinit:PROG PAGE 0 .stack:DATA_2 PAGE 1 .coeffs:PROG PAGE 0,align(128) .dbuffer:DATA_2 PAGE 1,align(128) .const:PROG PAGE 0 6、 實驗結(jié)果及體會 實驗結(jié)果: 實驗結(jié)果圖 實驗體會:在實驗之前,嘗試了一下使用matlab按照老師的要求生成了一個數(shù)字濾波器文件,并進行實驗,但是并不太成功,最后還是請教了一些同學(xué)之后,發(fā)現(xiàn)自己的不足,才把實驗完成了。在學(xué)習(xí)的過程中,和同學(xué)的交流時必不可少的。經(jīng)過此次實驗,對實時FIR數(shù)字濾波器的設(shè)計的知識有了進一步的了解和認識,體會到了數(shù)字濾波器的方便,數(shù)字濾波器是將輸入的信號序列,按規(guī)定的算法進行處理,從而得到所期望的輸出序列。所以數(shù)字濾波器對工程設(shè)計非常的方便,掌握數(shù)字濾波器的設(shè)計具有舉足輕重的作用。也對CCS軟件的使用更加的熟悉,在matlab軟件的運用方面也有了一定的了解。19

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!