DSP課程設計正弦信號發(fā)生器的設計
《DSP課程設計正弦信號發(fā)生器的設計》由會員分享,可在線閱讀,更多相關《DSP課程設計正弦信號發(fā)生器的設計(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 太原理工大學 DSP課程設計 設計題目:正弦信號發(fā)生器的設計 班級:電信0801班 姓名:凌天 一、 設計目的 1、 通過實驗掌握DSP的軟件開發(fā)過程 2、 學會運用匯編語言進行程序設計 3、 學會用CCS仿真模擬DSP芯片,通過CCS軟件平臺上應用C54X匯編語言來實現(xiàn)正弦信號發(fā)生裝置。 二、 設計原理 本實驗產(chǎn)生正弦波的方法是泰勒級數(shù)展開法。泰勒級數(shù)展開法需要的存儲單元少,具有穩(wěn)定性
2、好,算法簡單,易于編程等優(yōu)點,而且展開的級數(shù)越多,失真度就越小。求一個角度的正弦值取泰勒級數(shù)的前5項,得近似計算式: 三、 總體方案設計 本實驗是基于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匯編語言來實現(xiàn)正弦信號發(fā)生裝置。 總體思想
3、是:正弦波的波形可以看作由無數(shù)點組成,這些點與x軸的每一個角度值相對應,可以利用DSP處理器處理大量重復計算的優(yōu)勢來計算x軸每一點對應的y的值(在x軸取N個點進行逼近)。整個系統(tǒng)軟件由主程序和基于泰勒展開法的SIN子程序組成,相應的軟件流程圖如圖。 四、 設計內容 1、設置 在Family下選擇C55xx,將看到所有C55xx的仿真驅動,包括軟件仿真和硬件仿真; 在Platform下選擇Simulator,在Available Factory Boards中只顯示軟件仿真驅動,選中相應的驅動; 雙擊C55xx Rev4.0 CPU Funct
4、ional Simulator,可以在My System下看到所加入的驅動; 點擊Save & Quit,將保存設置退出Setup CCStudio v3.1并啟動運行CCStudio。 2、編寫匯編源程序sin。 3.、建立匯編源程序 在CCS環(huán)境下,點擊file/new/source file菜單命令,打開一個空白文檔,將匯編程序輸入。 單擊file/save菜單命令,在D:\program files\ti\myprojects下保存文件名為sin,并選擇保存類型為*.asm。 4、建立鏈接命令文件。 5、創(chuàng)建新的工程文件 啟動CCS,在Project菜單中選擇New
5、項,在Project中輸入denglin,CCS將創(chuàng)建一個名為denglin.pjt的工程。 6、將文件添加到工程中 在工程中添加源文件,執(zhí)行菜單project/add files to project,把sin文件添加到工程中。 7、生成和運行程序 (1)選擇菜單命令Project→Rebuild All,對工程重新編譯、匯編和鏈接,主窗口下方的信息窗口將顯示build進行匯編、編譯和鏈接的相關信息。 (2) 選擇菜單命令File→Load Program,在當前目錄的Debug目錄下選擇sin并打開,將Build生成的程序加載到DSP中。 (3)選擇菜單命令
6、Debug→Run或在Debug工具欄上單擊Run按鈕,運行該程序。 8、觀察運行結果 點擊view/gragh菜單命令觀看圖像 五、 主要參數(shù) 六、 源程序 匯編源程序sin .mmregs .def start .def d_xs,d_sinx,d_xc,d_cosx,sinx,cosx sin_x: .usect "sin_x",360 STACK: .usect "STACK",10H k_theta .set 286
7、 ;theta=pi/360(0.5deg) start: .text STM #STACK+10H,SP STM k_theta,AR0 STM 0,AR1 STM #sin_x,AR6 STM #90,BRC RPTB loop1-1 LDM AR1,A LD #d_xs,DP STL A,@d_xs
8、 STL A,@d_xc CALL sinx ;d_sinx=sin(x) CALL cosx ;d_cosx=cos(x) LD #d_sinx,DP LD @d_sinx,16,A ;A=sin(x) MPYA @d_cosx ;B=sin(x)*cos(x) STH B,1,*AR6+ ;AR6----2*sin(x)
9、 MAR *AR1+0 loop1: STM #sin_x+89, AR7 ;sin91(deg.)-sin179(deg.) STM #88,BRC RPTB loop2-1 LD *AR7-,A STL A,*AR6+ loop2: STM #179,BRC ;sin180(deg.)-sin359(deg.) STM #sin_x,AR7 RPTB lo
10、op3-1 LD *AR7+,A NEG A STL A,*AR6+ loop3: STM #sin_x,AR6 ;generate sin wave STM #1,AR0 STM #360,BK B loop3 sinx: .def d_xs,d_sinx .data table_s .word 01C7H ;C1=1/(
11、8*9) .word 030BH ;C2=1/(6*7) .word 0666H ;C3=1/(4*5) .word 1556H ;C4=1/(2*3) d_coef_s .usect "coef_s",4 d_xs .usect "sin_vars",1 d_squr_xs .usect "sin_vars",1 d_temp_s .usect "sin_vars",1 d_sinx .usect
12、"sin_vars",1 d_l_s .usect "sin_vars",1 .text SSBX FRCT STM #d_coef_s,AR5 ;move coeffs table_s RPT #3 MVPD #table_s,*AR5+ STM #d_coef_s,AR3 STM #d_xs,AR2 STM #d_l_s,AR4
13、 ST #7FFFH,d_l_s SQUR *AR2+,A ;A=x^2 ST A,*AR2 ;(AR2)=x^2 ||LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x^2/72,T=x^2 MPYA A ;A=T*A=x^2(1-x^2/72)
14、 STH A,*AR2 ;(d_temp)=x^2(1-x^2/72) MASR *AR2-,*AR3+,B,A ;A=1-x^2/42(1-x^2/72);T=x^2(1-x^2/72) MPYA *AR2+ ;B=x^2(1-x^2/42(1-x^2/72)) ST B,*AR2 ;(d_temp)=x^2(1-x^2/42(1-x^2/72)) ||LD
15、 *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x^2/20(1-x^2/42(1-x^2/72)) MPYA *AR2+ ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72))) ST B,*AR2 ;(d_temp)=B ||LD *AR4,B ;B=1
16、 MASR *AR2-,*AR3+,B,A ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))) MPYA d_xs ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))) STH B,d_sinx ;sin(theta) RET cosx: .def d_xc,d_cosx d_coef_c .usect "coef_c
17、",4 .data table_c .word 0249H ;C1=1/(7*8) .word 0444H ;C2=1/(5*6) .word 0AABH ;C3=1/(3*4) .word 4000H ;C4=1/2 d_xc .usect "cos_vars",1 d_squr_xc .usect "cos_vars",1 d_temp_c .usect "cos_vars",
18、1 d_cosx .usect "cos_vars",1 c_l_c .usect "cos_vars",1 .text SSBX FRCT STM #d_coef_c,AR5 ;move coeffs table_c RPT #3 MVPD #table_c,*AR5+ STM #d_coef_c,AR3 STM #d_xc,AR2 STM
19、 #c_l_c,AR4 ST #7FFFH,c_l_c SQUR *AR2+,A ;A=x^2 ST A,*AR2 ;(AR2)=x^2 ||LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x^2/56,T=x^2 MPYA A ;A=T*A
20、=x^2(1-x^2/56) STH A,*AR2 ;(d_temp)=x^2(1-x^2/56) MASR *AR2-,*AR3+,B,A ;A=1-x^2/30(1-x^2/56); T=x^2(1-x^2/56) MPYA *AR2+ ;B=x^2(1-x^2/30(1-x^2/56)) ST B,*AR2 ;(d_temp)=x^2(1-x^2/30(1-x^2
21、/56)) ||LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x^2/12(1-x^2/30(1-x^2/56)) SFTA A,-1,A ;-1/2 NEG A MPYA *AR2+ ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56))) MAR *AR2+
22、 RETD ADD *AR4,16,B ;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56))) STH B,*AR2 ;cos(theta) RET .end 鏈接命令文件 MEMORY { PAGE 0: EPROM: org=0E000H, len=1000H VECS: org=0FF80H, le
23、n=0080H PAGE 1: SPRAM: org=0060H, len=0020H DARAM1: org=0080H, len=0010H DARAM2: org=0090H, len=0010H DARAM3: org=0200H, len=0200H } SECTIONS { .text :> EPROM PAGE 0 .data :> EPROM PAGE 0 STACK
24、:> SPRAM PAGE 1 sin_vars :> DARAM1 PAGE 1 coef_s :> DARAM1 PAGE 1 cos_vars :> DARAM2 PAGE 1 coef_c :> DARAM2 PAGE 1 sin_x : align(512) {} > DARAM3 PAGE 1 .vectors :>VECS PAGE 0 } 七、 實驗結果及分析 結果成功生成了正弦波圖像,表明改程序能通過TMS320C54x產(chǎn)生正弦信號 八、 設計總結 這次實驗把平時書本上生硬的文字變成了活生生的圖像,使我對這門學科的基本知識、理論解起來更加方便直觀和深刻。通過實驗我基本了解了DSP應用系統(tǒng)開發(fā)方法和設計過程,掌握了匯編源程序的編輯、匯編和鏈接過程,熟悉了CCS集成開發(fā)環(huán)境,CCS的安裝及設置,CCS集成開發(fā)環(huán)境,CCS的基本使用,調試應用程序。我成功通過CCS軟件應用C54X匯編語言實現(xiàn)了正弦信號發(fā)生裝置,這次實驗使我能夠更真實地體會到DSP的功能和用途。
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案