版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> XXXX</b></p><p><b> DSP課程設(shè)計(jì)</b></p><p><b> 摘要:</b></p><p> 在上學(xué)期數(shù)字信號(hào)處理(DSP)學(xué)習(xí)的基礎(chǔ)上,本次課程設(shè)計(jì)的目的是,學(xué)會(huì)使用CCS(Code Composer Studio)或matlab
2、7.0集成開發(fā)環(huán)境軟件,在此集成開發(fā)環(huán)境下完成工程項(xiàng)目創(chuàng)建,程序編寫,編譯,鏈接,調(diào)試以及數(shù)據(jù)的分析。同時(shí)完成一個(gè)余弦波信號(hào)發(fā)生器的程序的編寫,并在集成開發(fā)環(huán)境下進(jìn)行模擬運(yùn)行,觀察結(jié)果。</p><p><b> 目錄</b></p><p> 第一章 概述……………………………………………………………04</p><p> 1.1設(shè)計(jì)目
3、的………………………………………………………04</p><p> 1.2設(shè)計(jì)內(nèi)容………………………………………………………04</p><p> 1.3設(shè)計(jì)原理………………………………………………………04</p><p> 第二章 總體方案設(shè)計(jì)…………………………………………………08</p><p> 2.1 總體實(shí)現(xiàn)方案………
4、…………………………………………08</p><p> 2.2 具體實(shí)現(xiàn)步驟…………………………………………………10</p><p> 第三章 源程序…………………………………………………………11</p><p> 第四章 設(shè)計(jì)仿真結(jié)果及分析…………………………………………15</p><p> 第五章 Matlab下產(chǎn)生該正弦
5、信號(hào)…………………………………16</p><p> 5.1 程序……………………………………………………………16</p><p> 5.2實(shí)驗(yàn)圖形………………………………………………………16</p><p> 第六章 設(shè)計(jì)總結(jié)………………………………………………………17</p><p><b> 第一章 概述<
6、/b></p><p><b> 1.1設(shè)計(jì)目的</b></p><p> 學(xué)會(huì)使用CCS(Code Composer Studio)集成開發(fā)環(huán)境軟件,在此集成開發(fā)環(huán)境下完成工程項(xiàng)目創(chuàng)建,程序編寫,編譯,鏈接,調(diào)試以及數(shù)據(jù)的分析。同時(shí)完成一個(gè)正弦波信號(hào)發(fā)生器的程序的編寫,并在集成開發(fā)環(huán)境下進(jìn)行模擬運(yùn)行,觀察結(jié)果。</p><p>&l
7、t;b> 1.2設(shè)計(jì)內(nèi)容</b></p><p> 編寫一個(gè)產(chǎn)生正弦波信號(hào)的程序,在CCS軟件下進(jìn)行模擬運(yùn)行,觀察輸出結(jié)果。</p><p><b> 1.3設(shè)計(jì)原理</b></p><p> 正弦波信號(hào)發(fā)生器已被廣泛地應(yīng)用于通信、儀器儀表和工業(yè)控制等領(lǐng)域的信號(hào)處理系統(tǒng)中。通常有兩種方法可以產(chǎn)生正弦波,分別為查表法和泰
8、勒級(jí)數(shù)展開法。查表法是通過查表的方式來實(shí)現(xiàn)正弦波,主要用于對(duì)精度要求不很高的場(chǎng)合。泰勒級(jí)數(shù)展開法是根據(jù)泰勒展開式進(jìn)行計(jì)算來實(shí)現(xiàn)正弦信號(hào),它能精確地計(jì)算出一個(gè)角度的正弦和余弦值,且只需要較小的存儲(chǔ)空間。本次課程設(shè)計(jì)只要使用泰勒級(jí)數(shù)展開法來實(shí)現(xiàn)正弦波信號(hào)。</p><p> 1. 產(chǎn)生正弦波的算法</p><p> 在高等數(shù)學(xué)中,正弦函數(shù)和余弦函數(shù)可以展開成泰勒級(jí)數(shù),其表達(dá)式為</p
9、><p> 若要計(jì)算一個(gè)角度x的正弦和余弦值,可取泰勒級(jí)數(shù)的前5項(xiàng)進(jìn)行近似計(jì)算。</p><p> 由上述兩個(gè)式子可以推導(dǎo)出遞推公式,即</p><p> sin(nx)=2cos(x)sin[(n-1)x]-sin[(n-2)x]</p><p> cos(nx)=2cos(x)sin[(n-1)x]-cos[(n-2)x]</p
10、><p> 由遞推公式可以看出,在計(jì)算正弦和余弦值時(shí),不僅需要已知cos(x),而且還需要sin[(n-1)x]、sin[(n-2)x]和cos[(n-2)x]。</p><p><b> 2. 正弦波的實(shí)現(xiàn)</b></p><p> ⑴計(jì)算一個(gè)角度的正弦值</p><p> 利用泰勒級(jí)數(shù)的展開式,可計(jì)算一個(gè)角度x的
11、正弦值,并采用子程序的調(diào)用方式。在調(diào)用前先在數(shù)據(jù)存儲(chǔ)器d_xs單元中存放x的弧度值,計(jì)算結(jié)果存放在d_sinx單元中。</p><p> 實(shí)現(xiàn)計(jì)算一個(gè)角度的正弦值的程序片段如下:</p><p><b> sinx:</b></p><p> .def d_xs,d_sinx </p><p><b
12、> .data</b></p><p> table_s .word 01C7H ;C1=1/(8*9)</p><p> .word 030BH ;C2=1/(6*7)</p><p> .word 0666H ;C3=1/(4*5)</p><p&g
13、t; .word 1556H ;C4=1/(2*3)</p><p> d_coef_s .usect "coef_s",4</p><p> d_xs .usect "sin_vars",1</p><p> d_squr_xs .usect "sin_v
14、ars",1</p><p> d_temp_s .usect "sin_vars",1</p><p> d_sinx .usect "sin_vars",1</p><p> d_l_s .usect "sin_vars",1</p>&
15、lt;p><b> .text</b></p><p> SSBX FRCT</p><p> STM #d_coef_s,AR5 ;move coeffs table_s</p><p><b> RPT #3</b></p><p> MVP
16、D #table_s,*AR5+</p><p> STM #d_coef_s,AR3</p><p> STM #d_xs,AR2</p><p> STM #d_l_s,AR4</p><p> ST #7FFFH,d_l_s</p><p> SQUR *AR2+,A
17、 ;A=x^2</p><p> ST A,*AR2 ;(AR2)=x^2</p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2+,*AR3+,B,A ;A=1-x^2/72,T=x^2<
18、;/p><p> MPYA A ;A=T*A=x^2(1-x^2/72)</p><p> STH A,*AR2 ;(d_temp)=x^2(1-x^2/72)</p><p> MASR *AR2-,*AR3+,B,A </
19、p><p> ;A=1-x^2/42(1-x^2/72);T=x^2(1-x^2/72)</p><p> MPYA *AR2+ ;B=x^2(1-x^2/42(1-x^2/72))</p><p> ST B,*AR2 </p><p> ;(d_temp)=x^2
20、(1-x^2/42(1-x^2/72))</p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2-,*AR3+,B,A </p><p> ;A=1-x^2/20(1-x^2/42(1-x^2/72))</p><p> MPYA *A
21、R2+ </p><p> ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))</p><p> ST B,*AR2 ;(d_temp)=B</p><p> ||LD *AR4,B ;B=1</p><
22、;p> MASR *AR2-,*AR3,B,A </p><p> ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))</p><p> MPYA d_xs ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))</p><p> STH B,d_sinx
23、 ;sin(theta)</p><p><b> RET</b></p><p> ⑵計(jì)算一個(gè)角度的余弦值</p><p> 利用余弦函數(shù)展開的泰勒級(jí)數(shù)的前五項(xiàng)計(jì)算一個(gè)角度的余弦值,可采用子程序的調(diào)用方式來實(shí)現(xiàn)。調(diào)用前先將x弧度值放在數(shù)據(jù)存儲(chǔ)器d_xc單元中,計(jì)算結(jié)果存放在d_cosx單元中。</p&
24、gt;<p> 實(shí)現(xiàn)計(jì)算一個(gè)角度的余弦值的程序片段如下:</p><p> cosx: </p><p> .def d_xc,d_cosx</p><p> d_coef_c .usect "coef_c",4</p><p><b> .data</b>
25、;</p><p> table_c .word 0249H ;C1=1/(7*8)</p><p> .word 0444H ;C2=1/(5*6)</p><p> .word 0AABH ;C3=1/(3*4)</p><p> .word 4000H
26、 ;C4=1/2</p><p> d_xc .usect "cos_vars",1</p><p> d_squr_xc .usect "cos_vars",1</p><p> d_temp_c .usect "cos_vars",1</p&g
27、t;<p> d_cosx .usect "cos_vars",1</p><p> c_l_c .usect "cos_vars",1</p><p><b> .text</b></p><p> SSBX FRCT</p><
28、p> STM #d_coef_c,AR5 ;move coeffs table_c</p><p><b> RPT #3</b></p><p> MVPD #table_c,*AR5+</p><p> STM #d_coef_c,AR3</p><p> STM
29、#d_xc,AR2</p><p> STM #c_l_c,AR4</p><p> ST #7FFFH,c_l_c</p><p> SQUR *AR2+,A ;A=x^2</p><p> ST A,*AR2 ;(AR2)=x^2</
30、p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2+,*AR3+,B,A ;A=1-x^2/56,T=x^2</p><p> MPYA A ;A=T*A=x^2(1-x^2/56)</p><p> S
31、TH A,*AR2 ;(d_temp)=x^2(1-x^2/56)</p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/30(1-x^2/56)</p><p> ;T=x^2(1-x^2/56)</p><p> MPYA *AR2+ ;B=
32、x^2(1-x^2/30(1-x^2/56))</p><p> ST B,*AR2 </p><p> ;(d_temp)=x^2(1-x^2/30(1-x^2/56))</p><p> ||LD *AR4,B ;B=1</p><p> MASR *
33、AR2-,*AR3+,B,A </p><p> ;A=1-x^2/12(1-x^2/30(1-x^2/56))</p><p> SFTA A,-1,A ;-1/2</p><p><b> NEG A</b></p><p> MPYA *AR2+
34、 ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))</p><p> MAR *AR2+</p><p><b> RETD</b></p><p> ADD *AR4,16,B ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))</p&
35、gt;<p> STH B,*AR2 ;cos(theta)</p><p><b> RET</b></p><p><b> ?、钦也ǖ膶?shí)現(xiàn)</b></p><p> 利用計(jì)算一個(gè)角度的正弦值和余弦值程序可實(shí)現(xiàn)正弦波。其實(shí)現(xiàn)步驟如下:</p>&l
36、t;p> 第一步:利用sin_start和cos_start子程序,計(jì)算(間隔為)的正弦和余弦值;</p><p> 第二步:利用sin(2x)=2sin(x)cos(x)公式,計(jì)算的正弦值(間隔為);</p><p> 第三步:通過復(fù)制,獲得的正弦值;</p><p> 第四步:將的正弦值重復(fù)從PA口輸出,便可得到正弦波。</p>&l
37、t;p> 產(chǎn)生正弦波的程序片段如下:</p><p><b> .mmregs</b></p><p> .def start</p><p> .def d_xs,d_sinx,d_xc,d_cosx,sinx,cosx</p><p> sin_x: .usect "s
38、in_x",360</p><p> STACK: .usect "STACK",10H</p><p> k_theta .set 286 ;theta=pi/360(0.5deg)</p><p><b> start:</b></p><
39、p><b> .text</b></p><p> STM #STACK+10H,SP</p><p> STM k_theta,AR0</p><p> STM 0,AR1</p><p> STM #sin_x,AR6</p><p> STM #90,B
40、RC</p><p> RPTB loop1-1</p><p> LDM AR1,A</p><p> LD #d_xs,DP</p><p> STL A,@d_xs</p><p> STL A,@d_xc</p><p> CALL sinx
41、 ;d_sinx=sin(x)</p><p> CALL cosx ;d_cosx=cos(x)</p><p> LD #d_sinx,DP</p><p> LD @d_sinx,16,A ;A=sin(x)</p><p> MPYA @d_cosx
42、 ;B=sin(x)*cos(x)</p><p> STH B,1,*AR6+ ;AR6----2*sin(x)</p><p> MAR *AR1+0</p><p> loop1: STM #sin_x+89, AR7 ;sin91(deg.)-sin179(deg.)</p><p>
43、 STM #88,BRC</p><p> RPTB loop2-1</p><p> LD *AR7-,A</p><p> STL A,*AR6+</p><p> loop2: STM #179,BRC ;sin180(deg.)-sin359(deg.)</p>&l
44、t;p> STM #sin_x,AR7</p><p> RPTB loop3-1</p><p> LD *AR7+,A</p><p><b> NEG A</b></p><p> STL A,*AR6+</p><p> loop3: STM
45、 #sin_x,AR6 ;generate sin wave</p><p> STM #1,AR0</p><p> STM #360,BK</p><p> B loop3</p><p> 產(chǎn)生正弦波鏈接命令文件的程序片段如下:</p><p><b> MEMOR
46、Y</b></p><p><b> {</b></p><p><b> PAGE 0:</b></p><p> EPROM: org=0E000H, len=1000H</p><p> VECS: org=0FF80H, len=0080H</p>
47、<p><b> PAGE 1:</b></p><p> SPRAM: org=0060H, len=0020H</p><p> DARAM1: org=0080H, len=0010H</p><p> DARAM2: org=0090H, len=0010H</p><p> D
48、ARAM3: org=0200H, len=0200H</p><p><b> }</b></p><p><b> SECTIONS</b></p><p><b> {</b></p><p> .text :> EPROM PAGE
49、0</p><p> .data :> EPROM PAGE 0</p><p> STACK :> SPRAM PAGE 1</p><p> sin_vars :> DARAM1 PAGE 1</p><p> coef_s :> DARAM1
50、PAGE 1</p><p> cos_vars :> DARAM2 PAGE 1</p><p> coef_c :> DARAM2 PAGE 1</p><p> sin_x : align(512) {} > DARAM3 PAGE 1</p><p> .
51、vectors :> VECS PAGE 0</p><p><b> }</b></p><p> 在實(shí)際應(yīng)用中,正弦波是通過D/A口輸出的。選擇每個(gè)正弦周期中的樣點(diǎn)數(shù)、改變每個(gè)樣點(diǎn)之間的延遲,就能夠產(chǎn)生不同頻率的波形,也可以利用軟件改變波形的幅度以及起始相位。</p><p> 第二章 總體方案設(shè)計(jì)</p&
52、gt;<p> 2.1. 總體實(shí)現(xiàn)方案</p><p> 我們知道一個(gè)角度為x的正弦和余弦函數(shù),都可以展開為泰勒級(jí)數(shù),且其前五項(xiàng)可以看為:</p><p> 本程序的編程思想是這樣的,正弦波的波形可以看為由無數(shù)點(diǎn)組成,這些點(diǎn)與軸的每一個(gè)角度值相對(duì)應(yīng),那么我們可以利用DSP處理器處理大量重復(fù)計(jì)算的優(yōu)勢(shì)來計(jì)算,軸每一點(diǎn)對(duì)應(yīng)的y軸的值(在x軸取360個(gè)點(diǎn)來進(jìn)行逼近),由于程序
53、的編制采用小數(shù)形式,其弧度大于1的正弦值得不到,這就對(duì)正弦波的產(chǎn)生造成了障礙??捎捎谡也ǖ奶厥獾膶?duì)稱形式給程序的編制找到了出口。的弧度為0.7854<1,即 之間的任意正弦、余弦值可以利用匯編程序得到N又可以利用公式:得到之間的正弦值。而之間的正弦曲線與之間的正弦曲線通過這條軸左右對(duì)稱,那么就可以得到的正弦值,而的正弦曲線的相反數(shù)通過這條軸與左右對(duì)稱。這樣的正弦值也得到了。一個(gè)周期內(nèi)完整的正弦波就得到了。正弦波產(chǎn)生的流程圖如下:
54、</p><p> 2.2. 具體實(shí)現(xiàn)步驟</p><p> 本課程設(shè)計(jì)需要使用C54X匯編語言產(chǎn)生正弦波,并通過 CCS的圖形顯示工具觀察波形。設(shè)計(jì)分以下幾步完成:</p><p> 啟動(dòng) CCS,操作如下:</p><p> 1.建立新的工程文件:點(diǎn)擊Project→New,保存文件名為sinx.pjt。</p>&
55、lt;p> 2.建立匯編源程序:點(diǎn)擊File→New→Source File菜單命令,打開一個(gè)空白文檔,將匯編源程序逐條輸入后,單擊Flie→Save菜單命令,文件類型保存為(*.asm),單擊“保存”按鈕,以上匯編程序被存盤。</p><p> 3.建立連接命令文件:點(diǎn)擊File→New→Source File菜單命令,打開一個(gè)空白文檔,將鏈接命令文件逐條輸入后,單擊Flie→Save菜單命令,文件類
56、型保存為(*.cmd),單擊“保存”按鈕,以上鏈接命令文件被存盤。</p><p> 4.選擇 Project 菜單中的Add File to Project 選項(xiàng),將匯編源程序sin.asm和鏈接定位sin.cmd文件依次添加到工程文件中。</p><p> 5.選擇 Project 菜單中的 Options 選項(xiàng),并選擇 build options 項(xiàng)來修改或添加編譯、連接中使用的
57、參數(shù)。選擇Linker 窗口,在“Output Filename”欄中寫入輸出 OUT 文件的名字,如 sin.out,還可以設(shè)置生成的 map文件名。 </p><p> 6.完成匯編,編譯和鏈接,正確產(chǎn)生.out文件:點(diǎn)擊Project菜單中的Rebuild all,請(qǐng)注意在監(jiān)視窗口顯示的匯編,編譯和鏈接的相關(guān)信息。如果沒有錯(cuò)誤,將產(chǎn)生sin.out文件;如果有錯(cuò),在監(jiān)視窗口以紅色字體顯示出錯(cuò)誤行,用鼠標(biāo)雙
58、擊該行,光標(biāo)跳將至源程序相應(yīng)的出錯(cuò)行。修改錯(cuò)誤后,重新匯編鏈接。</p><p> 7.在 Project 選項(xiàng)中打開sin.pjt 文件,使用 Build 選項(xiàng)完成編譯、連接。</p><p> 8.使用 File 菜單中的 Load Program 將 OUT 文件裝入。然后選擇 Debug→Run,程序執(zhí)行過程中可以使用 Debug →Halt 暫停程序的執(zhí)行。</p>
59、;<p> 9.選擇 View -> Graph -> Time/Frequency菜單打開一個(gè)圖形顯示窗口。將 “Start Address”項(xiàng)改為地址sin_x,將“Acquisition Buffer Size”項(xiàng)設(shè)置為360,將“Display Data Size”項(xiàng)設(shè)置為360,將“DSP Data Type”改為“16-bit signed integer” 。</p><p&
60、gt; 即將Graph Property Dialog對(duì)話框改為見下圖:</p><p> 這樣,將在圖形顯示窗口中顯示從sin_x(首地址)開始的360個(gè)點(diǎn)的 16 位有符號(hào)整數(shù)的圖形。</p><p><b> 第三章 源程序</b></p><p><b> 主要參數(shù)</b></p><p
61、> 1. sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))))</p><p> 2. cos(theta)=1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9)))</p><p> 3. sin(2*theta)=2*sin(theta)*cos(theta)</p>&l
62、t;p><b> 源程序</b></p><p> 1. 產(chǎn)生正弦波程序清單sin.asm:</p><p> .title "sin.asm" ;為匯編文件取名為“sin.asm”</p><p> .mmregs ;定義存儲(chǔ)器映像寄存器</p><p&g
63、t; .def _c_int00</p><p> .ref sinx,d_xs,d_sinx,cosx,d_xc,d_cosx;定義標(biāo)號(hào)</p><p> sin_x: .usect "sin_x",360 ;為"sin_x"保留360個(gè)存儲(chǔ)空間</p><p> STACK: .u
64、sect "STACK",10 ;為堆棧保留10個(gè)存儲(chǔ)空間</p><p> k_theta .set 286 ;theta=pi/360(0.5deg)</p><p> PA0 .set 0</p><p><b> _c_int00 </b></p&
65、gt;<p> .text ;定義文本程序代碼段</p><p> STM #STACK+10,SP ;設(shè)置堆棧指針</p><p> STM k_theta,AR0 ;AR0-->K_theta(increment)</p><p> STM 0,AR1
66、 ;(AR1)=X(rad)</p><p> STM #sin_x,AR6 ;AR6- - >sin(x)</p><p> STM #90,BRC ;form sin0(deg.)—sin90(deg)</p><p> ;重復(fù)執(zhí)行塊語句(下條語句開始至loop1-1 )91次</p>
67、<p> RPTB loop1-1 </p><p> LDM AR1,A</p><p> LD #d_xs,DP ;DPd_xs</p><p> STL A,@d_xs ;(A)低16位→d_xs</p><p> STL A,
68、@d_xc ;(A)低16位→d_xc</p><p> CALL sinx ;調(diào)用sinx程序</p><p> CALL cosx ;調(diào)用conx程序</p><p> LD #d_sinx,DP ;DP d_sinx</p><p> LD
69、 @d_sinx,16,A ;A=sin(x)</p><p> MPYA @d_cosx ;B= sin(x)*cos(x)</p><p> STH B,1,*AR6+ ;AR6- - >2*sin(x)*cos(x)</p><p> MAR *AR1+0 ;修改輔
70、助寄存器AR1</p><p> loop1: STM #sin_x+89,AR7 ;sin91(deg.)- -sin179(deg.)</p><p> STM #88,BRC ;重復(fù)執(zhí)行下條指令至loop2-1</p><p> RPTB loop2-1 ;處90次</p>&
71、lt;p> LD *AR7-,A ;((AR7)) →A,然后AR7減去1</p><p> STL A,*AR6+ ;(A) 低16位→AR6</p><p> loop2: STM #179,BRC ;sin180(deg.)- -sin359(deg.)</p><p>
72、 ?。?BRC)=179,重復(fù)執(zhí)行180次</p><p> STM #sin_x,AR7 ;AR7指向sin_x首地址</p><p> RPTB loop3-1 ;</p><p> LD *AR7+,A ;((AR7)) →A,然后AR7加1</p><p> N
73、EG A ;累加器變負(fù)</p><p> STL A,*AR6+ ;A低16位→AR6</p><p> loop3: STM #sin_x,AR6 ;generate sin wave AR6指向sin_x</p><p> STM #1,AR0 ;
74、AR 01</p><p> STM #360,BK ;BK360</p><p> loop4: PORTW *AR6+0%,PA0 ;PA0=*AR6+0%,向PA0輸出數(shù)據(jù)</p><p> B loop4 ;</p><p><b> sinx
75、:</b></p><p> .def d_xs,d_sinx ;定義標(biāo)號(hào)d_xs,d_sinx</p><p> .data ;定義數(shù)據(jù)代碼段</p><p> table_s .word 01c7h ;c1=1/(8*9)</p><p>
76、.word 030bh ;c1=1/(6*7)</p><p> .word 0666h ;c1=1/(4*5)</p><p> .word 1556h ;c1=1/(2*3)</p><p> d_coef_s .usect "coef_s",4 ;為
77、"coef_s"保留4個(gè)存儲(chǔ)空間</p><p> d_xs .usect "sin_vars",1 ;為d_xs中sin_vars保留1個(gè)存儲(chǔ)空間</p><p> d_squr_xs .usect "sin_vars",1 ;為d_squr_xs中sin_vars保留1個(gè)存儲(chǔ)空間<
78、;/p><p> d_temp_s .usect "sin_vars",1 ;為d_temp_s中sin_vars保留1個(gè)存儲(chǔ)空間</p><p> d_sinx .usect "sin_vars",1 ;為d_sinx中sin_vars保留1個(gè)存儲(chǔ)空間</p><p> c_l_s
79、 .usect "sin_vars",1 ;為d_xs中sin_vars保留1個(gè)存儲(chǔ)空間</p><p> .text ;定義代碼開始段</p><p> SSBX FRCT ;設(shè)置FRCT=1以解決冗余符號(hào)位</p><p> STM #d
80、_coef_s,AR5 ;AR5指向d_coef_s首地址</p><p> RPT #3 ;重復(fù)下條指令4次</p><p> MVPD #table_s,*AR5+ ;table_s中的數(shù)復(fù)制到AR5指向的單元</p><p> STM #d_coef_s,AR3 ;AR3指向
81、d_coef_s首地址</p><p> STM #d_xs,AR2 ;AR2指向d_xs首地址</p><p> STM #c_l_s,AR4 ;AR4指向c_l_s首地址</p><p> ST #7FFFh,c_l_s ;7FFFh →c_l_s</p><p&g
82、t; SQUR *AR2+,A ;AR2指向累加器A中的數(shù)值求其平方</p><p> ST A,*AR2 ;(A)左移16位→AR2</p><p> ||LD *AR4,B ;(AR4)左移16位→B</p><p> MASR *AR2+,*AR3+,B,
83、A ;從累加器A中減去(AR2)*(AR3)</p><p> MPYA A ;操作數(shù)與累加器A中高位相乘</p><p> STH A,*AR2 ;(A)高16位→AR2</p><p> MASR *AR2-,*AR3+,B,A ;從累加器A中減去(AR2)*(AR3)
84、</p><p> MPYA *AR2+ ;AR2指向的數(shù)與累加器A的高16位相乘</p><p> ST B,*AR2 ;(B)左移16位→AR2</p><p> ||LD *AR4,B ;(AR4)左移16位→B</p><p> MA
85、SR *AR2-,*AR3+,B,A ;從累加器A中減去(AR2)*(AR3)</p><p> MPYA *AR2+ ;與累加器A中高16位相乘</p><p> ST B,*AR2 ;(B)左移16位→AR2</p><p> ||LD *AR4,B
86、;(AR4)左移16位→B MASR *AR2-,*AR3+,B,A ;從累加器A中減去(AR2)*(AR3)</p><p> MPYA d_xs ;d_xs指向的操作數(shù)與累加器A中高16位相乘</p><p> STH B,d_sinx ;(B)高16位→d_sinx</p>
87、<p> RET ;返回</p><p><b> cosx:</b></p><p> .def d_xc,d_cosx ;定義標(biāo)號(hào)d_xc,d_cosx</p><p> d_coef_c .usect "coef_c",4
88、 ;為coef_c保留4個(gè)存儲(chǔ)空間</p><p> .data ;定義數(shù)據(jù)代碼段</p><p> table_c .word 0249h ;c1=1/(7*8)</p><p> .word 0444h ;c2=1/(6*5)</p&g
89、t;<p> .word 0aabh ;c3=1/(3*4)</p><p> .word 4000h ;c4=1/2</p><p> d_xc .usect "cos_vars",1 ;為d_xc中cos_vars保存1個(gè)存儲(chǔ)單元</p><p
90、> d_squr_xc .usect "cos_vars",1 ;為d_squr_xc中cos_vars保存1個(gè)存儲(chǔ)單元</p><p> d_temp_c .usect "cos_vars",1 ;為d_temp_c中cos_vars保存1個(gè)存儲(chǔ)單元</p><p> d_cosx .usect
91、"cos_vars",1 ;為d_cosx中cos_vars保存1個(gè)存儲(chǔ)單元</p><p> c_l_c .usect "cos_vars",1 ;為c_l_c中cos_vars保存1個(gè)存儲(chǔ)單元</p><p> .text ;定義文本代碼段</p><
92、;p> SSBX FRCT ;FRCT=1以清除冗余符號(hào)位</p><p> STM #d_coef_c,AR5 ;AR5指向d_coef_c首地址</p><p> RPT #3 ;重復(fù)下條指令4次</p><p> MVPD #table_c,*AR
93、5+ ;把table_c中的數(shù)復(fù)制到中AR5</p><p> STM #d_coef_c,AR3 ;AR3指向d_coef_c首地址</p><p> STM #d_xc,AR2 ;AR2 指向d_xc首地址</p><p> STM #c_l_c,AR4 ;AR4指向c_l_c首地址
94、</p><p> ST #7FFFh,c_l_c ;7FFFh→c_l_c</p><p> SQUR *AR2+,A ;求X的平方存放在累加器A中</p><p> ST A,*AR2 ;(A)左移16位→AR2</p><p> ||LD
95、*AR4,B ;(AR4)左移16位→B</p><p> MASR *AR2+,*AR3+,B,A ;A=1-x^2/56,T=x^2</p><p> MPYA A ;A=T*A=x^2(1-x^2/56)</p><p> STH A,*AR2 ;(
96、d_temp)= x^2(1-x^2/56)</p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/30(1-x^2/56),</p><p> T= x^2(1-x^2/56)</p><p> MPYA *AR2+ ;B=x^2(1-x^2/30(1-x^2/56))</p>
97、<p> ST B,*AR2 ;(d_temp)= x^2(1-x^2/30(1-x^2/56))</p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2-,*AR3+,B,A ;A= 1-x^2/12(1-x^2/30(1-x^2/56))</p>
98、<p> SFTA A,-1,A ;-1/2</p><p> NEG A ;</p><p> MPYA *AR2+ ;B=1-x^2/2(1-x^2/12(1-x^2/30</p><p> ?。?1-x^2/56)))</p>
99、<p> MAR *AR2+ ;</p><p> RETD ;</p><p> ADD *AR4,16,B ;B=1-x^2/2(1-x^2/12(1-x^2/30</p><p> ?。?1-x^2/56)))</p><
100、p> STH B,*AR2 ;cos(theta)</p><p> RET ;</p><p> .end ;</p><p> 2. *.cmd文件描述輸入文件和輸出文件,說明系統(tǒng)中有哪些可用存儲(chǔ)器、程序段、堆棧及復(fù)位向量和中斷
101、向量等安排在什么地方。其中MEMORY段就是用來規(guī)定目標(biāo)存儲(chǔ)器的模型,通過這條指令,可以定義系統(tǒng)中所包含的各種形式的存儲(chǔ)器,以及它們占據(jù)的地址范圍;SECTIONS段說明如何將輸入段組合成輸出段以及在可執(zhí)行文件中定義輸出段、規(guī)定輸出段在存儲(chǔ)器中的位置等。正弦波程序鏈接命令文件sin.cmd:</p><p><b> MEMORY</b></p><p><b
102、> {</b></p><p><b> PAGE 0:</b></p><p> EPROM: org = 0E000h, len = 1000h</p><p> VECS: org = 0FF80h, len = 0080h</p><p>
103、;<b> PAGE 1:</b></p><p> SPRAM: org = 0060h, len = 0020h</p><p> DARAM1: org = 0080h, len = 0010h</p><p> DARAM2: org = 0090h, l
104、en = 0010h</p><p> DARAM3: org = 0200h, len = 0200h</p><p><b> }</b></p><p> SECTIONS </p><p><b> {</b></p><p> .
105、text :>EPROM PAGE 0 </p><p> ??;文本代碼段其實(shí)地址為0E000h,長度為1000h</p><p> .data :>EPROM PAGE 0 ;數(shù)據(jù)代碼段其實(shí)地址為0D000h</p><p> STACK :>SPRAM PAGE 1 ;堆棧起始地址為0060h
106、,長度為0020h</p><p> sin_vars :>DARAM1 PAGE 1 ;標(biāo)號(hào)為sin_vars段的起始地址為0080</p><p><b> ;長度為0010h</b></p><p> coef_s :>DARAM1 PAGE 1 ;標(biāo)號(hào)為coef_s段的起始地址為0070h</
107、p><p><b> ;長度為0010h</b></p><p> cos_vars :>DARAM2 PAGE 1 ;標(biāo)號(hào)為cos_vars段的起始地址為0090h</p><p><b> ;長度為0010h</b></p><p> coef_c :>DARAM2
108、 PAGE 1 ;標(biāo)號(hào)為coef_c段的起始地址為0080h</p><p><b> ??;長度為0020h</b></p><p> sin_x : align(512) {} > DARAM3 PAGE 1</p><p> .vectors :>VECS PAGE 0</p>&l
109、t;p><b> }</b></p><p> 3. 復(fù)位向量文件sin_v.asm:</p><p> .title "sin_v.asm"</p><p> .ref _c_int00</p><p> .sect ".vectors&
110、quot;</p><p> B _c_int00</p><p><b> .end</b></p><p> 第四章 設(shè)計(jì)仿真結(jié)果及分析</p><p> 在ccs集成環(huán)境中實(shí)現(xiàn)正弦波能夠起到防止干擾的作用,同時(shí)也大大地減小了波形的線性失真。同時(shí)我們也能從中看出ccs能夠精確地對(duì)各個(gè)角度進(jìn)
111、行計(jì)算得出相應(yīng)的正弦值,幅度和頻率易于調(diào)節(jié),波形也較為穩(wěn)定,抗干擾能力較強(qiáng)。</p><p> 最重要的是這種設(shè)計(jì)方案簡單可行,新穎實(shí)用,具有很高的實(shí)踐和推廣價(jià)值。</p><p><b> 分析:</b></p><p> 通過不斷的發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤和調(diào)試,最終得到了所希望的圖象,即正弦波信號(hào)。</p><p>
112、; 第五章 Matlab下產(chǎn)生該正弦信號(hào)</p><p><b> 5.1程序</b></p><p> x=[1 0 0 1 0 1 1 0 1 1]; %二進(jìn)制數(shù)字序列</p><p> grid=200;%每個(gè)碼元持續(xù)的時(shí)間</p><p> t=0:1/grid:length(x);</p>
113、;<p> w1=2*pi;w2=4*pi;A=1;</p><p> c1t=A*cos(w1*t);c2t=A*cos(w2*t);</p><p> plot(t,c2t,'r'),title('余弦載波波形')</p><p><b> 5.2實(shí)驗(yàn)圖形</b></p>
114、<p><b> 第六章 設(shè)計(jì)總結(jié)</b></p><p> 在本次課程設(shè)計(jì)過程中我遇到一些課堂中從未有過的問題,通過網(wǎng)絡(luò)查找和同學(xué)交流,大大促進(jìn)了實(shí)訓(xùn)進(jìn)程。并在過程中進(jìn)一步提高自身的創(chuàng)作、創(chuàng)新水平,扎實(shí)基礎(chǔ),擴(kuò)展所學(xué)。</p><p> 課設(shè)過程中經(jīng)常遇到問題,通過自己在網(wǎng)上查找資料和在老師的幫助下,一步一步地解決了問題,最終解決了問題得到了結(jié)果,使
115、我獨(dú)立解決問題的能力得到了很大的提高。并且此次課程設(shè)計(jì),基于課程理論知識(shí)和網(wǎng)上資料,使我對(duì)數(shù)字信號(hào)處理課程有了更深一步的了解和掌握,對(duì)利用CCS軟件編程的數(shù)字信號(hào)處理方法有了進(jìn)一步的了解。在理論課的基礎(chǔ)上進(jìn)行實(shí)驗(yàn)實(shí)習(xí),是對(duì)本門課程的深入學(xué)習(xí)和掌握,在以后的工作學(xué)習(xí)中,數(shù)字信號(hào)的處理都是采用計(jì)算機(jī)仿真的方很大的幫助。雖然《DSP原理及應(yīng)用》這門課程的課時(shí)很短,但是通過本次課程設(shè)計(jì)使我對(duì)這門課程有了更深的了解,同時(shí)也學(xué)會(huì)了C54x DSP芯
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 正余弦信號(hào)的譜分析課程設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---正余弦信號(hào)的譜分析
- dsp課程設(shè)計(jì)---dtmf信號(hào)的產(chǎn)生及檢測(cè)
- 正余弦信號(hào)的譜分析數(shù)字信號(hào)處理課程設(shè)計(jì)報(bào)告
- dsp課程設(shè)計(jì)報(bào)告---設(shè)計(jì)回聲信號(hào)產(chǎn)生器
- dsp課程設(shè)計(jì)----基于tms320c5410芯片的余弦信號(hào)發(fā)生器
- dsp課程設(shè)計(jì)---基于dsp的回波的產(chǎn)生與抵消
- dsp課程設(shè)計(jì)---fsk信號(hào)調(diào)制
- dsp語音信號(hào)處理課程設(shè)計(jì)
- 基于dsp技術(shù)的正弦信號(hào)發(fā)生課程設(shè)計(jì)
- dsp課程設(shè)計(jì)---正弦信號(hào)發(fā)生器的設(shè)計(jì)
- dsp課程設(shè)計(jì)--正弦信號(hào)發(fā)生器的設(shè)計(jì)
- dsp課程設(shè)計(jì)——信號(hào)發(fā)生器(方波)
- 數(shù)字信號(hào)處理(dsp)課程設(shè)計(jì)報(bào)告
- 基于dsp技術(shù)的正弦信號(hào)發(fā)生課程設(shè)計(jì)
- dsp課程設(shè)計(jì)--正弦信號(hào)發(fā)生器的設(shè)計(jì)
- dsp課程設(shè)計(jì)--正弦信號(hào)發(fā)生器的設(shè)計(jì)
- 課程設(shè)計(jì)--信號(hào)波形產(chǎn)生與濾波電路設(shè)計(jì)
- dsp課程設(shè)計(jì)--基于dsp開發(fā)板的語言信號(hào)濾波處理
- 微機(jī)課程設(shè)計(jì)---da轉(zhuǎn)換產(chǎn)生鋸齒波信號(hào)
評(píng)論
0/150
提交評(píng)論