DSP課程設(shè)計__正弦信號發(fā)生器的設(shè)計_第1頁
DSP課程設(shè)計__正弦信號發(fā)生器的設(shè)計_第2頁
DSP課程設(shè)計__正弦信號發(fā)生器的設(shè)計_第3頁
DSP課程設(shè)計__正弦信號發(fā)生器的設(shè)計_第4頁
DSP課程設(shè)計__正弦信號發(fā)生器的設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、太原理工大學(xué) DSP課程設(shè)計: 正弦信號發(fā)生器的設(shè)計 學(xué) 號: 班 級: 姓 名: 指導(dǎo)教師:1、 設(shè)計目的1、 通過實驗掌握DSP的軟件開發(fā)過程2、 學(xué)會運(yùn)用匯編語言進(jìn)行程序設(shè)計3、 學(xué)會用CCS仿真模擬DSP芯片,通過CCS軟件平臺上應(yīng)用C54X匯編語言來實現(xiàn)正弦信號發(fā)生裝置。 2、 設(shè)計原理 本實驗產(chǎn)生正弦波的方法是泰勒級數(shù)展開法。泰勒級數(shù)展開法需要的存儲單元少,具有穩(wěn)定性好,算法簡單,易于編程等優(yōu)點,而且展開的級數(shù)越多,失真度就越小。求一個角度的正弦值取泰勒級數(shù)的前5項,得近似計算式: 3、 總體方案設(shè)計 本實驗是基于CCS開發(fā)環(huán)境的。CCS是TI公司推出的為開發(fā)TMS320系列DSP

2、軟件的集成開發(fā)環(huán)境,是目前使用最為廣泛的DSP開發(fā)軟件之一。它提供了環(huán)境配置、源文件編譯、編譯連接、程序調(diào)試、跟蹤分析等環(huán)節(jié),并把軟、硬件開發(fā)工具集成在一起,使程序的編寫、匯編、程序的軟硬件仿真和調(diào)試等開發(fā)工作在統(tǒng)一的環(huán)境中進(jìn)行,從而加速軟件開發(fā)進(jìn)程。通過CCS軟件平臺上應(yīng)用C54X匯編語言來實現(xiàn)正弦信號發(fā)生裝置。 總體思想是:正弦波的波形可以看作由無數(shù)點組成,這些點與x軸的每一個角度值相對應(yīng),可以利用DSP處理器處理大量重復(fù)計算的優(yōu)勢來計算x軸每一點對應(yīng)的y的值(在x軸取N個點進(jìn)行逼近)。整個系統(tǒng)軟件由主程序和基于泰勒展開法的SIN子程序組成,相應(yīng)的軟件流程圖如圖。 4、 設(shè)計內(nèi)容1、設(shè)置在

3、Family下選擇C55xx,將看到所有C55xx的仿真驅(qū)動,包括軟件仿真和硬件仿真;在Platform下選擇Simulator,在Available Factory Boards中只顯示軟件仿真驅(qū)動,選中相應(yīng)的驅(qū)動;雙擊C55xx Rev4.0 CPU Functional Simulator,可以在My System下看到所加入的驅(qū)動;點擊Save & Quit,將保存設(shè)置退出Setup CCStudio v3.1并啟動運(yùn)行CCStudio。2、編寫匯編源程序sin。3.、建立匯編源程序在CCS環(huán)境下,點擊file/new/source file菜單命令,打開一個空白文檔,將匯編程序輸入。

4、單擊file/save菜單命令,在D:program filestimyprojects下保存文件名為sin,并選擇保存類型為*.asm。4、建立鏈接命令文件。5、創(chuàng)建新的工程文件啟動CCS,在Project菜單中選擇New項,在Project中輸入denglin,CCS將創(chuàng)建一個名為denglin.pjt的工程。 6、將文件添加到工程中在工程中添加源文件,執(zhí)行菜單project/add files to project,把sin文件添加到工程中。7、生成和運(yùn)行程序(1)選擇菜單命令ProjectRebuild All,對工程重新編譯、匯編和鏈接,主窗口下方的信息窗口將顯示build進(jìn)行匯編、

5、編譯和鏈接的相關(guān)信息。(2) 選擇菜單命令FileLoad Program,在當(dāng)前目錄的Debug目錄下選擇sin并打開,將Build生成的程序加載到DSP中。 (3)選擇菜單命令DebugRun或在Debug工具欄上單擊Run按鈕,運(yùn)行該程序。 8、觀察運(yùn)行結(jié)果點擊view/gragh菜單命令觀看圖像5、 主要參數(shù)6、 源程序匯編源程序sin .mmregs .def start .def d_xs,d_sinx,d_xc,d_cosx,sinx,cosxsin_x: .usect sin_x,360STACK: .usect STACK,10Hk_theta .set 286 ;theta

6、=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 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

7、) MAR *AR1+0loop1: 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 loop3-1 LD *AR7+,A NEG A STL A,*AR6+loop3: STM #sin_x,AR6 ;generate sin wave STM #1,AR0 STM #360,BK B loop3sinx: .def d_xs

8、,d_sinx .datatable_s .word 01C7H ;C1=1/(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,4d_xs .usect sin_vars,1d_squr_xs .usect sin_vars,1d_temp_s .usect sin_vars,1d_sinx .usect sin_vars,1d_l_s .usect sin_vars,1 .text SSBX FRCT STM #d_coef_s,AR5 ;mo

9、ve coeffs table_s RPT #3 MVPD #table_s,*AR5+ STM #d_coef_s,AR3 STM #d_xs,AR2 STM #d_l_s,AR4 ST #7FFFH,d_l_s SQUR *AR2+,A ;A=x2 ST A,*AR2 ;(AR2)=x2 |LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x2/72,T=x2 MPYA A ;A=T*A=x2(1-x2/72) STH A,*AR2 ;(d_temp)=x2(1-x2/72) MASR *AR2-,*AR3+,B,A ;A=1-x2/42(1-x2/72);

10、T=x2(1-x2/72) MPYA *AR2+ ;B=x2(1-x2/42(1-x2/72) ST B,*AR2 ;(d_temp)=x2(1-x2/42(1-x2/72) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/20(1-x2/42(1-x2/72) MPYA *AR2+ ;B=x2(1-x2/20(1-x2/42(1-x2/72) ST B,*AR2 ;(d_temp)=B |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/6(1-x2/20(1-x2/42(1-x2/72) MPYA d_xs ;

11、B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72) STH B,d_sinx ;sin(theta) RETcosx: .def d_xc,d_cosxd_coef_c .usect coef_c,4 .datatable_c .word 0249H ;C1=1/(7*8) .word 0444H ;C2=1/(5*6) .word 0AABH ;C3=1/(3*4) .word 4000H ;C4=1/2d_xc .usect cos_vars,1d_squr_xc .usect cos_vars,1d_temp_c .usect cos_vars,1d_cosx .us

12、ect cos_vars,1c_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 #c_l_c,AR4 ST #7FFFH,c_l_c SQUR *AR2+,A ;A=x2 ST A,*AR2 ;(AR2)=x2 |LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x2/56,T=x2 MPYA A ;A=T*A=x2(1-x2/56)

13、 STH A,*AR2 ;(d_temp)=x2(1-x2/56) MASR *AR2-,*AR3+,B,A ;A=1-x2/30(1-x2/56); T=x2(1-x2/56) MPYA *AR2+ ;B=x2(1-x2/30(1-x2/56) ST B,*AR2 ;(d_temp)=x2(1-x2/30(1-x2/56) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/12(1-x2/30(1-x2/56) SFTA A,-1,A ;-1/2 NEG A MPYA *AR2+ ;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) MA

14、R *AR2+ RETD ADD *AR4,16,B ;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) STH B,*AR2 ;cos(theta) RET .end .mmregs .def start .def d_xs,d_sinx,d_xc,d_cosx,sinx,cosxsin_x: .usect sin_x,360STACK: .usect STACK,10Hk_theta .set 286 ;theta=pi/360(0.5deg)start: .text STM #STACK+10H,SP STM k_theta,AR0 STM 0,AR1 STM #sin_

15、x,AR6 STM #90,BRC RPTB loop1-1 LDM AR1,A LD #d_xs,DP STL A,d_xs 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) MAR *AR1+0loop1: STM #sin_x+89, AR7 ;sin91(deg.)-sin179(deg.) STM #88,BRC RPTB

16、loop2-1 LD *AR7-,A STL A,*AR6+loop2: STM #179,BRC ;sin180(deg.)-sin359(deg.) STM #sin_x,AR7 RPTB loop3-1 LD *AR7+,A NEG A STL A,*AR6+loop3: STM #sin_x,AR6 ;generate sin wave STM #1,AR0 STM #360,BK B loop3sinx: .def d_xs,d_sinx .datatable_s .word 01C7H ;C1=1/(8*9) .word 030BH ;C2=1/(6*7) .word 0666H

17、;C3=1/(4*5) .word 1556H ;C4=1/(2*3)d_coef_s .usect coef_s,4d_xs .usect sin_vars,1d_squr_xs .usect sin_vars,1d_temp_s .usect sin_vars,1d_sinx .usect sin_vars,1d_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

18、#d_l_s,AR4 ST #7FFFH,d_l_s SQUR *AR2+,A ;A=x2 ST A,*AR2 ;(AR2)=x2 |LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x2/72,T=x2 MPYA A ;A=T*A=x2(1-x2/72) STH A,*AR2 ;(d_temp)=x2(1-x2/72) MASR *AR2-,*AR3+,B,A ;A=1-x2/42(1-x2/72);T=x2(1-x2/72) MPYA *AR2+ ;B=x2(1-x2/42(1-x2/72) ST B,*AR2 ;(d_temp)=x2(1-x2/42(1-

19、x2/72) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/20(1-x2/42(1-x2/72) MPYA *AR2+ ;B=x2(1-x2/20(1-x2/42(1-x2/72) ST B,*AR2 ;(d_temp)=B |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/6(1-x2/20(1-x2/42(1-x2/72) MPYA d_xs ;B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72) STH B,d_sinx ;sin(theta) RETcosx: .def d_xc,d

20、_cosxd_coef_c .usect coef_c,4 .datatable_c .word 0249H ;C1=1/(7*8) .word 0444H ;C2=1/(5*6) .word 0AABH ;C3=1/(3*4) .word 4000H ;C4=1/2d_xc .usect cos_vars,1d_squr_xc .usect cos_vars,1d_temp_c .usect cos_vars,1d_cosx .usect cos_vars,1c_l_c .usect cos_vars,1 .text SSBX FRCT STM #d_coef_c,AR5 ;move coe

21、ffs table_c RPT #3 MVPD #table_c,*AR5+ STM #d_coef_c,AR3 STM #d_xc,AR2 STM #c_l_c,AR4 ST #7FFFH,c_l_c SQUR *AR2+,A ;A=x2 ST A,*AR2 ;(AR2)=x2 |LD *AR4,B ;B=1 MASR *AR2+,*AR3+,B,A ;A=1-x2/56,T=x2 MPYA A ;A=T*A=x2(1-x2/56) STH A,*AR2 ;(d_temp)=x2(1-x2/56) MASR *AR2-,*AR3+,B,A ;A=1-x2/30(1-x2/56); T=x2(1-x2/56) MPYA *AR2+ ;B=x2(1-x2/30(1-x2/56) ST B,*AR2 ;(d_temp)=x2(1-x2/30(1-x2/56) |LD *AR4,B ;B=1 MASR *AR2-,*AR3+,B,A ;A=1-x2/12(1-x2/30(1-x2/56) SFTA A,-1,A ;-1/2 NEG A MPYA *AR2+ ;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) MAR *AR2+ RETD ADD *AR4,16,B ;B=-x2/2(1-x2/12(1-x2/30(1-x2/56) STH B,*AR2 ;cos(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論