版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> DSP課程設計:</b></p><p> 正弦信號發(fā)生器的設計</p><p><b> 學 號:</b></p><p> 班 級: </p><p><b> 姓 名:</b></p&
2、gt;<p><b> 指導教師:</b></p><p><b> 設計目的</b></p><p> 通過實驗掌握DSP的軟件開發(fā)過程</p><p> 學會運用匯編語言進行程序設計</p><p> 學會用CCS仿真模擬DSP芯片,通過CCS軟件平臺上應用C54X匯編語
3、言來實現正弦信號發(fā)生裝置。 </p><p> 設計原理 本實驗產生正弦波的方法是泰勒級數展開法。泰勒級數展開法需要的存儲單元少,具有穩(wěn)定性好,算法簡單,易于編程等優(yōu)點,而且展開的級數越多,失真度就越小。求一個角度的正弦值取泰勒級數的前5項,得近似計算式: </p><p><b> 總體方案設計</b></p><p> 本實驗
4、是基于CCS開發(fā)環(huán)境的。CCS是TI公司推出的為開發(fā)TMS320系列DSP軟件的集成開發(fā)環(huán)境,是目前使用最為廣泛的DSP開發(fā)軟件之一。它提供了環(huán)境配置、源文件編譯、編譯連接、程序調試、跟蹤分析等環(huán)節(jié),并把軟、硬件開發(fā)工具集成在一起,使程序的編寫、匯編、程序的軟硬件仿真和調試等開發(fā)工作在統(tǒng)一的環(huán)境中進行,從而加速軟件開發(fā)進程。通過CCS軟件平臺上應用C54X匯編語言來實現正弦信號發(fā)生裝置。 總體思想是:正弦波的波形可以看作由無數
5、點組成,這些點與x軸的每一個角度值相對應,可以利用DSP處理器處理大量重復計算的優(yōu)勢來計算x軸每一點對應的y的值(在x軸取N個點進行逼近)。整個系統(tǒng)軟件由主程序和基于泰勒展開法的SIN子程序組成,相應的軟件流程圖如圖。</p><p><b> 設計內容</b></p><p><b> 1、設置</b></p><p&g
6、t; 在Family下選擇C55xx,將看到所有C55xx的仿真驅動,包括軟件仿真和硬件仿真;</p><p> 在Platform下選擇Simulator,在Available Factory Boards中只顯示軟件仿真驅動,選中相應的驅動;</p><p> 雙擊C55xx Rev4.0 CPU Functional Simulator,可以在My System下看到所加入的驅
7、動;</p><p> 點擊Save & Quit,將保存設置退出Setup CCStudio v3.1并啟動運行CCStudio。</p><p> 2、編寫匯編源程序sin。</p><p> 3.、建立匯編源程序</p><p> 在CCS環(huán)境下,點擊file/new/source file菜單命令,打開一個空白文檔,將
8、匯編程序輸入。</p><p> 單擊file/save菜單命令,在D:\program files\ti\myprojects下保存文件名為sin,并選擇保存類型為*.asm。</p><p> 4、建立鏈接命令文件。</p><p> 5、創(chuàng)建新的工程文件</p><p> 啟動CCS,在Project菜單中選擇New項,在Pro
9、ject中輸入denglin,CCS將創(chuàng)建一個名為denglin.pjt的工程。 </p><p> 6、將文件添加到工程中</p><p> 在工程中添加源文件,執(zhí)行菜單project/add files to project,把sin文件添加到工程中。</p><p><b> 7、生成和運行程序</b></p><
10、;p> ?。?)選擇菜單命令Project→Rebuild All,對工程重新編譯、匯編和鏈接,主窗口下方的信息窗口將顯示build進行匯編、編譯和鏈接的相關信息。</p><p> 選擇菜單命令File→Load Program,在當前目錄的Debug目錄下選擇sin并打開,將Build生成的程序加載到DSP中。 </p><p> ?。?)選擇菜單命令Debug→Run或在De
11、bug工具欄上單擊Run按鈕,運行該程序。 </p><p><b> 8、觀察運行結果</b></p><p> 點擊view/gragh菜單命令觀看圖像</p><p><b> 主要參數</b></p><p><b> 源程序</b></p>&l
12、t;p><b> 匯編源程序sin</b></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: .u
13、sect "sin_x",360</p><p> STACK: .usect "STACK",10H</p><p> k_theta .set 286 ;theta=pi/360(0.5deg)</p><p><b> start:</b>&l
14、t;/p><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>
15、; STM #90,BRC</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>
16、 CALL sinx ;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
17、 @d_cosx ;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&
18、gt;<p> 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.)&
19、lt;/p><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> lo
20、op3: STM #sin_x,AR6 ;generate sin wave</p><p> STM #1,AR0</p><p> STM #360,BK</p><p> B loop3</p><p><b> sinx:</b></p><p>
21、; .def d_xs,d_sinx</p><p><b> .data</b></p><p> table_s .word 01C7H ;C1=1/(8*9)</p><p> .word 030BH ;C2=1/(6*7)</p><p> .word
22、 0666H ;C3=1/(4*5)</p><p> .word 1556H ;C4=1/(2*3)</p><p> d_coef_s .usect "coef_s",4</p><p> d_xs .usect "sin_vars",1</p&g
23、t;<p> d_squr_xs .usect "sin_vars",1</p><p> d_temp_s .usect "sin_vars",1</p><p> d_sinx .usect "sin_vars",1</p><p> d_l_s
24、 .usect "sin_vars",1</p><p><b> .text</b></p><p> SSBX FRCT</p><p> STM #d_coef_s,AR5 ;move coeffs table_s</p><p><b>
25、 RPT #3</b></p><p> MVPD #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
26、_s</p><p> SQUR *AR2+,A ;A=x^2</p><p> ST A,*AR2 ;(AR2)=x^2</p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2+,*AR3
27、+,B,A ;A=1-x^2/72,T=x^2</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+,
28、B,A ;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 ;(d_temp)=x^2(1-x^2/42(1-x^2/72))</p&
29、gt;<p> ||LD *AR4,B ;B=1</p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/20(1-x^2/42(1-x^2/72))</p><p> MPYA *AR2+ ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/
30、72)))</p><p> ST B,*AR2 ;(d_temp)=B</p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)
31、))</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 ;sin(theta)</p><p><b> RET</b></p>
32、<p> cosx: </p><p> .def d_xc,d_cosx</p><p> d_coef_c .usect "coef_c",4</p><p><b> .data</b></p><p> table_c .word 0249H
33、 ;C1=1/(7*8)</p><p> .word 0444H ;C2=1/(5*6)</p><p> .word 0AABH ;C3=1/(3*4)</p><p> .word 4000H ;C4=1/2</p><p> d_xc
34、.usect "cos_vars",1</p><p> d_squr_xc .usect "cos_vars",1</p><p> d_temp_c .usect "cos_vars",1</p><p> d_cosx .usect "cos_vars&q
35、uot;,1</p><p> c_l_c .usect "cos_vars",1</p><p><b> .text</b></p><p> SSBX FRCT</p><p> STM #d_coef_c,AR5 ;move coeffs table_
36、c</p><p><b> RPT #3</b></p><p> MVPD #table_c,*AR5+</p><p> STM #d_coef_c,AR3</p><p> STM #d_xc,AR2</p><p> STM #c_l_c,AR4<
37、;/p><p> ST #7FFFH,c_l_c</p><p> SQUR *AR2+,A ;A=x^2</p><p> ST A,*AR2 ;(AR2)=x^2</p><p> ||LD *AR4,B ;B=1&l
38、t;/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 ;(d_temp)=x^2(1-x^2/56)<
39、/p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/30(1-x^2/56); T=x^2(1-x^2/56)</p><p> MPYA *AR2+ ;B=x^2(1-x^2/30(1-x^2/56))</p><p> ST B,*AR2 ;(
40、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><p> SFTA A,-1,A
41、 ;-1/2</p><p><b> NEG A</b></p><p> MPYA *AR2+ ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))</p><p> MAR *AR2+</p><p><b> RET
42、D</b></p><p> ADD *AR4,16,B ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))</p><p> STH B,*AR2 ;cos(theta)</p><p><b> RET</b></p>
43、<p> .end .mmregs</p><p> .def start</p><p> .def d_xs,d_sinx,d_xc,d_cosx,sinx,cosx</p><p> sin_x: .usect "sin_x",360</p><p> ST
44、ACK: .usect "STACK",10H</p><p> k_theta .set 286 ;theta=pi/360(0.5deg)</p><p><b> start:</b></p><p><b> .text</b></p&g
45、t;<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,BRC</p><p> RPTB loop1-1&
46、lt;/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 ;d_sinx=sin(x)</p><
47、;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 ;B=sin(x)*cos(x)</p><p&g
48、t; 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> STM #88,BRC</p><p> R
49、PTB loop2-1</p><p> LD *AR7-,A</p><p> STL A,*AR6+</p><p> loop2: STM #179,BRC ;sin180(deg.)-sin359(deg.)</p><p> STM #sin_x,AR7</p><
50、;p> RPTB loop3-1</p><p> LD *AR7+,A</p><p><b> NEG A</b></p><p> STL A,*AR6+</p><p> loop3: STM #sin_x,AR6 ;generate sin wave<
51、;/p><p> STM #1,AR0</p><p> STM #360,BK</p><p> B loop3</p><p><b> sinx:</b></p><p> .def d_xs,d_sinx</p><p><b>
52、.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> .wo
53、rd 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_vars&quo
54、t;,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><p&g
55、t;<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> MVPD #table
56、_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
57、 ;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</p><p>
58、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 ;A=1-x^2/42(1-x^2/72);T=x^2(1-x^2/72)</
59、p><p> MPYA *AR2+ ;B=x^2(1-x^2/42(1-x^2/72))</p><p> ST B,*AR2 ;(d_temp)=x^2(1-x^2/42(1-x^2/72))</p><p> ||LD *AR4,B ;B=1&
60、lt;/p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/20(1-x^2/42(1-x^2/72))</p><p> MPYA *AR2+ ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))</p><p> ST B,*AR2
61、 ;(d_temp)=B</p><p> ||LD *AR4,B ;B=1</p><p> MASR *AR2-,*AR3+,B,A ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))</p><p> MPYA d_xs
62、 ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))</p><p> STH B,d_sinx ;sin(theta)</p><p><b> RET</b></p><p> cosx: </p><p> .def
63、d_xc,d_cosx</p><p> d_coef_c .usect "coef_c",4</p><p><b> .data</b></p><p> table_c .word 0249H ;C1=1/(7*8)</p><p> .word 0
64、444H ;C2=1/(5*6)</p><p> .word 0AABH ;C3=1/(3*4)</p><p> .word 4000H ;C4=1/2</p><p> d_xc .usect "cos_vars",1</p><p>
65、 d_squr_xc .usect "cos_vars",1</p><p> d_temp_c .usect "cos_vars",1</p><p> d_cosx .usect "cos_vars",1</p><p> c_l_c .usect &qu
66、ot;cos_vars",1</p><p><b> .text</b></p><p> SSBX FRCT</p><p> STM #d_coef_c,AR5 ;move coeffs table_c</p><p><b> RPT #3</b>&
67、lt;/p><p> MVPD #table_c,*AR5+</p><p> STM #d_coef_c,AR3</p><p> STM #d_xc,AR2</p><p> STM #c_l_c,AR4</p><p> ST #7FFFH,c_l_c</p>&
68、lt;p> SQUR *AR2+,A ;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=
69、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 ;(d_temp)=x^2(1-x^2/56)</p><p> MASR *AR2-,*AR3+,B,A ;A=1
70、-x^2/30(1-x^2/56); T=x^2(1-x^2/56)</p><p> MPYA *AR2+ ;B=x^2(1-x^2/30(1-x^2/56))</p><p> ST B,*AR2 ;(d_temp)=x^2(1-x^2/30(1-x^2/56))</p><p>
71、 ||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><p> SFTA A,-1,A ;-1/2</p><p><b> NEG A<
72、;/b></p><p> MPYA *AR2+ ;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
73、 ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))</p><p> STH B,*AR2 ;cos(theta)</p><p><b> RET</b></p><p><b> 鏈接命令文件</b></p><
74、;p><b> MEMORY</b></p><p><b> {</b></p><p><b> PAGE 0:</b></p><p> EPROM: org=0E000H, len=1000H</p><p> VECS: org=0FF80H,
75、 len=0080H</p><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&l
76、t;/p><p> DARAM3: org=0200H, len=0200H</p><p><b> }</b></p><p><b> SECTIONS</b></p><p><b> {</b></p><p> .text
77、:> EPROM PAGE 0</p><p> .data :> EPROM PAGE 0</p><p> STACK :> SPRAM PAGE 1</p><p> sin_vars :> DARAM1 PAGE 1</p><p> coef_s
78、 :> DARAM1 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<
79、;/p><p> .vectors :>VECS PAGE 0</p><p><b> }</b></p><p><b> 實驗結果及分析</b></p><p> 結果成功生成了正弦波圖像,表明改程序能通過TMS320C54x產生正弦信號</p><
80、p><b> 設計總結</b></p><p> 這次實驗通過與小組的探討研究使我對這門學科的基本知識、理論解起來更加方便直觀和深刻。我同時明白了,做實驗不是一味的磚牛角,而是需要相互探討研究充分發(fā)揮團隊力量才可在最短時間做出結果。通過實驗我基本了解了DSP應用系統(tǒng)開發(fā)方法和設計過程,掌握了匯編源程序的編輯、匯編和鏈接過程,熟悉了CCS集成開發(fā)環(huán)境,CCS的安裝及設置,CCS集成開
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設計--正弦信號發(fā)生器的設計
- dsp課程設計--正弦信號發(fā)生器的設計
- dsp課程設計--正弦信號發(fā)生器的設計
- dsp課程設計---正弦波信號發(fā)生器
- dsp課程設計---正弦波信號發(fā)生器報告
- 正弦波信號發(fā)生器課程設計
- dsp課程設計——信號發(fā)生器(方波)
- 基于dsp正弦波發(fā)生器課程設計
- eda課程設計——基于dds的正弦信號發(fā)生器設計
- 幅值可調的正弦信號發(fā)生器 課程設計
- 高壓正弦發(fā)生器課程設計
- 幅值可調的正弦信號發(fā)生器課程設計
- eda課程設計報告---正弦函數信號發(fā)生器的設計
- dsp課程設計--多波形信號發(fā)生器
- 幅值可調的正弦信號發(fā)生器 課程設計論文
- 基于dsp技術的正弦信號發(fā)生課程設計
- 信號發(fā)生器課程設計----函數信號發(fā)生器
- 正弦波發(fā)生器課程設計
- 信號發(fā)生器課程設計報告--函數信號發(fā)生器的設計
- 信號發(fā)生器課程設計---函數發(fā)生器的設計
評論
0/150
提交評論