DSP課設(shè)-正弦波發(fā)生器_第1頁(yè)
DSP課設(shè)-正弦波發(fā)生器_第2頁(yè)
DSP課設(shè)-正弦波發(fā)生器_第3頁(yè)
DSP課設(shè)-正弦波發(fā)生器_第4頁(yè)
DSP課設(shè)-正弦波發(fā)生器_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

正弦波發(fā)生器摘要數(shù)字信號(hào)處理(Digital Signal Processing,簡(jiǎn)稱DSP)是一門涉及許多學(xué)科而又廣泛應(yīng)用于許多領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來(lái),隨著計(jì)算和信息技術(shù)的飛速發(fā)展,數(shù)字信號(hào)處理技術(shù)應(yīng)運(yùn)而生并得到迅速的發(fā)展。數(shù)字信號(hào)處理是一種通過(guò)使用數(shù)學(xué)技巧執(zhí)行轉(zhuǎn)換或提取信息,來(lái)處理現(xiàn)實(shí)信號(hào)的方法,這些信號(hào)由數(shù)字序列表示。數(shù)字信號(hào)處理器(DSP)是在模擬信號(hào)變成數(shù)字信號(hào)以后進(jìn)行高速實(shí)時(shí)處理的專用處理器。DSP芯片以其獨(dú)特DSP儀表和工業(yè)控制等領(lǐng)域的信號(hào)處理系統(tǒng)中。在本文中簡(jiǎn)要的概括了一種基于TMS320C5402實(shí)現(xiàn)正弦信號(hào)發(fā)生器的設(shè)計(jì)原理與方法,介紹了所設(shè)計(jì)的正弦信號(hào)發(fā)生器硬件電路結(jié)構(gòu)和軟件程序流程圖。DSP硬件特性,通過(guò)使用泰勒級(jí)數(shù)展開法得到設(shè)定參數(shù)的正弦波形輸出,關(guān)鍵字:DSP;TMS320C5402;信號(hào)發(fā)生器;正弦信號(hào);正弦波發(fā)生器目錄設(shè)計(jì)目的及要求 1設(shè)計(jì)目的 1設(shè)計(jì)內(nèi)容及要求 1設(shè)計(jì)方案及原理 2總體方案 2設(shè)計(jì)原理 2系統(tǒng)硬件設(shè)計(jì) 3系統(tǒng)硬件框圖 33.2TMS320C5402簡(jiǎn)介 43.3D/A轉(zhuǎn)換部分設(shè)計(jì) 5系統(tǒng)軟件設(shè)計(jì)及調(diào)試 6變頻調(diào)幅的方法 6程序設(shè)計(jì) 6程序編寫 8CCS簡(jiǎn)介 14運(yùn)行步驟及結(jié)果 15設(shè)計(jì)心得 19參考文獻(xiàn) 20附錄設(shè)計(jì)程序 21正弦波發(fā)生器設(shè)計(jì)目的及要求設(shè)計(jì)目的DSPDSP練習(xí)和訓(xùn)練,是實(shí)踐教學(xué)中的一個(gè)重要環(huán)節(jié)。DSP序的設(shè)計(jì)、調(diào)試等,提高學(xué)生分析問(wèn)題、解決問(wèn)題的能力。主要是:DSP程序設(shè)計(jì)的方法以及軟件的調(diào)試等;CCS軟件的使用;CCSDSPCCSC54X語(yǔ)言來(lái)實(shí)現(xiàn)正弦信號(hào)發(fā)生裝置;掌握控制TLC320AIC23并在點(diǎn)陣液晶中大致顯示出幅頻圖的基本方法和步驟。設(shè)計(jì)內(nèi)容及要求DSP遞給TLC320AIC23,控制TLC320AIC23的輸出信號(hào),該信號(hào)通過(guò)濾波放大后輸出,并在點(diǎn)陣液晶中大致顯示出幅頻圖。DSPTLC320AIC23接口電路的原理圖繪制;DSPTLC320AIC23的程序編寫與調(diào)試;TLC320AIC23D/A的轉(zhuǎn)換,實(shí)現(xiàn)信號(hào)的輸出;控制點(diǎn)陣液晶,實(shí)現(xiàn)繪圖功能,將幅頻圖顯示出來(lái);按要求編寫課程設(shè)計(jì)報(bào)告書,正確、完整的闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果。在報(bào)告中繪制程序的流程圖,并文字說(shuō)明。第1頁(yè)共26正弦波發(fā)生器設(shè)計(jì)方案及原理總體方案總體思想是:基于DSP的特點(diǎn),本設(shè)計(jì)采用TMS320C5402 這款DSP芯片作正弦信號(hào)發(fā)生器的核心控制芯片。用泰勒級(jí)數(shù)展開法實(shí)現(xiàn)正弦波信號(hào)。利用點(diǎn)陣的繪圖功能將正弦波的波形顯示出來(lái)。設(shè)計(jì)原理法需要的存儲(chǔ)單元很少,而且精度更高。我們知道一個(gè)角度為x的正弦和余弦函數(shù),都可以展開為泰勒級(jí)數(shù),且其前五項(xiàng)可以看為:x3 x5 x7

x2

x2

x2

x2 x 3!

x123145167189(1) x2 x4 x6 x8 x2 x2

x2

x2 cos(x)1 1 1 1 1 (2)2 34 56 78x軸的每一個(gè)角度值相對(duì)應(yīng),那么我們可以利用DSP處理器處理大量重復(fù)計(jì)算的x軸每一點(diǎn)對(duì)應(yīng)的y軸的值(在x軸取360個(gè)點(diǎn)來(lái)進(jìn)行逼近),由于程序的編制采用小數(shù)形式,其弧度大于1的正弦值得不到,這就對(duì)正弦波的產(chǎn)生造成了障礙??捎捎谡也ǖ奶厥獾膶?duì)稱形式給程序的編制找到了出口。sin(4)的弧度為,即0~42sincos得到0~20~2之間的正弦曲線與2~x2這條軸左右對(duì)稱,那么就可以得到2~的正弦值,而0~x這條軸與~第2頁(yè)共26正弦波發(fā)生器左右對(duì)稱。這樣~2的正弦值也得到了。一個(gè)周期內(nèi)完整的正弦波就得到了。正弦波產(chǎn)生的流程圖如下:得到正弦值 得到余弦值sin2α=2sinαcosα得到0~2的值得到2~的值得到~的值得到0~的值循環(huán)輸出數(shù)據(jù)2.1正弦波產(chǎn)生的流程圖系統(tǒng)硬件設(shè)計(jì)3.1系統(tǒng)硬件框圖3.1TMS320C5402片,D/A轉(zhuǎn)換器,獨(dú)立鍵盤等幾部分組成。第3頁(yè)共26正弦波發(fā)生器電源模塊C2時(shí)鐘 2模塊 3SMT仿真接口

D/A轉(zhuǎn)換器3.1DSP系統(tǒng)硬件框圖3.2TMS320C5402簡(jiǎn)介TITMS320C5402芯片,這款芯片8組高度并行總3440ALU17位×1740位專用加法器相連,可用于非流水線式單周期乘法/8個(gè)輔助寄存器2RARU,使得周期定點(diǎn)指令的執(zhí)行時(shí)間達(dá)到100MIPS。192K存儲(chǔ)空間:64K字程序空間、64K數(shù)據(jù)空間、64KI/O231M字的外部程序空間,因此增設(shè)XPC,以及61664K外部數(shù)據(jù)空間、64KI/O空間。RAMSARAM,二是可以兩次尋址的DARAM025個(gè)特殊功能寄存器。C語(yǔ)言和匯編語(yǔ)言混合編程,高效的流水線操作和靈活的尋址方式使其適合高速實(shí)時(shí)信號(hào)處理。第4頁(yè)共263.3D/A轉(zhuǎn)換部分設(shè)計(jì)

正弦波發(fā)生器McBSP(Multi-channelBufferedSerial)DX引腳發(fā)送數(shù)據(jù)、DR引腳接收數(shù)據(jù)。控制CPU,產(chǎn)生同步事件信號(hào)通DMA數(shù)模轉(zhuǎn)換芯片采用TLC320AD50C其是TI公司出品的一塊將A/D和D/AA/DD/A16bit同步串行轉(zhuǎn)換通道組成,在A/DD/A之前有一個(gè)插值濾波器。TLC320AD50C可以與TMS320C5402DSP的McBSP無(wú)縫串行連接進(jìn)行數(shù)SCLK主從模式選擇(H機(jī)模式幀同步信號(hào)輸出,對(duì)應(yīng)DSP的各相應(yīng)引腳。McBSPD/A3.2所示。3.2McBSP和D/A芯片的硬件連接圖第5頁(yè)共26正弦波發(fā)生器系統(tǒng)軟件設(shè)計(jì)及調(diào)試變頻調(diào)幅的方法16位定時(shí)模塊C5402DSP芯片片內(nèi)定時(shí)器是一個(gè)軟件可編程的計(jì)數(shù)器,它包括以下3個(gè)TIMPRDTCR。片內(nèi)定時(shí)器中,4PSC和16TIM組成一個(gè)20CPU時(shí)鐘周期減1,每次計(jì)數(shù)器減到0定時(shí)器中斷(TINT)PSCTIMTINT的速率可由式(3)計(jì)算。TINTrate 1 1

(3)變頻調(diào)幅實(shí)現(xiàn)方法

tuv tc c

TDDR

(PRD調(diào)幅的實(shí)現(xiàn)相對(duì)簡(jiǎn)單,只需在所有采樣值前乘以一個(gè)調(diào)幅因子A1就可得到相應(yīng)的正弦波幅值A(chǔ)。而調(diào)頻的實(shí)現(xiàn)必須依賴于C5402芯片內(nèi)的16位定時(shí)器。DSPD/AD/AD/AT1=T/N(N為采樣點(diǎn)數(shù)),D/Af1=N×fD/A送值的頻率是期待產(chǎn)生的正弦N倍。D/A芯片送值的D/A芯片送值的頻率就得用到C540216根據(jù)式(3)PRDTDDRPRDTDDR。程序設(shè)計(jì)DSPDSP系統(tǒng)的主程序流程圖如圖4.1所示。先對(duì)系統(tǒng)進(jìn)行檢測(cè)、配置D/A轉(zhuǎn)換,產(chǎn)生不同幅度、頻率的正弦波。第6頁(yè)共26正弦波發(fā)生器開始復(fù)位監(jiān)測(cè)系統(tǒng)初始化MCBSP開中斷調(diào)用鍵盤驅(qū)動(dòng)程序鍵值讀取及處理中斷處理圖4.1主程序流程圖中斷程序流程圖如圖4.2的幅度與頻率,然后按具體步驟執(zhí)行便可以得到所需正弦波。第7頁(yè)共26正弦波發(fā)生器中斷1的入口地關(guān)中斷根據(jù)不同的按鍵值設(shè)置相應(yīng)的信號(hào)參數(shù)計(jì)算0~90度

調(diào)用子程序sincos計(jì)算91~179度計(jì)算180~359度大送給DAC循環(huán)輸出返回中斷圖4.2中斷程序流程CCS開發(fā)環(huán)境下編程,通過(guò)仿真器將程序下載到DSP程序編寫1、正弦波的實(shí)現(xiàn)⑴計(jì)算一個(gè)角度的正弦值xd_xsxd_sinx單元中。實(shí)現(xiàn)計(jì)算一個(gè)角度的正弦值的程序片段如下:sinx:.def d_xs,d_sinx第8頁(yè)共26.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",4

正弦波發(fā)生器d_xsd_squr_xsd_temp_sd_sinxd_l_s

.usect "sin_vars",1.usect "sin_vars",1.usect "sin_vars",1.usect "sin_vars",1.usect "sin_vars",1.textSSBX FRCTSTM#d_coef_s,AR5 ;movecoeffsRPT#3MVPD#table_s,*AR5+STM#d_coef_s,AR3STM#d_xs,AR2STM#d_l_s,AR4ST #7FFFH,d_l_sSQUR *AR2+,A ;A=x^2ST A,*AR2 ;(AR2)=x^2||LD *AR4,B ;B=1MASR *AR2+,*AR3+,B,A ;A=1-x^2/72,T=x^2MPYA A STH A,*AR2 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第9頁(yè)共26正弦波發(fā)生器;(d_temp)=x^2(1-x^2/42(1-x^2/72))||LD *AR4,B MASR *AR2-,*AR3+,B,AMPYA

;A=1-x^2/20(1-x^2/42(1-x^2/72));B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))ST B,*AR2 ;(d_temp)=B||LD *AR4,B 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 STH B,d_sinx ;sin(theta)RET⑵計(jì)算一個(gè)角度的余弦值xd_xcd_cosx單元中。實(shí)現(xiàn)計(jì)算一個(gè)角度的余弦值的程序片段如下:cosx:d_coef_c.def.usect.datad_xc,d_cosx"coef_c",4table_c.word.word0249H0444H;C1=1/(7*8);C2=1/(5*6)d_xc.word.word.usect0AABH4000H"cos_vars",1;C3=1/(3*4);C4=1/2d_squr_xcd_temp_cd_cosx.usect.usect.usect"cos_vars",1"cos_vars",1"cos_vars",1第10頁(yè)共26c_l_c .usect.text"cos_vars",1正弦波發(fā)生器SSBXFRCTSTM#d_coef_c,AR5;movecoeffstable_cRPT#3MVPD#table_c,*AR5+STM#d_coef_c,AR3STM#d_xc,AR2STM#c_l_c,AR4ST#7FFFH,c_l_cSQUR*AR2+,A;A=x^2STA,*AR2;(AR2)=x^2||LD*AR4,B;B=1MASR*AR2+,*AR3+,B,A;A=1-x^2/56,T=x^2MPYAA;A=T*A=x^2(1-x^2/56)STHA,*AR2;(d_temp)=x^2(1-x^2/56)MASR*AR2-,*AR3+,B,A;A=1-x^2/30(1-x^2/56)MPYA*AR2+;T=x^2(1-x^2/56);B=x^2(1-x^2/30(1-x^2/56))STB,*AR2;(d_temp)=x^2(1-x^2/30(1-x^2/56))||LD *AR4,B MASR *AR2-,*AR3+,B,A;A=1-x^2/12(1-x^2/30(1-x^2/56))SFTA A,-1,A NEG AMPYA*AR2+;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))MARRETDADD*AR2+*AR4,16,B;B=-x^2/2(1-x^2/12(1-x^2/30(1-x^2/56)))第11頁(yè)共26正弦波發(fā)生器STH B,*AR2 RET⑶正弦波的實(shí)現(xiàn)利用計(jì)算一個(gè)角度的正弦值和余弦值程序可實(shí)現(xiàn)正弦波。其實(shí)現(xiàn)步驟如下:sin_startcos_start子程序,計(jì)算正弦和余弦值;

~45(間隔為0.5)的sin(2x)=2sin(x)cos(x)0~90(間隔為1;第三步:通過(guò)復(fù)制,獲得0~359的正弦值;第四步:將0~359的正弦值重復(fù)從PA口輸出,便可得到正弦波。產(chǎn)生正弦波的程序片段如下:.mmregs.def start.def d_xs,d_sinx,d_xc,d_cosx,sinx,cosxsin_x: .usect "sin_x",360STACK: .usect k_theta .set 286 start:.textSTM #STACK+10H,SPSTM STM 0,AR1STM STM #90,BRCRPTB LDM AR1,ALD #d_xs,DPSTL A,@d_xsSTL A,@d_xcCALL sinx ;d_sinx=sin(x)CALL cosx ;d_cosx=cos(x)第12頁(yè)共26正弦波發(fā)生器LD#d_sinx,DPLD@d_sinx,16,A;A=sin(x)MPYA@d_cosx;B=sin(x)*cos(x)STHB,1,*AR6+;AR6 2*sin(x)MAR*AR1+0loop1:STM#sin_x+89,AR7;sin91(deg.)-sin179(deg.)STM#88,BRCRPTBloop2-1LD*AR7-,ASTLA,*AR6+loop2:STM#179,BRC;sin180(deg.)-sin359(deg.)STM#sin_x,AR7RPTBloop3-1LD*AR7+,ANEGASTLA,*AR6+loop3:STM#sin_x,AR6;generatesinwaveSTM#1,AR0STM#360,BKBloop3*.cmd文件描述輸入文件和輸出文件,說(shuō)明系統(tǒng)中有哪些可用存儲(chǔ)器、程序MEMORY段就是用來(lái)規(guī)定段說(shuō)明如何將輸入段組合成輸出段以及在可MEMORY{PAGE0:EPROM: org=0E000H,len=1000H第1326正弦波發(fā)生器VECS: org=0FF80H,len=0080HPAGE1:}SPRAM:DARAM1:DARAM2:DARAM3:SECTIONSorg=0060H,org=0080H,org=0090H,org=0200H,len=0020Hlen=0010Hlen=0010Hlen=0200H{.text :>EPROMPAGE0.data :>EPROMPAGE0STACK:>sin_vars:>coef_s:>cos_varscoef_c:>SPRAMDARAM1DARAM1DARAM2DARAM2PAGE1PAGE1PAGE1PAGE1PAGE1}sin_x :.vectors :>align(512)VECS{}>DARAM3 PAGEPAGE0D/A變波形的幅度以及起始相位。CCS簡(jiǎn)介CCSCCSTITMS320系列DSPDSP開發(fā)軟件之一。它提供了環(huán)境配置、源文件編譯、編譯連接、程序調(diào)試、跟蹤分析等環(huán)節(jié),并把軟、硬CCSDSP芯片上,與硬件開發(fā)板相結(jié)合在線編第14頁(yè)共26正弦波發(fā)生器程和調(diào)試應(yīng)用程序;(2)DSPPCDSP4.3所示運(yùn)行步驟及結(jié)果

圖4.3DSP試驗(yàn)箱運(yùn)行步驟本次課程設(shè)計(jì)采用CCS中的C5000。C5416XDS510Emulator。圖4.4setupCCS界面第15頁(yè)共26C5416XDS510Emulator的設(shè)置

正弦波發(fā)生器圖4.5仿真器XDS510的設(shè)置setupC5000CCS5000Project4.5DspregDefine.hsinlcd_54Include文件添加到Libraries.CMD(VECTORS.ASSource4.6所示。圖4.6新建工程第16頁(yè)共26正弦波發(fā)生器4.7添加文件到工程第四步對(duì)編寫完成的程序進(jìn)行編譯,結(jié)果如圖4.8所示4.8編譯成功第五步匯編無(wú)誤后就可將程序下載到實(shí)驗(yàn)箱中,點(diǎn)擊如圖所示命令運(yùn).outrun即可在實(shí)驗(yàn)箱中得到結(jié)果。圖4.9下載程序到實(shí)驗(yàn)箱第17頁(yè)共26仿真結(jié)果及分析

正弦波發(fā)生器圖4.10仿真結(jié)果CCS集成環(huán)境中實(shí)現(xiàn)正弦波能夠起到防止干擾的作用,同時(shí)也大大地減CCS能夠精確地對(duì)各個(gè)角度進(jìn)行分析:波信號(hào)。第18頁(yè)共26正弦波發(fā)生器5設(shè)計(jì)心得DSPDSP設(shè)計(jì)這個(gè)機(jī)會(huì),對(duì)沒有掌握好的知識(shí)進(jìn)行一個(gè)補(bǔ)習(xí)。思,在嘗試在這個(gè)基礎(chǔ)上對(duì)程序進(jìn)行修改,看程序是否出錯(cuò),或者說(shuō)實(shí)驗(yàn)的結(jié)果會(huì)有什么樣的改變。用這種方法是自己盡快的熟悉這個(gè)系統(tǒng)的編程的方式。本次課程設(shè)計(jì)中遇到一些課堂中從未有過(guò)的問(wèn)題,通過(guò)網(wǎng)絡(luò)查找和同學(xué)交CCS軟件編程的數(shù)字信號(hào)有很大的幫助。這樣一個(gè)課程設(shè)計(jì)對(duì)我們的發(fā)展有著極大的幫助!由于基礎(chǔ)知識(shí)不夠扎實(shí),在本次課程設(shè)計(jì)的過(guò)程中,我經(jīng)常遇到各種難題,通過(guò)實(shí)驗(yàn)我基本了解了DSP應(yīng)用系統(tǒng)開發(fā)方法和設(shè)計(jì)過(guò)程,掌握了匯編源程序CCSCCSCCS軟件應(yīng)用C54XDSP的功能和用途。特在此對(duì)給予我?guī)椭睦蠋熀屯瑢W(xué)們表示衷心的感謝!第19頁(yè)共26正弦波發(fā)生器參考文獻(xiàn)鄒彥DSP[M].:,2005,1.戴明楨.TMS320C54xDSP結(jié)構(gòu).原理及應(yīng)用[M].北京航空航天大學(xué)出版胡圣堯DSP[M].,2008.7.清源科技.TMS320C54xDSP[M].,2004,1清源科技.TMS320C54x[M].機(jī)械工業(yè)出版社,2003,1.第20頁(yè)共26正弦波發(fā)生器附錄設(shè)計(jì)程序主程序清單:.title "sin.asm" “sin.asm”.mmregs ;定義存儲(chǔ)器映像寄存器.def _c_int00.ref sinx,d_xs,d_sinx,cosx,d_xc,d_cosx;定義標(biāo)號(hào)sin_x:STACK:

.usect "sin_x",360 ;為"sin_x"360個(gè)存儲(chǔ)空間.usect "STACK",10 10個(gè)存儲(chǔ)空間k_theta

.set

286 ;theta=pi/360(0.5deg)PA0_c_int00

.set 0.text ;定義文本程序代碼段STM #STACK+10,SP ;設(shè)置堆棧指針STM k_theta,AR0 STM 0,AR1 ;(AR1)=X(rad)STM #sin_x,AR6 ;AR6-->sin(x)STM #90,BRC ;formsin0(deg.)—sin90(deg);重復(fù)執(zhí)行塊語(yǔ)句(下條語(yǔ)句開始至loop1-1 )91次RPTBLDMloop1-1AR1,ALD#d_xs,DP;DPd_xsSTLA,@d_xs;(A)低16位→d_xsSTLA,@d_xc;(A)低16位→d_xcCALLsinx;調(diào)用sinx程序CALLcosx;調(diào)用conx程序LD#d_sinx,DP;DP d_sinxLD@d_sinx,16,A;A=sin(x)第21頁(yè)共26MPYA @d_cosx ;B=sin(x)*cos(x)STH B,1,*AR6+ ;AR6-->2*sin(x)*cos(x)MAR *AR1+0 ;修改輔助寄存器AR1loop1: STM #sin_x+89,AR7 ;sin91(deg.)-

正弦波發(fā)生器loop2:loop3:loop4:sinx:table_sd_coef_sd_xs

STM #88,BRC ;重復(fù)執(zhí)行下條指令至RPTB loop2-1 ;處90次LD *AR7-,A ;((AR7))→A,然后AR7減去STL A,*AR6+ ;(A)低16位→AR6STM #179,BRC ;sin180(deg.)--sin359(deg.);(BRC)=179,重復(fù)執(zhí)行180STM #sin_x,AR7 ;AR7指向sin_x首地址RPTB loop3-1 ;LD *AR7+,A ;((AR7))→AAR71NEG A ;累加器變負(fù)STL A,*AR6+ ;A16位→AR6STM #sin_x,AR6 ;generatesinwaveAR6指向STM #1,AR0 ;AR01STM #360,BK ;BK360PORTW *AR6+0%,PA0 PA0輸出數(shù)據(jù)B loop4 ;.def d_xs,d_sinx ;定義標(biāo)號(hào)d_xs,d_sinx.data ;定義數(shù)據(jù)代碼段.word 01c7h ;c1=1/(8*9).word 030bh ;c1=1/(6*7).word 0666h ;c1=1/(4*5).word 1556h ;c1=1/(2*3).usect "coef_s",4 ;為"coef_s"4個(gè)存儲(chǔ)空間.usect "sin_vars",1 d_xssin_vars1個(gè)存儲(chǔ)空間第22頁(yè)共26正弦波發(fā)生器d_squr_xs .usect "sin_vars",1 為d_squr_xs中sin_vars保留1個(gè)存儲(chǔ)空d_temp_s .usect "sin_vars",1 為d_temp_s中sin_vars保留1個(gè)存儲(chǔ)空d_sinx .usect "sin_vars",1 ;為d_sinx中sin_vars保留1個(gè)存儲(chǔ)空間c_l_s .usect "sin_vars",1 ;為d_xs中sin_vars保留1個(gè)存儲(chǔ)空間.text ;定義代碼開始段SSBX FRCT ;設(shè)置FRCT=1以解決冗余符號(hào)STM #d_coef_s,AR5 ;AR5指向d_coef_s首地址RPT #3 4次MVPD #table_s,*AR5+ ;table_sAR5指向的單元STM #d_coef_s,AR3 ;AR3指向d_coef_s首地STM #d_xs,AR2 ;AR2指向d_xs首地址STM #c_l_s,AR4 ;AR4指向c_l_s首地址ST #7FFFh,c_l_s ;7FFFh→c_l_sSQUR *AR2+,A 指向累加器A中的數(shù)值求其平ST A,*AR2 ()左移16位→AR2||LD *AR4,B (AR4)16位→BMASR *AR2+,*AR3+,B,A A(AR2*AR3)MPYA A A中高位相乘STH A,*AR2 ()16位→AR2MASR *AR2-,*AR3+,B,A A(AR2*AR3)MPYA *AR2+ AR2指向的數(shù)與累加器A的高16位相ST B,*AR2 ()左移16位→AR2||LD *AR4,B (AR4)16位→BMASR *AR2-,*AR3+,B,A A(AR2*AR3)MPYA *AR2+ A16位相乘ST B,*AR2 ()16位→AR2||LD *AR4,B AR4)左移16 位→BMASR *AR2-,*AR3+,B,A ;從累加器A中減去(AR2)*(AR3)MPYA d_xs 指向的操作數(shù)與累加器A16位相乘第23頁(yè)共26cosx:

STH B,d_sinx )高16位RET ;返回.def d_xc,d_cosx ;定義標(biāo)號(hào)d_xc,d_cosx

正弦波發(fā)生器d_coef_c .usect "coef_c",4 coef_c4個(gè)存儲(chǔ)空間.data ;定義數(shù)據(jù)代碼段table_c .word 0249h ;c1=1/(7*8).word 0444h ;c2=1/(6*5).word 0aabh ;c3=1/(3*4).word 4000h ;c4=1/2d_xc .usect "cos_vars",1 ;為d_xc中cos_vars保存1個(gè)存儲(chǔ)單元d_squr_xc.usect "cos_vars",1 為d_squr_xc中cos_vars保存1個(gè)存儲(chǔ)單d_temp_c .usect "cos_vars",1 為d_temp_c中cos_vars保存1個(gè)存儲(chǔ)單d_cosx .usect "cos_vars",1 為d_cosx中cos_vars保存1個(gè)存儲(chǔ)單c_l_c .usect "cos_vars",1 ;為c_l_c中cos_vars保存1個(gè)存儲(chǔ)單元.text ;定義文本代碼段SSBX FRCT ;FRCT=1以清除冗余符號(hào)STM #d_coef_c,AR5 ;AR5指向d_coef_c首地址RPT #3 ;重復(fù)下條指令4次MVPD #table_c,*AR5+ ;把table_c中的數(shù)復(fù)制到中STM #d_coef_c,AR3 ;AR3指向d_coef_c首地址STM #d_xc,AR2 ;AR2指向d_xc首地址STM #c_l_c,AR4 ;AR4指向c_l_c首地ST #7FFFh,c_l_c ;7FFFh→c_l_cSQUR *AR2+,A ;求X的平方存放在累加器AST A,*AR2 ()左移16位→AR2||LD *AR4,B (AR4)左移16位

溫馨提示

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

評(píng)論

0/150

提交評(píng)論