版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> DSP課程設計</b></p><p> 設計題目:正弦信號發(fā)生器的設計</p><p><b> 設計目的</b></p><p> 通過實驗掌握DSP的軟件開發(fā)過程</p><p> 學會運用匯編語言進行程序設計</p><p>
2、學會用CCS仿真模擬DSP芯片,通過CCS軟件平臺上應用C54X匯編語言來實現(xiàn)正弦信號發(fā)生裝置。 </p><p> 設計原理 本實驗產(chǎn)生正弦波的方法是泰勒級數(shù)展開法。泰勒級數(shù)展開法需要的存儲單元少,具有穩(wěn)定性好,算法簡單,易于編程等優(yōu)點,而且展開的級數(shù)越多,失真度就越小。求一個角度的正弦值取泰勒級數(shù)的前5項,得近似計算式: </p><p><b> 總體方案設計&
3、lt;/b></p><p> 本實驗是基于CCS開發(fā)環(huán)境的。CCS是TI公司推出的為開發(fā)TMS320系列DSP軟件的集成開發(fā)環(huán)境,是目前使用最為廣泛的DSP開發(fā)軟件之一。它提供了環(huán)境配置、源文件編譯、編譯連接、程序調(diào)試、跟蹤分析等環(huán)節(jié),并把軟、硬件開發(fā)工具集成在一起,使程序的編寫、匯編、程序的軟硬件仿真和調(diào)試等開發(fā)工作在統(tǒng)一的環(huán)境中進行,從而加速軟件開發(fā)進程。通過CCS軟件平臺上應用C54X匯編語言來實
4、現(xiàn)正弦信號發(fā)生裝置。 總體思想是:正弦波的波形可以看作由無數(shù)點組成,這些點與x軸的每一個角度值相對應,可以利用DSP處理器處理大量重復計算的優(yōu)勢來計算x軸每一點對應的y的值(在x軸取N個點進行逼近)。整個系統(tǒng)軟件由主程序和基于泰勒展開法的SIN子程序組成,相應的軟件流程圖如圖。</p><p><b> 設計內(nèi)容</b></p><p><b>
5、 1、設置</b></p><p> 在Family下選擇C55xx,將看到所有C55xx的仿真驅(qū)動,包括軟件仿真和硬件仿真;</p><p> 在Platform下選擇Simulator,在Available Factory Boards中只顯示軟件仿真驅(qū)動,選中相應的驅(qū)動;</p><p> 雙擊C55xx Rev4.0 CPU Functi
6、onal Simulator,可以在My System下看到所加入的驅(qū)動;</p><p> 點擊Save & Quit,將保存設置退出Setup CCStudio v3.1并啟動運行CCStudio。</p><p> 2、編寫匯編源程序sin。</p><p> 3.、建立匯編源程序</p><p> 在CCS環(huán)境下,點擊
7、file/new/source file菜單命令,打開一個空白文檔,將匯編程序輸入。</p><p> 單擊file/save菜單命令,在D:\program files\ti\myprojects下保存文件名為sin,并選擇保存類型為*.asm。</p><p> 4、建立鏈接命令文件。</p><p> 5、創(chuàng)建新的工程文件</p><
8、p> 啟動CCS,在Project菜單中選擇New項,在Project中輸入denglin,CCS將創(chuàng)建一個名為denglin.pjt的工程。 </p><p> 6、將文件添加到工程中</p><p> 在工程中添加源文件,執(zhí)行菜單project/add files to project,把sin文件添加到工程中。</p><p><b>
9、 7、生成和運行程序</b></p><p> (1)選擇菜單命令Project→Rebuild All,對工程重新編譯、匯編和鏈接,主窗口下方的信息窗口將顯示build進行匯編、編譯和鏈接的相關信息。</p><p> 選擇菜單命令File→Load Program,在當前目錄的Debug目錄下選擇sin并打開,將Build生成的程序加載到DSP中。 </p>
10、<p> ?。?)選擇菜單命令Debug→Run或在Debug工具欄上單擊Run按鈕,運行該程序。 </p><p><b> 8、觀察運行結(jié)果</b></p><p> 點擊view/gragh菜單命令觀看圖像</p><p><b> 主要參數(shù)</b></p><p><
11、;b> 源程序</b></p><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&l
12、t;/p><p> sin_x: .usect "sin_x",360</p><p> STACK: .usect "STACK",10H</p><p> k_theta .set 286 ;theta=pi/360(0.5deg)</p><
13、;p><b> start:</b></p><p><b> .text</b></p><p> STM #STACK+10H,SP</p><p> STM k_theta,AR0</p><p> STM 0,AR1</p><p> S
14、TM #sin_x,AR6</p><p> 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> S
15、TL A,@d_xc</p><p> 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 ;
16、A=sin(x)</p><p> MPYA @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
17、 ;sin91(deg.)-sin179(deg.)</p><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
18、 ;sin180(deg.)-sin359(deg.)</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
19、 A,*AR6+</p><p> loop3: STM #sin_x,AR6 ;generate sin wave</p><p> STM #1,AR0</p><p> STM #360,BK</p><p> B loop3</p><p><b>
20、sinx:</b></p><p> .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
21、/(6*7)</p><p> .word 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 .use
22、ct "sin_vars",1</p><p> d_squr_xs .usect "sin_vars",1</p><p> d_temp_s .usect "sin_vars",1</p><p> d_sinx .usect "sin_vars"
23、;,1</p><p> d_l_s .usect "sin_vars",1</p><p><b> .text</b></p><p> SSBX FRCT</p><p> STM #d_coef_s,AR5 ;move coeffs tab
24、le_s</p><p><b> 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</
25、p><p> ST #7FFFH,d_l_s</p><p> SQUR *AR2+,A ;A=x^2</p><p> ST A,*AR2 ;(AR2)=x^2</p><p> ||LD *AR4,B ;B=1<
26、/p><p> MASR *AR2+,*AR3+,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
27、><p> MASR *AR2-,*AR3+,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_t
28、emp)=x^2(1-x^2/42(1-x^2/72))</p><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+
29、 ;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><p> MASR *AR2-,*AR3+,B,A ;A=
30、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 ;sin(theta)</p><p>&
31、lt;b> RET</b></p><p> cosx: </p><p> .def d_xc,d_cosx</p><p> d_coef_c .usect "coef_c",4</p><p><b> .data</b></p>
32、<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 ;C4=1
33、/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><p> d
34、_cosx .usect "cos_vars",1</p><p> c_l_c .usect "cos_vars",1</p><p><b> .text</b></p><p> SSBX FRCT</p><p> STM #d_
35、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 #d_xc,AR2</p&g
36、t;<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</p><p> ||L
37、D *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> STH A,*AR2
38、 ;(d_temp)=x^2(1-x^2/56)</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>
39、; 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>&
40、lt;p> SFTA A,-1,A ;-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+
41、</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><p> STH B,*AR2 ;cos(theta)</p><p>
42、;<b> RET</b></p><p><b> .end</b></p><p><b> 鏈接命令文件</b></p><p><b> MEMORY</b></p><p><b> {</b></p>
43、<p><b> PAGE 0:</b></p><p> EPROM: org=0E000H, len=1000H</p><p> VECS: org=0FF80H, len=0080H</p><p><b> PAGE 1:</b></p><p> SPRA
44、M: org=0060H, len=0020H</p><p> DARAM1: org=0080H, len=0010H</p><p> DARAM2: org=0090H, len=0010H</p><p> DARAM3: org=0200H, len=0200H</p><p><b> }&l
45、t;/b></p><p><b> SECTIONS</b></p><p><b> {</b></p><p> .text :> EPROM PAGE 0</p><p> .data :> EPROM PAGE 0</p&
46、gt;<p> STACK :> SPRAM PAGE 1</p><p> sin_vars :> DARAM1 PAGE 1</p><p> coef_s :> DARAM1 PAGE 1</p><p> cos_vars :> DARAM2 PAGE 1
47、</p><p> coef_c :> DARAM2 PAGE 1</p><p> sin_x : align(512) {} > DARAM3 PAGE 1</p><p> .vectors :>VECS PAGE 0</p><p><b> }&
48、lt;/b></p><p><b> 實驗結(jié)果及分析</b></p><p> 結(jié)果成功生成了正弦波圖像,表明改程序能通過TMS320C54x產(chǎn)生正弦信號</p><p><b> 設計總結(jié)</b></p><p> 這次實驗把平時書本上生硬的文字變成了活生生的圖像,使我對這門學科的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設計--正弦信號發(fā)生器的設計
- dsp課程設計--正弦信號發(fā)生器的設計
- dsp課程設計--正弦信號發(fā)生器的設計
- dsp課程設計---正弦波信號發(fā)生器
- dsp課程設計---正弦波信號發(fā)生器報告
- 正弦波信號發(fā)生器課程設計
- dsp課程設計——信號發(fā)生器(方波)
- 基于dsp正弦波發(fā)生器課程設計
- eda課程設計——基于dds的正弦信號發(fā)生器設計
- 幅值可調(diào)的正弦信號發(fā)生器 課程設計
- 高壓正弦發(fā)生器課程設計
- 幅值可調(diào)的正弦信號發(fā)生器課程設計
- eda課程設計報告---正弦函數(shù)信號發(fā)生器的設計
- dsp課程設計--多波形信號發(fā)生器
- 幅值可調(diào)的正弦信號發(fā)生器 課程設計論文
- 基于dsp技術(shù)的正弦信號發(fā)生課程設計
- 信號發(fā)生器課程設計----函數(shù)信號發(fā)生器
- 正弦波發(fā)生器課程設計
- 信號發(fā)生器課程設計報告--函數(shù)信號發(fā)生器的設計
- 信號發(fā)生器課程設計---函數(shù)發(fā)生器的設計
評論
0/150
提交評論