《DSP技術(shù)與實(shí)驗(yàn)》實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
《DSP技術(shù)與實(shí)驗(yàn)》實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
《DSP技術(shù)與實(shí)驗(yàn)》實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
《DSP技術(shù)與實(shí)驗(yàn)》實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
《DSP技術(shù)與實(shí)驗(yàn)》實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2011秋季學(xué)期“dsp原理與應(yīng)用”實(shí)驗(yàn)教學(xué)資料實(shí)驗(yàn)一 ccs集成環(huán)境的熟悉 -2學(xué)時(shí)實(shí)驗(yàn)二 算術(shù)運(yùn)算與數(shù)據(jù)操作的匯編語(yǔ)言程序設(shè)計(jì)-2學(xué)時(shí)實(shí)驗(yàn)三 信號(hào)發(fā)生器設(shè)計(jì) -2學(xué)時(shí)實(shí)驗(yàn)四 iir濾波器的dsp實(shí)現(xiàn) -2學(xué)時(shí)實(shí)驗(yàn)五 fir濾波器的dsp實(shí)現(xiàn) -2學(xué)時(shí)實(shí)驗(yàn)六 fft的dsp實(shí)現(xiàn) -2學(xué)時(shí)實(shí)驗(yàn)七 綜合實(shí)驗(yàn)暨實(shí)驗(yàn)考查 -4學(xué)時(shí)實(shí)驗(yàn)報(bào)告內(nèi)容:用每個(gè)實(shí)驗(yàn)要求的思考題代替實(shí)驗(yàn)報(bào)告,提交電子版,在實(shí)驗(yàn)結(jié)束時(shí)一起交。實(shí)驗(yàn)一ccs集成開(kāi)發(fā)環(huán)境的熟悉一、實(shí)驗(yàn)內(nèi)容及步驟通過(guò)編寫(xiě)程序計(jì)算y=x1+x2+x3+x4+x5練習(xí)ccs 2 (c5000)的使用。1在d盤(pán)或e盤(pán)建立一個(gè)自己的文件夾, 如e:0513610

2、1,該文件夾用英文或數(shù)字命名。后面所有與實(shí)驗(yàn)內(nèi)容有關(guān)的工程與程序都在此文件夾下保存或操作。2運(yùn)行ccs 2(c5000)進(jìn)入ccs集成開(kāi)發(fā)環(huán)境。以下操作如無(wú)特殊聲明一般都在此環(huán)境下操作。3新建工程。點(diǎn)擊主菜單project-new,會(huì)出現(xiàn)圖1-1所示的project creation對(duì)話框。圖1-1參照?qǐng)D1-1按如下順序進(jìn)行設(shè)置或操作: location:e:05136101 project:example2 點(diǎn)擊完成按鈕即可。4新建并保存主程序文件、鏈接命令文件和中斷向量表文件。本次實(shí)驗(yàn)三個(gè)文件的參考名稱為:主程序文件example2.asm、鏈接命令文件example2.cmd、中斷向量表

3、文件vectors.asm。點(diǎn)擊菜單file-new-source file打開(kāi)文本編輯窗口untitled1,如圖1-2。用菜單file-save功能將其保存到e:05136101example2中,其中文件名稱為example2,保存類型為*.asm,如圖1-3。用同樣的方法新建并保存文件example2.cmd和vectors.asm。圖1-3圖1-25為新建工程添加主程序文件、中斷向量表文件和鏈接命令文件。在工程管理器中(圖1-2中的紅色方框處)右鍵單擊example2.pjt,選擇add files to project,在出現(xiàn)的如圖1-4所示的add files to projec

4、t對(duì)話框中查找并選中剛才建立的三個(gè)文件example2.asm,example2.cmd,vectors.asm,點(diǎn)擊打開(kāi)按鈕將它們一起添加到該工程中去。圖1-46編寫(xiě)主程序文件。單擊工程管理器中的工程example2.pjt左邊的+號(hào)展開(kāi)example2.pjt工程,再單擊文件夾source左邊的+號(hào),如圖1-5。找到并雙擊example2.asm ,在界面右邊出現(xiàn)的example2.asm文本編輯窗口中輸入或復(fù)制主程序(注釋部分可不輸入)。文件內(nèi)容如下:圖1-5*計(jì)算y=x1+x2+x3+x4+x5的程序*.title example2.asm ;偽指令。用于格式化輸出清單文件,聲明在每頁(yè)

5、的頂部打印文件標(biāo)題.mmregs ;偽指令。聲明cpu寄存器名稱stack .usect stack,10h ;偽指令。自定義未初始化段stack及大小(10h個(gè)字),最左邊的stack是標(biāo)號(hào).bss x,5 ;偽指令。聲明數(shù)組x,5個(gè)字.bss y,1 ;偽指令。聲明變量y,1個(gè)字.def start ;偽指令。聲明本文件中的標(biāo)號(hào)start能被別的文件(程序)引用.data ;偽指令,指示下面的代碼為數(shù)據(jù)段,通常包含初始化的數(shù)據(jù)(常數(shù))。 table: .word 10,20,3,4,5 ;偽指令。聲明5個(gè)16位整數(shù)類型的常數(shù)。table是標(biāo)號(hào)。.text ;偽指令,指示下面的代碼為文本段,

6、通常包含可執(zhí)行的代碼。 start:stm #0,swwsr ; swwsr=0,插入0個(gè)等待狀態(tài)。start是標(biāo)號(hào)。stm #stack+10h,sp ;sp=#stack+10h,設(shè)置堆棧指針指向堆棧段的底部stm #x,ar1 ;ar1=#x或ar1指向數(shù)組xrpt #4 ;下一條指令重復(fù)執(zhí)行4+1=5次mvpd table,*ar1+ ;數(shù)據(jù)傳送。程序存儲(chǔ)器中的table數(shù)據(jù)表ar1+指向的數(shù)據(jù)存儲(chǔ)器ld #0,a;累加器a清零call sum;調(diào)用求和子程序sumend: b end ;無(wú)條件轉(zhuǎn)移到標(biāo)號(hào)end所在地方執(zhí)行程序sum: ;標(biāo)號(hào),指示求和子程序sum從這里開(kāi)始stm #x

7、,ar3;ar3指向數(shù)組xstm #4,ar2;ar2=4loop: add *ar3+,a ;*ar3+aa,然后ar3= ar3+1。 loop是標(biāo)號(hào)。banz loop,*ar2-;如果ar2的值不為0, ar2= ar2-1,跳轉(zhuǎn)到loop處執(zhí)行;否則執(zhí)行下一條指令stl a,*(y) ; y=alret ;子程序返回.end ;偽指令。指示匯編結(jié)束7)編寫(xiě)鏈接命令文件。在工程管理器中雙擊example2.pjt工程中的example2.cmd ,將出現(xiàn)example2.cmd文本編輯窗口。在該文本編輯窗口中輸入或復(fù)制文件內(nèi)容。文件內(nèi)容如下:vectors.obj/*聲明要鏈接的文件-

8、中斷向量表文件的目標(biāo)文件*/ example2.obj/*聲明要鏈接的文件-主程序文件的目標(biāo)文件*/ -o example2.out/*聲明鏈接產(chǎn)生的可執(zhí)行文件名稱,默認(rèn)為a.out */ -m example2.map/*聲明鏈接產(chǎn)生的存儲(chǔ)器映射文件*/ -estart/*聲明主程序入口*/memory /*關(guān)鍵字加一對(duì),存儲(chǔ)器配置*/page 0: /*程序存儲(chǔ)區(qū)*/ eprom:org=0090h len=0f70h/*定義eprom區(qū),起始地址0090h,長(zhǎng)度0f70h*/ vecs: org=0080h len=0010h/*定義vecs區(qū),起始地址0080h,長(zhǎng)度0010h*/pa

9、ge 1: /*數(shù)據(jù)存儲(chǔ)區(qū)*/ spram:org=1000h len=1000h /*定義spram區(qū),起始地址1000h,長(zhǎng)度1000h*/ daram:org=2000h len=2000h /*定義daram區(qū),起始地址2000h,長(zhǎng)度2000h*/sections /*關(guān)鍵字加一對(duì),定位段*/.text :eprom page 0/*將.text段映射或定位到page0的eprom區(qū)*/.data :eprom page 0/*將.text段映射或定位到page0的eprom區(qū)*/.bss :spram page 1/*將.text段映射或定位到page1的spram區(qū)*/stack

10、 :daram page 1/*將.text段映射或定位到page1的daram區(qū)*/.vectors :vecs page 0 /*將.vectors段映射或定位到page0的vecs區(qū)*/8編寫(xiě)中斷向量表文件。在工程管理器中雙擊example2.pjt工程中的vectors.asm ,將出現(xiàn)vectors.asm文本編輯窗口。在該文本編輯窗口中輸入或復(fù)制文件內(nèi)容。文件內(nèi)容如下:.title vectors.asm.refstart ;偽指令。聲明要引用其他程序中定義的標(biāo)號(hào)start.sect .vectors ;偽指令。定義初始化的段名.vectors,這一種偽指令聲明的段與.data和.

11、text功能一致bstart ;無(wú)條件轉(zhuǎn)移到標(biāo)號(hào)start所在的地方執(zhí)行程序.end9對(duì)工程中的文件進(jìn)行編譯和鏈接。點(diǎn)擊菜單projectrebuild all,對(duì)工程中的所有文件進(jìn)行編譯、鏈接。工程中的文件如果編譯鏈接成功,會(huì)生成example2.out文件;如果不成功,會(huì)出現(xiàn)出錯(cuò)信息,這時(shí)應(yīng)按照提示的出錯(cuò)信息對(duì)文件進(jìn)行修改,然后再rebuild all。10裝載可執(zhí)行文件。要讓程序代碼在dsp內(nèi)部運(yùn)行必需將生成的*.out文件裝載到dsp內(nèi)部。點(diǎn)擊菜單file-load programe,選擇并雙擊剛才生成的example2.out文件將程序裝載到dsp的內(nèi)部存儲(chǔ)器中。11運(yùn)行程序,查看并

12、記錄相關(guān)結(jié)果。點(diǎn)擊菜單debug-run或按功能鍵f5運(yùn)行程序。查看數(shù)據(jù)的保存情況。點(diǎn)擊菜單view-memory,會(huì)出現(xiàn)圖1-6 (a)所示的“memory window options”對(duì)話框,按圖1-6 (a)設(shè)置address=0x1000(為什么要設(shè)置成address=0x1000?),page=data。點(diǎn)擊ok按鈕,觀察出現(xiàn)的如圖1-6 (b)所示的“memory ”對(duì)話框,這個(gè)對(duì)話框顯示的是變量在數(shù)據(jù)存儲(chǔ)器中的地址與值。請(qǐng)思考:為什么.bss的地址是0x1000,變量y的地址是0x1005,變量x的地址又是多少呢? 圖1-6 (a) ( b)查看程序的保存情況。點(diǎn)擊菜單view

13、memory,按圖1-7 (a)設(shè)置address=0x0090(為什么要設(shè)置成address=0x0090?),page=program。點(diǎn)擊ok按鈕,觀察出現(xiàn)的如圖1-7 (b)所示的“memory ”對(duì)話框,這個(gè)對(duì)話框顯示的是可執(zhí)行程序在程序存儲(chǔ)器中的地址與指令代碼。請(qǐng)思考:為什么.text段的地址是0x0090?標(biāo)號(hào)end的地址是0x009c?標(biāo)號(hào)sum的地址是0x009e?標(biāo)號(hào)loop的地址是0x00a2?.data段的地址是0x00a8? 圖1-7 (a) (b)查看寄存器的狀況。第一步:點(diǎn)擊菜單view-registers-cpu registers?;窘缑嫒鐖D1-8。 圖1-

14、8第二步:點(diǎn)擊菜單file-load program重新裝載可執(zhí)行程序*.out。 第三步:點(diǎn)擊菜單debug-step into或按f8,觀察程序在單步運(yùn)行時(shí)(單步運(yùn)行指的是按一次f8程序執(zhí)行一步,再按一次f8程序再執(zhí)行一步),cpu registers的變化。單步運(yùn)行有助于進(jìn)一步了解程序運(yùn)行機(jī)理及用于程序調(diào)試。查看指令代碼。再一次裝載并運(yùn)行程序,點(diǎn)擊菜單view-disassembly, 查看并記錄指令及其對(duì)應(yīng)的指令代碼并進(jìn)行理解。圖1-912改變主程序example2.asm中x1x5的值(自定),重新執(zhí)行911。記錄x1x5、y的值并驗(yàn)算。13修改example2.cmd(自定義存儲(chǔ)器

15、配置及段的定位),重新執(zhí)行911。記錄程序、數(shù)據(jù)、標(biāo)號(hào)、中斷矢量的地址空間。二、思考題-見(jiàn)實(shí)驗(yàn)步驟11、12、13的要求。實(shí)驗(yàn)二 算術(shù)運(yùn)算與數(shù)據(jù)操作的匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)一、實(shí)驗(yàn)內(nèi)容與步驟(2、3、4、5、7選做,6、8必做)1、運(yùn)行ccs。2、編寫(xiě)程序,計(jì)算y=x1+x2+x10 (xi的值自己定義 )。3、編寫(xiě)程序,計(jì)算z=x+y-w、y=mx+bx、y=x1a2-x2a2 (自變量的值自己定義 )。4、編寫(xiě)程序,計(jì)算y= a1x1 + a2x2 + a40x40 (aixi的值自己定義 )。5、編寫(xiě)程序,用長(zhǎng)字運(yùn)算指令實(shí)現(xiàn)z32=x32+y32,用并行運(yùn)算指令實(shí)現(xiàn)z=x+y和f=e+d。

16、6、編制程序,計(jì)算y= a1x1 + a2x2 + a10x10,其中數(shù)據(jù)均為小數(shù)(aixi的值自己定義 )。7、分別編寫(xiě)程序,計(jì)算(-0.24)0.48和1024128。8、編寫(xiě)浮點(diǎn)乘法程序,計(jì)算x1x2x3 =0.2(-0.4) 0.25。 上述每個(gè)實(shí)驗(yàn)內(nèi)容基本操作步驟與要求同實(shí)驗(yàn)一的步驟311。二、實(shí)驗(yàn)習(xí)題-編寫(xiě)浮點(diǎn)乘法程序,用調(diào)用子程序的方法計(jì)算x1x2x3 x4 =0.2(-0.4)0.250.66。三、參考程序1)用單操作數(shù)指令計(jì)算y=(a1*x1+a2*x2+a19*x19+a20*x20)- 54-.titlesy21.asm.mmregsstack.usect stack,3

17、0h.bssa,20.bssx,20.bssy,2.datatable: .word1,2,3,4,5,6,7,8,9,10,11 .word12,13,14,15,16,17,18,19,20 .word21,22,23,24,25,26,27,28 .word29,30,1,2,3,4,5,6,7,8,9,10.def start.textstart:stm #a,ar1rpt #39mvpdtable,*ar1+ld #0,bstm #a,ar2stm #x,ar3stm #19,brcrptbdone-1ld *ar2+,t;單操作數(shù)指令mpy *ar3+,a;單操作數(shù)指令add a,

18、bdone: sth b,*(y)stl b,*(y+1)end:b end.end2)用長(zhǎng)字運(yùn)算實(shí)現(xiàn)32位加法運(yùn)算z=x+y.titlesy22.asm.mmregsstack.usect stack,10h.bssxhi,2,1,1.bssyhi,2,1,1.bsszhi,2,1,1.defstart.datatable: .long16782345h,10200345h.textstart:stm #0,swwsrstm #stack+10h,spstm #xhi,ar1rpt#3mvpdtable,*ar1+dld *(xhi),adadd*(yhi),adsta,*(zhi)end:

19、bend.end3)用并行指令計(jì)算z=x+y,f=e+d.titlesy23.asm.mmregsstack.usect stack,10h.bssx,3.bssd,3.defstart.datatable: .word 0123h,1027h,0,1020h,0345h,0.textstart:stm #0,swwsrstm #stack+10h,spstm #x,ar1rpt#5mvpdtable,*ar1+stm #x,ar5stm #d,ar2ld#0,asmld*ar5+,16,aadd *ar5+,16,asta,*ar5;并行指令|ld*ar2+,badd *ar2+,16,bs

20、thb,*ar2end:bend.end4)小數(shù)運(yùn)算。計(jì)算y=a1*x1+a2*x2+a3*x3+a4*x4*a1=0.1,a2=0.2,a3=-0.3,a4=0.2, x1=0.8,x2=0.6,x3=-0.4,x4=-0.2*.titlesy24.asm.mmregsstack.usect stack,10h.bssa,4.bssx,4.bssy,1.defstart.datatable: .word1*32768/10 ;0.1 .word2*32768/10 ;0.2 .word-3*32768/10 ;-0.3 .word4*32768/10 ;0.4 .word8*32768/10

21、 ;0.8 .word6*32768/10 ;0.6 .word-4*32768/10 ;-0.4 .word-2*32768/10 ;-0.2.textstart:ssbxfrctstm #a,ar1rpt#7mvpdtable,*ar1+stm #x,ar2stm #a,ar3rptza,#3mac *ar2+,*ar3+,astha,*(y)end:bend.end5)除法運(yùn)算。|被除數(shù)|b,獲取商的符號(hào);(在累加器b中)absa;分母取絕對(duì)值stha,den;分母取絕對(duì)值存回原處ldnum,16,a;將分子移到累加器a(3216)absa;分子取絕對(duì)值rpt#14;15次減法循環(huán),完成

22、除法subcden,axc1,blt;如果b=|除數(shù)|,商為整數(shù)。計(jì)算16384512的值。.titlesy26.asm.mmregsstack .usectstack,10h.bssnum,1;分子.bssden,1;分母.bssquot,1;商.datatable: .word66*32768/100;16384 .word-33*32768/100;512.defstart.textstart:ld#0020h,dp;指定數(shù)據(jù)頁(yè)指針stm #num,ar1rpt#1mvpdtable,*ar1+;傳送2個(gè)數(shù)據(jù)至分子、分母ldden,16,a ;將分母移到累加器a(3116)mpyanum

23、;(num)*(a(3116)-b,獲取商的符號(hào);(在累加器b中)absa;分母取絕對(duì)值stha,den;分母取絕對(duì)值存回原處ldnum,a;將分子移到累加器a(3216)absa;分子取絕對(duì)值rpt#15;16次減法循環(huán),完成除法subcden,axc1,blt;如果bepldm1,t;尾數(shù)相乘mpy m2,a;乘積尾數(shù)在累加器a中expa ;對(duì)尾數(shù)乘積規(guī)格化stt,temp ;規(guī)格化時(shí)產(chǎn)生的指數(shù)-tempnormastha,mp;保存乘積尾數(shù)在mp中l(wèi)dtemp,a;修正乘積指數(shù)add ep,a ;(ep)+(temp)-epstla,ep;保存乘積指數(shù)在ep中neg a ;將浮點(diǎn)乘積轉(zhuǎn)換

24、成定點(diǎn)數(shù)stla,temp ;乘積指數(shù)反號(hào),并且加載到t寄存器ldtemp,t;再將尾數(shù)按t移位ldmp,16,anormastha,product;保存定點(diǎn)乘積ret.end8) 鏈接配置文件參照實(shí)驗(yàn)一中的example2.cmd,但要作簡(jiǎn)單修改。中斷向量表文件參照實(shí)驗(yàn)一中的vectors.asm,可不作修改。實(shí)驗(yàn)三 信號(hào)發(fā)生器設(shè)計(jì)一、實(shí)驗(yàn)原理采用查找表的方法產(chǎn)生周期信號(hào)。在dsp的內(nèi)部ram中放上一個(gè)周期的正弦波數(shù)據(jù)表,通過(guò)程序按一定時(shí)間間隔將表中的數(shù)據(jù)寫(xiě)到d/a端口,在d/a輸出端就可以得到周期性的正弦波信號(hào)。更改查找表的數(shù)據(jù),就可以在d/a輸出端得到不同的周期信號(hào)。二、實(shí)驗(yàn)內(nèi)容與步驟1

25、、運(yùn)行ccs。2、采用查找表的方式產(chǎn)生正弦波、方波、三角波等常見(jiàn)波形。1)在ccs環(huán)境下新建da工程和五個(gè)文件main.asm、c54init.asm、c54.inc、memory.cmd、vectors.asm。2)分別編輯五個(gè)文件并將他們添加到da工程中。參考程序如下。主程序main.asm.mmregs.def _c_int00.include c54.inc.ref c54initda_addr .set 0x0002 ; 定義符號(hào)da_addr表示d/a 端口地址.datasin_table: ;在這里放置一個(gè)周期的正弦波的64個(gè)離散值.word 255,254,252,249,24

26、5,239,233,225.word 217,207,197,186,174,162,150,137.word 124,112,99,87,75,64,53,43.word 34,26,19,13,8,4,1,0.word 0,1,4,8,13,19,26,34.word 43,53,64,75,87,99,112,124.word 137,150,162,174,186,197,207,217.word 225,233,239,245,249,252,254,255 .bss da_data,1 ;聲明變量da_data作d/a緩沖區(qū) .bss da_num,1 ; 聲明變量da_num作d

27、/a計(jì)數(shù)器 .sect progsys ;自定義初始化段progsys .align 0x10 ;調(diào)整spc,下面的程序代碼放置在存儲(chǔ)器中時(shí),起始地址對(duì)準(zhǔn)16字的邊界_c_int00: stm #0x0f80,sp ;設(shè)置堆棧指針 callc54init ;調(diào)整dsp初始化程序,硬件仿真時(shí)必須的部分ld #sin_table ,dp ;設(shè)置數(shù)據(jù)頁(yè)指針,dp指向sin_table所在的數(shù)據(jù)存儲(chǔ)器頁(yè)loop: ;周期循環(huán)標(biāo)號(hào)st #0,da_num ;計(jì)數(shù)變量清零stm #sin_table,ar1 ; ar1指向查找表首地址sinloop: ;一個(gè)周期內(nèi)的d/a循環(huán)標(biāo)號(hào)mvdk *ar1+,da

28、_data ;讀查找表中的值放入到數(shù)據(jù)緩沖區(qū)da_data中,軟件仿真時(shí)在此處設(shè)置斷點(diǎn)portwda_data,da_addr ; 數(shù)據(jù)緩沖區(qū)da_data中的值寫(xiě)到d/a端口,軟件仿真時(shí)不起作用rpt#1000 ;下面的一條指令執(zhí)行1001次nop ;空操作,在這里起延時(shí)作用addm #1,da_num ; da_num循環(huán)計(jì)數(shù)cmpmda_num,#63; da_num與63比較 bc sinloop,ntc ;一個(gè)周期內(nèi)的64個(gè)點(diǎn)還沒(méi)d/a完繼續(xù) b loop ;一個(gè)周期內(nèi)的64個(gè)點(diǎn)已經(jīng)d/a完,進(jìn)入周期循環(huán).end 初始化程序c54init.asm.mmregs.include c54

29、.inc.def c54init.sect progsysc54init:stm #0x7208,swwsr ;0 111 001 000 001 000stm #0,swcr ;等待周期不變,(stm #1,swcr 等待周期加倍)stm #0xf800,bscr ;1111 1000 0000 0000stm #0,st0 ;數(shù)據(jù)頁(yè)指針指向第0頁(yè)stm #0x2b00,st1 ;0010 1011 0000 0000, intm=1 將全局中斷禁止;sxm=1 數(shù)據(jù)進(jìn)入alu之前進(jìn)行符號(hào)位擴(kuò)展;ovm=1 溢出控制位(參考st1資料)stm #0x2fe4,pmst;0010 1111 1

30、110 0100,將中斷向量表映射到2f80h=0010 1111 1000 0000bstm #0xffff,ifr ;清除掛起的中斷stm #0x0000,imr ;關(guān)閉所有中斷, stm #0,clkmd ;利用軟件對(duì)clkmd進(jìn)行加載clkcon:ldm clkmd,aand #0x01,abc clkcon,aneqstm #0x43ff,clkmd;0100 0011 1111 1111 ;pll=4 mul=5 100mhz; pll=3 mul=4 80mhzstm #0x0010,tcr1; tcr1為定時(shí)器1的定時(shí)控制寄存器。timer1 stopstm #0x0010,t

31、cr; tcr為定時(shí)器0的定時(shí)控制寄存器。tss=1 timer stopstm #12800,prd ; prd為定時(shí)器0的周期寄存器stm #0x0020,tcr ;定時(shí)中斷周期clkout*(tddr+1)*(prd+1)rsbx intm ;將全局中斷使能nopnopret.end中斷向量表程序vectors.asm.include c54.inc.sect .vectors.ref _c_int00 .align 0x80 reset: ; reset vector b _c_int00 nop nopnmi: rete nop nop nop ; software interrup

32、tssint17 .space 4*16 sint18 .space 4*16sint19 .space 4*16sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: rete nop nop nopint1: rete nop nop nop

33、int2: rete nop nop noptint: rete nop nop noprint0: rete nop nop nopxint0: rete nop nop nopdmac0:rete nop nop nopdmac1:rete ;tint1 nop nop nopint3: rete nop nop nophpint:rete nop nop nopdmac2:rete ;rint1 nop nop nopxint1: rete nop nop nopdmac4:rete nop nop nopdmac5:rete nop nop nop .end鏈接配置文件memory.c

34、md/*-e _c_int00-m sensor.mapmemory page 0: prog: origin = 0x2000, len = 0x0f80 vect: origin = 0x2f80, len = 0x80/*128word*/ page 1: dram: origin = 0x3000, len = 0xf80sections .progsys: load = prog page 0 .vectors: load = vect page 0 .data : load = drampage 1align 16 .bss : load = drampage 1外設(shè)寄存器名稱說(shuō)明

35、文件c54.inc* c54.inc *swcr .set 0x2b*time1:tim1 .set 0x30prd1 .set 0x31tcr1 .set 0x32*mcbsp0:drr10 .set 0x21dxr10 .set 0x23spsa0 .set 0x38spsd0 .set 0x39spcr10.set 0x00spcr20.set 0x01rcr10 .set 0x02rcr20 .set 0x03xcr10 .set 0x04xcr20 .set 0x05srgr10.set 0x06srgr20.set 0x07mcr10.set 0x08mcr20.set 0x09r

36、cera0.set 0x0arcerb0.set 0x0bxcera0.set 0x0cxcerb0.set 0x0dpcr0 .set 0x0e*mcbsp1:drr11 .set 0x41dxr11 .set 0x43spsa1 .set 0x48spsd1 .set 0x49spcr11.set 0x00spcr21.set 0x01rcr11 .set 0x02rcr21 .set 0x03xcr11 .set 0x04xcr21 .set 0x05srgr11.set 0x06srgr21.set 0x07mcr11.set 0x08mcr21.set 0x09rcera1.set

37、0x0arcerb1.set 0x0bxcera1.set 0x0cxcerb1.set 0x0dpcr1 .set 0x0e*dma:dmprec.set 0x54dmsa .set 0x55dmsdi.set 0x56dmsdn.set 0x57*channe0:dmsrc0.set 0x00dmdst0.set 0x01dmctr0.set 0x02dmsfc0.set 0x03dmmcr0.set 0x04*channel:dmsrc1.set 0x05dmdst1.set 0x06dmctr1.set 0x07dmsfc1.set 0x08dmmcr1.set 0x09*channe

38、2:dmsrc2.set 0x0admdst2.set 0x0bdmctr2.set 0x0cdmsfc2.set 0x0ddmmcr2.set 0x0e*channe3:dmsrc3.set 0x0fdmdst3.set 0x10dmctr3.set 0x11dmsfc3.set 0x12dmmcr3.set 0x13*channe4:dmsrc4.set 0x14dmdst4.set 0x15dmctr4.set 0x16dmsfc4.set 0x17dmmcr4.set 0x18*channe5:dmsrc5.set 0x19dmdst5.set 0x1admctr5.set 0x1bd

39、msfc5.set 0x1cdmmcr5.set 0x1d*dmsrcp.set 0x1edmdstp.set 0x1fdmidx0.set 0x20dmidx1.set 0x21dmfri0.set 0x22dmfri1.set 0x23dmgsa.set 0x24dmgda.set 0x25dmgcr.set 0x26dmgfr.set 0x27*3)編譯、鏈接、裝載程序。4)設(shè)置ccs集成環(huán)境下的圖形查看窗口查看產(chǎn)生的信號(hào)波形。第一步,在指令“mvdk *ar1+, da_data”行設(shè)置斷點(diǎn);第二步,點(diǎn)擊菜單view-graph-time/frequency.得到graph prope

40、rty dialog對(duì)話框,如圖3-1。按圖3-2所示進(jìn)行相關(guān)設(shè)置;第三步,按f12以animate方式運(yùn)行程序,運(yùn)行結(jié)果如下圖3-3。 圖3-1 圖3-2圖3-35)讀懂并修改程序,重復(fù)上3)、4)兩步產(chǎn)生方波、三角波等常見(jiàn)信號(hào)。三、思考題1設(shè)dsp的cpu主時(shí)鐘頻率為100mhz,指令周期為10ns,請(qǐng)說(shuō)明產(chǎn)生頻率為100khz的周期三角波信號(hào)時(shí),應(yīng)該如何修改主程序。2如果在查找表中放置正弦波一個(gè)周期內(nèi)的360個(gè)離散值(在matlab中產(chǎn)生),請(qǐng)重寫(xiě)產(chǎn)生正弦波的主程序并仿真。實(shí)驗(yàn)四 iir濾波器的dsp實(shí)現(xiàn)一、實(shí)驗(yàn)原理:參考教材 iir的dsp實(shí)現(xiàn)方法。二、實(shí)驗(yàn)內(nèi)容與步驟1運(yùn)行ccs。2、

41、iir濾波器的dsp實(shí)現(xiàn)(軟件仿真)。1)在ccs環(huán)境下新建iir2工程和三個(gè)文件:iir2.asm、iir2.cmd、vectors.asm。2)分別編輯三個(gè)文件并將他們添加到iir2工程中。參考程序如下。iir2.asm*用雙操作數(shù)指令實(shí)現(xiàn)二階低通iir濾波器 *反饋通道:x0=w(n)=x(n)+a1*x1+a2*x2 前向通道:y(n)=b0*x0+b1*x1+b2*x2 *.titleiir2.asm.mmregs.defstartx2.usectx,1x1.usectx,1x0.usectx,1coef.usectcoef,5indata.usectbuffer,1outdata.

42、usectbuffer,1*pa0.set10*pa1.set1.datatable .word0 ;x(n-1).word 0 ;x(n-2).word 676*32768/10000 ;分子系數(shù)b2=0.0676.word 1352*32768/10000;分子系數(shù)b1=0.1352.word 676*32768/10000 ;分子系數(shù)b0=0.0676.word -4142*32768/10000;分母系數(shù)a2=-0.4142.word 707*32768/10000 ;分母系數(shù)a1=0.0707.textstart:ssbxfrctstm#x2,ar1rpt#1mvpd#table,*ar1+stm#indata,ar5stm#outdata,ar2stm#coef,ar1rpt#4mvpd#table+2,*ar1+stm#x2,ar3stm#coef+4,ar4;ar4-a1mvmmar4,ar1;保存地址值在ar1中stm#3,bk;設(shè)置循環(huán)緩沖區(qū)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論