《DSP課程設(shè)計(jì)正弦信號(hào)發(fā)生器的設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《DSP課程設(shè)計(jì)正弦信號(hào)發(fā)生器的設(shè)計(jì)(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、太原理工大學(xué)DSP課程設(shè)計(jì)設(shè)計(jì)題目:正弦信號(hào)發(fā)生器的設(shè)計(jì) 班級(jí):電信0801班 姓名:凌天 一、 設(shè)計(jì)目的1、 通過(guò)實(shí)驗(yàn)掌握DSP的軟件開(kāi)發(fā)過(guò)程2、 學(xué)會(huì)運(yùn)用匯編語(yǔ)言進(jìn)行程序設(shè)計(jì)3、 學(xué)會(huì)用CCS仿真模擬DSP芯片,通過(guò)CCS軟件平臺(tái)上應(yīng)用C54X匯編語(yǔ)言來(lái)實(shí)現(xiàn)正弦信號(hào)發(fā)生裝置。 二、 設(shè)計(jì)原理 本實(shí)驗(yàn)產(chǎn)生正弦波的方法是泰勒級(jí)數(shù)展開(kāi)法。泰勒級(jí)數(shù)展開(kāi)法需要的存儲(chǔ)單元少,具有穩(wěn)定性好,算法簡(jiǎn)單,易于編程等優(yōu)點(diǎn),而且展開(kāi)的級(jí)數(shù)越多,失真度就越小。求一個(gè)角度的正弦值取泰勒級(jí)數(shù)的前5項(xiàng),得近似計(jì)算式: 三、 總體方案設(shè)計(jì) 本實(shí)驗(yàn)是基于CCS開(kāi)發(fā)環(huán)境的。CCS是TI公司推出的為開(kāi)發(fā)TMS320系列DSP軟
2、件的集成開(kāi)發(fā)環(huán)境,是目前使用最為廣泛的DSP開(kāi)發(fā)軟件之一。它提供了環(huán)境配置、源文件編譯、編譯連接、程序調(diào)試、跟蹤分析等環(huán)節(jié),并把軟、硬件開(kāi)發(fā)工具集成在一起,使程序的編寫(xiě)、匯編、程序的軟硬件仿真和調(diào)試等開(kāi)發(fā)工作在統(tǒng)一的環(huán)境中進(jìn)行,從而加速軟件開(kāi)發(fā)進(jìn)程。通過(guò)CCS軟件平臺(tái)上應(yīng)用C54X匯編語(yǔ)言來(lái)實(shí)現(xiàn)正弦信號(hào)發(fā)生裝置。 總體思想是:正弦波的波形可以看作由無(wú)數(shù)點(diǎn)組成,這些點(diǎn)與x軸的每一個(gè)角度值相對(duì)應(yīng),可以利用DSP處理器處理大量重復(fù)計(jì)算的優(yōu)勢(shì)來(lái)計(jì)算x軸每一點(diǎn)對(duì)應(yīng)的y的值(在x軸取N個(gè)點(diǎn)進(jìn)行逼近)。整個(gè)系統(tǒng)軟件由主程序和基于泰勒展開(kāi)法的SIN子程序組成,相應(yīng)的軟件流程圖如圖。 四、 設(shè)計(jì)內(nèi)容1、設(shè)置在F
3、amily下選擇C55xx,將看到所有C55xx的仿真驅(qū)動(dòng),包括軟件仿真和硬件仿真;在Platform下選擇Simulator,在Available Factory Boards中只顯示軟件仿真驅(qū)動(dòng),選中相應(yīng)的驅(qū)動(dòng);雙擊C55xx Rev4.0 CPU Functional Simulator,可以在My System下看到所加入的驅(qū)動(dòng);點(diǎn)擊Save & Quit,將保存設(shè)置退出Setup CCStudio v3.1并啟動(dòng)運(yùn)行CCStudio。2、編寫(xiě)匯編源程序sin。3.、建立匯編源程序在CCS環(huán)境下,點(diǎn)擊file/new/source file菜單命令,打開(kāi)一個(gè)空白文檔,將匯編程序輸入。單
4、擊file/save菜單命令,在D:program filestimyprojects下保存文件名為sin,并選擇保存類型為*.asm。4、建立鏈接命令文件。5、創(chuàng)建新的工程文件啟動(dòng)CCS,在Project菜單中選擇New項(xiàng),在Project中輸入denglin,CCS將創(chuàng)建一個(gè)名為denglin.pjt的工程。 6、將文件添加到工程中在工程中添加源文件,執(zhí)行菜單project/add files to project,把sin文件添加到工程中。7、生成和運(yùn)行程序(1)選擇菜單命令ProjectRebuild All,對(duì)工程重新編譯、匯編和鏈接,主窗口下方的信息窗口將顯示build進(jìn)行匯編、編
5、譯和鏈接的相關(guān)信息。(2) 選擇菜單命令FileLoad Program,在當(dāng)前目錄的Debug目錄下選擇sin并打開(kāi),將Build生成的程序加載到DSP中。 (3)選擇菜單命令DebugRun或在Debug工具欄上單擊Run按鈕,運(yùn)行該程序。 8、觀察運(yùn)行結(jié)果點(diǎn)擊view/gragh菜單命令觀看圖像五、 主要參數(shù)六、 源程序匯編源程序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 ;mov
9、e 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);T
10、=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 ;B
11、=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 .use
12、ct 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) MAR
14、 *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鏈接命令文件 MEMORY PAGE 0: EPROM: org=0E000H, len=1000H VECS: org=0FF80H, len=0080H PAGE 1: SPRAM: org=0060H, len=0020H DARAM1: org=0080H, len=0010H DARAM2: org=0090H, len=0010H DARAM3: org=0200H, len=0200H SECTION
15、S .text : EPROM PAGE 0 .data : EPROM PAGE 0 STACK : 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 七、 實(shí)驗(yàn)結(jié)果及分析結(jié)果成功生成了正弦波圖像,表明改程序能通過(guò)TMS320C54x產(chǎn)生正弦信號(hào)八、 設(shè)計(jì)總結(jié)這次實(shí)驗(yàn)把平時(shí)書(shū)本上生硬的文字變成了活生生的圖像,使我對(duì)這門(mén)學(xué)科的基本知識(shí)、理論解起來(lái)更加方便直觀和深刻。通過(guò)實(shí)驗(yàn)我基本了解了DSP應(yīng)用系統(tǒng)開(kāi)發(fā)方法和設(shè)計(jì)過(guò)程,掌握了匯編源程序的編輯、匯編和鏈接過(guò)程,熟悉了CCS集成開(kāi)發(fā)環(huán)境,CCS的安裝及設(shè)置,CCS集成開(kāi)發(fā)環(huán)境,CCS的基本使用,調(diào)試應(yīng)用程序。我成功通過(guò)CCS軟件應(yīng)用C54X匯編語(yǔ)言實(shí)現(xiàn)了正弦信號(hào)發(fā)生裝置,這次實(shí)驗(yàn)使我能夠更真實(shí)地體會(huì)到DSP的功能和用途。