DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章課件_第1頁(yè)
DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章課件_第2頁(yè)
DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章課件_第3頁(yè)
DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章課件_第4頁(yè)
DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章課件_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章匯編語(yǔ)言程序設(shè)計(jì)6.1程序的控制與轉(zhuǎn)移TMS320C54x具有豐富的程序控制與轉(zhuǎn)移指令,利用這些指令可以執(zhí)行分支轉(zhuǎn)移、循環(huán)控制及子程序操作。基本的程序控制指令如表6-1所示。表6-1基本的程序控制指令

分支轉(zhuǎn)移指令執(zhí)行周期子程序調(diào)用指令執(zhí)行周期子程序返回指令執(zhí)行周期Bnext4BACCsrc6BCnext,cond5/3CALLsub4CALAsrc6CCsub,cond5/3RET5RCcond5/3DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章1.條件算符

條件分支轉(zhuǎn)移指令或條件調(diào)用、條件返回指令都用條件來(lái)限制分支的轉(zhuǎn)移、調(diào)用和返回操作。條件算符分成兩組,每組組內(nèi)還有分類(lèi)。第1組:EQNEQLEQGEQLTGTOVNOV第2組:TCNTCCNCBIONBIO選用條件算符時(shí)應(yīng)當(dāng)注意以下3點(diǎn):?第1組:組內(nèi)兩類(lèi)條件可以進(jìn)行與/或運(yùn)算,但不能在組內(nèi)同一類(lèi)中選擇兩個(gè)條件算符與/或。當(dāng)選擇兩個(gè)條件時(shí),累加器必須是同一個(gè)。例如,可以同時(shí)選擇AGT和AOV,但不能同時(shí)選擇AGT和BOV。?第2組:可從組內(nèi)3類(lèi)算符中各選一個(gè)條件算符與/或,但不能在組內(nèi)同一類(lèi)中選兩個(gè)條件算符與/或。例如,可以同時(shí)測(cè)試TC、C和BIO,但不能同時(shí)測(cè)試NTC和TC。?組與組之間的條件只能進(jìn)行或運(yùn)算。DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章2.循環(huán)操作BANZ

在程序設(shè)計(jì)時(shí),經(jīng)常需要重復(fù)執(zhí)行某段程序,利用BANZ(當(dāng)輔助寄存器不為0時(shí)轉(zhuǎn)移)指令執(zhí)行循環(huán)計(jì)數(shù)和操作是十分方便的。SUM:STM #x,AR3 STM #4,AR2loop: ADD *AR3+,A ;程序存儲(chǔ)器

BANZ loop,*AR2- STL A,@yDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章3.比較操作CMPR

編程時(shí),經(jīng)常需要數(shù)據(jù)與數(shù)據(jù)進(jìn)行比較,這時(shí)利用比較指令CMPR是很合適的。CMPR指令測(cè)試所規(guī)定的AR寄存器(AR1~AR7)與AR0的比較結(jié)果。如果所給定的測(cè)試條件成立,則TC位置1,然后,條件分支轉(zhuǎn)移指令就可根據(jù)TC位的狀態(tài)進(jìn)行分支轉(zhuǎn)移了。注意,所有比較的數(shù)據(jù)都是無(wú)符號(hào)操作數(shù)。STM#5,AR1 STM#10,AR0loop: ... ... *AR1+ ... ... CMPRLT,AR1 BC loop,TCDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.2堆棧的使用方法TMS320C54x提供一個(gè)用16位堆棧指針(SP)尋址的軟件堆棧。當(dāng)向堆棧中壓入數(shù)據(jù)時(shí),堆棧從高地址向低地址增長(zhǎng)。堆棧指針是減在前、加在后,即先SP

1再壓入數(shù)據(jù),先彈出數(shù)據(jù)后SP+1。如果程序中要用到堆棧,則必須先進(jìn)行設(shè)置,方法如下:size .set 100stack .usect "STK",size STM #stack+size,SP

上述語(yǔ)句在數(shù)據(jù)RAM空間開(kāi)辟一個(gè)堆棧區(qū)。前兩句在數(shù)據(jù)RAM中自定義一個(gè)名為STK的保留空間,共100個(gè)單元。第3句將這個(gè)保留空間的高地址(#stack+size)賦給SP,作為棧底,參見(jiàn)圖6-1。至于自定義未初始化段STK究竟定位在數(shù)據(jù)RAM中的什么位置,應(yīng)當(dāng)在鏈接器命令文件中規(guī)定。DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章數(shù)據(jù)存儲(chǔ)器0

STK堆棧的設(shè)置size.set100stack.usect"STK",sizeSTM#stack+size,SP堆棧的用法壓入操作:SP先減1后,再將數(shù)據(jù)壓入堆棧中彈出操作:數(shù)據(jù)彈出后,再將SP加1…stack可用棧區(qū)SP→最后用的單元已用棧區(qū)65535…圖6-1堆棧DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章設(shè)置堆棧之后,就可以使用堆棧了,例如:CALLpmad ;(SP)-1→SP,(PC)+2→TOS

;pmad→PCRET ;(TOS)→PC,(SP)+l→SP堆棧區(qū)應(yīng)開(kāi)辟多大?這需要按照以下步驟來(lái)確定:①先開(kāi)辟一個(gè)大堆棧區(qū),且用已知數(shù)填充。②運(yùn)行程序,執(zhí)行所有的操作。③暫停,檢查堆棧中的數(shù)值如下圖。④用過(guò)的堆棧區(qū)才是實(shí)際需要的堆??臻g。DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章1.加減法【例6-4】計(jì)算z=x+y

w。

SUMB: LD @x,A ADD @y,A SUB @w,A STL A,@z RET .end計(jì)算結(jié)果:數(shù)據(jù)寄存器地址存儲(chǔ)內(nèi)容十進(jìn)制數(shù)

x 0060H000AH 10y 0061H001AH 26w 0062H0017H 23z 0063H000DH 136.3加減法運(yùn)算和乘法運(yùn)算DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章2.乘法【例6-5】計(jì)算y=mx+b。

SU: LD @m,T MPY @x,A ADD @b,A STL A,@y RET .end計(jì)算結(jié)果:數(shù)據(jù)寄存器地址存儲(chǔ)內(nèi)容十進(jìn)制數(shù)

m 0060H 0003H3x 0061H 000FH15b 0062H 0014H20y 0063H 0041H65DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.4重復(fù)操作1.重復(fù)執(zhí)行單條指令

重復(fù)指令RPT或RPTZ允許重復(fù)執(zhí)行緊隨其后的那一條指令。如果要重復(fù)執(zhí)行n次,則重復(fù)指令中應(yīng)規(guī)定計(jì)數(shù)值為n

1。由于重復(fù)的指令只需要取指一次,與利用BANZ指令進(jìn)行循環(huán)相比,效率要高得多。

【例6-9】對(duì)數(shù)組x[5]={0,0,0,0,0}進(jìn)行初始化。.bss x,5或者STM #x,AR1LD #0H,ARPT #4STL A,*AR1+或者.bss x,5STM #x,AR1RPTZ #4STL A,*AR1+DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章2.塊程序重復(fù)操作

塊程序重復(fù)操作RPTB將重復(fù)操作的范圍擴(kuò)大到任意長(zhǎng)度的循環(huán)回路。由于塊程序重復(fù)指令RPTB的操作數(shù)是循環(huán)回路的結(jié)束地址,而且,其下條指令就是重復(fù)操作的內(nèi)容,因此必須先用STM指令將所規(guī)定的迭代次數(shù)加載到塊重復(fù)計(jì)數(shù)器(BRC)中。

RPTB指令的特點(diǎn)是:對(duì)任意長(zhǎng)度的程序段的循環(huán)開(kāi)銷(xiāo)為0,其本身是一條2字4周期指令;循環(huán)開(kāi)始地址(RSA)是RPTB指令的下一行,結(jié)束地址(REA)由RPTB指令的操作數(shù)規(guī)定?!纠?-10】對(duì)數(shù)組x[5]中的每個(gè)元素加1。

.bss x,5start: LD #1,16,B STM #4,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+next: LD #0,BDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章3.循環(huán)的嵌套

2nd:1st:STM#L

1,AR7;2T外部STM#M

1,BRC;2TRPTB2nd

1;4T中間中間RPT#N

1;1T內(nèi)部中間中間外部外部BANZ1st,*AR7

;4T312

執(zhí)行RPT指令時(shí)要用到RPTC寄存器(重復(fù)計(jì)數(shù)器),執(zhí)行RPTB指令時(shí)要用到BRC、RSA和RSE寄存器。由于兩者用了不同的寄存器,因此RPT指令可以嵌套在RPTB指令中,實(shí)現(xiàn)循環(huán)的嵌套。當(dāng)然,只要保存好有關(guān)的寄存器,RPTB指令也可以嵌套在另一條RPTB指令中,但效率并不高。

下圖是一個(gè)三重循環(huán)嵌套結(jié)構(gòu),內(nèi)層、中層和外層三重循環(huán)分別采用RPT、RPTB和BANZ指令,重復(fù)執(zhí)行N、M和L次。

DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.5數(shù)據(jù)塊傳送

這些指令的特點(diǎn)如下:(1)傳送速度比加載和存儲(chǔ)指令的速度要快;(2)傳送數(shù)據(jù)不需要通過(guò)累加;(3)可以尋址程序存儲(chǔ)器;(4)與RPT指令相結(jié)合,可以實(shí)現(xiàn)數(shù)據(jù)塊傳送。數(shù)據(jù)存儲(chǔ)器←→數(shù)據(jù)存儲(chǔ)器#W/C數(shù)據(jù)存儲(chǔ)器←→MMR#W/CMVDKSmem,dmadMVKDdmad,SmemMVDDXmem,Ymem2/22/21/1MVDMdmad,MMRMVMDMMR,dmadMVMMmmr,mmr2/22/21/1程序存儲(chǔ)器←→數(shù)據(jù)存儲(chǔ)器#W/C程序存儲(chǔ)器(Acc)←→數(shù)據(jù)存儲(chǔ)器#W/CMVPDPmad,SmemMVDPSmem,Pmad2/32/4READASmemWRITASmem1/51/5DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章1.程序存儲(chǔ)器→數(shù)據(jù)存儲(chǔ)器

【例6-11】初始化數(shù)組x[5]={1,2,3,4,5}。

.title "zh9.asm" .mmregsSTACK .usect "STACK",10H .bss x,5 .datatable: .word 1,2,3,4,5 .def start .textstart: STM #x,AR1 RPT #4 MVPD table,*AR1+

end: B end .endDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章2.?dāng)?shù)據(jù)存儲(chǔ)器→數(shù)據(jù)存儲(chǔ)器

【例6-12】編寫(xiě)一段程序,將數(shù)據(jù)存儲(chǔ)器中數(shù)組x[20]中的數(shù)據(jù)復(fù)制到數(shù)組y[20]中。

.title "zh10.asm" .mmregsSTACK .usect "STACK",30H

.bss x,20 .bss y,20 .datatable: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 .def start .textstart: STM #x,AR1 RPT #19 MVPD table,*AR1+ ;從程序存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器中

STM #x,AR2 STM #y,AR3 RPT #19 MVDD *AR2+,*AR3+

;從數(shù)據(jù)存儲(chǔ)器傳送到數(shù)據(jù)存儲(chǔ)器中end: B end .end20個(gè)數(shù)據(jù)從0060H~0073H傳送到0074H~0087H,結(jié)果如圖所示:

DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.6雙操作數(shù)乘法

TMS320C54x片內(nèi)的多總線結(jié)構(gòu),允許在一個(gè)機(jī)器周期內(nèi)通過(guò)兩條16位數(shù)據(jù)總線(C總線和D總線)尋址兩個(gè)數(shù)據(jù)和系數(shù),如圖6-6所示。

數(shù)據(jù)存儲(chǔ)器乘法器/加法器累加器A累加器BC總線D總線圖6-6雙操作數(shù)乘法DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章如果求y=mx+b,則單操作數(shù)和雙操作數(shù)實(shí)現(xiàn)方法比較如表6-4所示:表6-4單/雙操作數(shù)編程比較

用雙操作數(shù)指令編程的特點(diǎn)為:(1)用間接尋址方式獲得操作數(shù),且輔助寄存器只能用AR2~AR5;(2)占用的程序空間??;(3)運(yùn)行的速度快。

單操作數(shù)方法雙操作數(shù)方法LD@m,TMPY@x,AADD@b,ASTLA,@yMPY*AR2,*AR3,AADD@b,ASTLA,@yDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章雙操作數(shù)MAC型的指令有4種,如表6-5所示:表6-5MAC型雙操作數(shù)指令

對(duì)于Xmem和Ymem,只能用以下輔助寄存器及尋址方式:輔助寄存器 AR2尋址方式 *ARn AR3 *ARn+ AR4 *ARn

AR5 *ARn+0%指令功能MPYXmem,Ymem,dstMACXmem,Ymem,src[,dst]MASXmem,Ymem,src[,dst]MACPSmem,Pmad,src[,dst]dst=Xmem*Ymemdst=src+Xmem*Ymemdst=src-Xmem*Ymemdst=src+Smem*PmadDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.7長(zhǎng)字運(yùn)算和并行運(yùn)算

1.長(zhǎng)字指令

DLD Lmem,dst ;dst=LmemDST src,Lmem ;Lmem=srcDADD Lmem,src[,dst] ;dst=src+LmemDSUB Lmem,src[,dst] ;dst=src-LmemDRSUB Lmem,src[,dst] ;dst=Lmem-src(1)偶地址排列法

(2)奇地址排列法

數(shù)據(jù)存儲(chǔ)器偶地址:xhi奇地址:xlo程序存儲(chǔ)器偶地址:1234奇地址:5678

.long12345678h變量名稱(chēng)字長(zhǎng)頁(yè)鄰接偶地址排列法

.bssxhi,2,1,1圖6-8奇偶地址排列規(guī)定DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章【例6-15】計(jì)算Z32=X32+Y32。

標(biāo)準(zhǔn)運(yùn)算

.title "zh16.asm" .mmregsSTACK .usect "STACK",10H .bss xhi,1 .bss xlo,1 .bss yhi,1 .bss ylo,1 .bss zhi,1 .bss zlo,1 .def start .datatable: .word 1678H,2345H .word 1020H,0D34AH .textstart: STM #0,SWWSR STM #STACK+10H,SP STM #xhi,AR1 RPT #3 MVPD table,*AR1+ LD @xhi,16,A ADDS @xlo,A ADD @yhi,16,A ADDS @ylo,A STH A,@zhi STL A,@zloend: B end .end (6個(gè)字,6個(gè)T)

長(zhǎng)字運(yùn)算

.title "zh17.asm" .mmregsSTACK .usect "STACK",10H .bss xhi,2,1,1 .bss yhi,2,1,1 .bss zhi,2,1,1 .def start .datatable: .long 16782345H,1020D34AH .textstart: STM #0,SWWSR STM #STACK+10H,SP STM #xhi,AR1 RPT #3 MVPD table,*AR1+ DLD @xhi,A DADD @yhi,A DST A,@zhiend: B end .end(3個(gè)字,3個(gè)T)DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章2.并行運(yùn)算

并行運(yùn)算指令舉例

指令舉例操作說(shuō)明LD||MAC[R]LD||MAS[R]LDXmem,dst||MAC[R]Ymem[,dst2]dst=Xmem<<16dst2=dst2+T*YmemST||LDSTsrc,Ymem||LDXmem,dstYmem=src>>(16-ASM)dst=Xmem<<16ST||MPYST||MAC[R]ST||MAS[R]STsrc,Ymem||MAC[R]Xmem,dstYmem=src>>(16-ASM)dst=dst+T*XmemST||ADDST||SUBSTsrc,Ymem||ADDXmem,dstYmem=src>>(16-ASM)dst=dst+XmemDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章【例6-16】用并行運(yùn)算指令編寫(xiě)計(jì)算z=x+y和f=e+d的程序。

.mmregsSTACK .usect "STACK",10H .bss x,3 .bss d,3 .def start .datatable: .word 0123H,1027H,0,1020H,0345H,0 .textstart: STM #0,SWWSR STM #STACK+10H,SP STM #x,AR1 RPT #5 MVPD table,*AR1+ STM #x,AR5 STM #d,AR2 LD #0,ASM LD *AR5+,16,A ADD *AR5+,16,A ST A,*AR5;并行指令

||LD *AR2+,B ADD *AR2+,16,B STH B,*AR2end: B end .endDSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章3.64位加法和減法運(yùn)算

64位數(shù)的加法和減法算式如下:

w3w2w1w0(W64)+x3x2Cx1x0(X64)低32位相加產(chǎn)生進(jìn)位C

-y3y2C'y1y0(Y64)低32位相減產(chǎn)生借位C'

z3z2z1z0(Z64)〖例6-17〗編寫(xiě)計(jì)算Z64=W64+X64-Y64的程序。W、X、Y和結(jié)果Z都是64位數(shù),它們都由兩個(gè)32位的長(zhǎng)字組成。利用長(zhǎng)字指令可以完成64位數(shù)的加/減法。DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章DLD@w1,A;A=w1w0DADD@x1,A;A=w1w0+x1x0,產(chǎn)生進(jìn)位CDLD@w3,B;B=w3w2ADDC@x2,B;B=w3w2+x2+CADD@x3,16,B;B=w3w2+x3x2+CDSUB@y1,A;A=w1w0+x1x0-y1y0,產(chǎn)生借位C'DSTA,@z1;z1z0=w1w0+x1x0-y1y0SUBB@y2,B;B=w3w2+x3x2+C-y2-C'SUB@y3,16,B;B=w3w2+x3x2+C-y3y2-C'DSTB,@z3;z3z2=w3w2+x3x2+C-y3y2-C'數(shù)據(jù)計(jì)算結(jié)果DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章4.32位乘法運(yùn)算

32位乘法算式如下:

x1x0SU×y1y0SUx0×y0U×Uy1×x0S×Ux1×y0S×Uy1×x1S×Sw3w2w1w0SUUU其中,S——帶符號(hào)數(shù),U——無(wú)符號(hào)數(shù)。由上算式可見(jiàn),在32位乘法運(yùn)算中,實(shí)際上包括三種乘法運(yùn)算:U×U,S×U及S×S。一般的乘法運(yùn)算指令都是兩個(gè)帶符號(hào)數(shù)相乘,即S×S。所以,在編程時(shí),還要用到以下兩條乘法指令:

MACSUXmem,Ymem,src;無(wú)符號(hào)數(shù)與帶符號(hào)數(shù)相乘并累加;src=U(Xmem)×S(Ymem)+srcMPYUSmem,dst;無(wú)符號(hào)數(shù)相乘;dst=U(T)×U(Smem)DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章〖例6-18〗編寫(xiě)計(jì)算W64=X32×Y32的程序。

32位乘法實(shí)現(xiàn)的64位乘積的程序如下:

STM#x,AR2STM#y,AR3LD*AR2,T;T=x0MPYU*AR3+,A;A=ux0×uy0STLA,@w0;w0=ux0×uy0LDA,-16,A;A=A>>16MACSU*AR2+,*AR3-,A;A+=y1×ux0MACSU*AR3+,*AR2,A;A+=x1×uy0STLA,@w1;w1=ALDA,-16,A;A=A>>16MAC*AR3,*AR2,A;A+=x1×y1STLA,@w2;w2=A的低16位

STHA,@w3;w3=A的高16位DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.8小數(shù)運(yùn)算

1.小數(shù)的表示方法

TMS320C54x采用2的補(bǔ)碼表示小數(shù),其最高位為符號(hào)位,數(shù)值范圍為

1~+1。一個(gè)16位的2的補(bǔ)碼小數(shù)(Q15格式)的每一位的權(quán)值為:MSBLSB-1.2-12-22-3…2-15一個(gè)十進(jìn)制小數(shù)乘以32768之后,再將其十進(jìn)制整數(shù)部分轉(zhuǎn)換成十六進(jìn)制數(shù),就能得到這個(gè)十進(jìn)制小數(shù)的2的補(bǔ)碼表示,例如:≈1 7FFFH0.5正數(shù):乘以32768 4000H0 0000H-0.5負(fù)數(shù):其絕對(duì)值部分乘以32768,再取反加1 C000H-1 8000H

在匯編語(yǔ)言程序中,是不能直接寫(xiě)入十進(jìn)制小數(shù)的。若要定義一個(gè)系數(shù)0.707,可以寫(xiě)成:.word32768*707/1000,不能寫(xiě)成32768*0.707。DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章2.小數(shù)乘法與冗余符號(hào)位

0100(0.5)×1101(-0.375)0100000001001100(-0100)1110100(-0.1875)一個(gè)小數(shù)乘法的例子(假設(shè)字長(zhǎng)4位,累加器8位):

上述乘積是7位,當(dāng)將其送到累加器時(shí),為保持乘積的符號(hào),必須進(jìn)行符號(hào)位擴(kuò)展,這樣,累加器中的值為11110100(-0.09375),出現(xiàn)了冗余符號(hào)位。原因是:Sxxx(Q3格式)×Syyy(Q3格式)SSzzzzzz(Q6格式)

即兩個(gè)帶符號(hào)數(shù)相乘,得到的乘積帶有2個(gè)符號(hào)位,造成錯(cuò)誤的結(jié)果。DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章解決冗余符號(hào)位的辦法:在程序中設(shè)定狀態(tài)寄存器ST1中的FRCT(小數(shù)方式)位為1,在乘法器將結(jié)果傳送至累加器時(shí)就能自動(dòng)地左移1位,累加器中的結(jié)果為:Szzzzzz0(Q7格式),即11101000(

0.1875),自動(dòng)地消去了兩個(gè)帶符號(hào)數(shù)相乘時(shí)產(chǎn)生的冗余符號(hào)位。在小數(shù)乘法編程時(shí),應(yīng)當(dāng)事先設(shè)置FRCT位如下:SSBXFRCTMPY*AR2,*AR3,ASTHA,@Z

這樣,TMS320C54x就完成了Q15×Ql5=Q15的小數(shù)乘法。

DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.9除法運(yùn)算

1.被除數(shù)的絕對(duì)值小于除數(shù)的絕對(duì)值,商為小數(shù)

在一般的DSP中都沒(méi)有除法器硬件。因?yàn)槌ㄆ饔布鷥r(jià)很高,所以就沒(méi)有專(zhuān)門(mén)的除法指令。同樣,在TMS320C54x中也沒(méi)有一條單周期的16位除法指令。但是,利用條件減法指令(SUBC指令),加上重復(fù)指令“RPT#15”,就可實(shí)現(xiàn)兩個(gè)無(wú)符號(hào)數(shù)的除法運(yùn)算。條件減法指令的功能如下:SUBCSmem,src 2.被除數(shù)的絕對(duì)值大于等于除數(shù)的絕對(duì)值,商為整數(shù)

DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章6.10浮點(diǎn)運(yùn)算

1.浮點(diǎn)數(shù)的表示方法

在TMS320C54x中,浮點(diǎn)數(shù)由尾數(shù)和指數(shù)兩部分組成,它與定點(diǎn)數(shù)的關(guān)系如下:定點(diǎn)數(shù)=尾數(shù)×2(

指數(shù))例如,定點(diǎn)數(shù)0x2000(0.25)用浮點(diǎn)數(shù)表示時(shí),尾數(shù)為0x4000(0.5),指數(shù)為1,即0.25=0.5×2

1浮點(diǎn)數(shù)的尾數(shù)和指數(shù)可正可負(fù),均用補(bǔ)碼表示。指數(shù)的范圍為

8~31。

2.定點(diǎn)數(shù)到浮點(diǎn)數(shù)的轉(zhuǎn)換

TMS320C54x通過(guò)3條指令可將一個(gè)定點(diǎn)數(shù)轉(zhuǎn)化成浮點(diǎn)數(shù):(1)EXPA(2)STT,EXPONENT(3)NORMADSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章3.浮點(diǎn)數(shù)到定點(diǎn)數(shù)的轉(zhuǎn)換

知道TMS320C54x浮點(diǎn)數(shù)的定義后,就不難將浮點(diǎn)數(shù)轉(zhuǎn)換成定點(diǎn)數(shù)了。因?yàn)楦↑c(diǎn)數(shù)的指數(shù)就是在規(guī)格化時(shí)左移(指數(shù)為負(fù)時(shí)是右移)的位數(shù),所以在將浮點(diǎn)數(shù)轉(zhuǎn)換成定點(diǎn)數(shù)時(shí),只要按指數(shù)值將尾數(shù)右移(指數(shù)為負(fù)時(shí)是左移)就行了。

DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章4.浮點(diǎn)乘法舉例

【例6-26】編寫(xiě)浮點(diǎn)乘法程序,完成x1×x2=0.3×(

0.8)運(yùn)算。程序中保留10個(gè)數(shù)據(jù)存儲(chǔ)單元:x1:被乘數(shù)m2:乘數(shù)的尾數(shù)x2:乘數(shù)ep:乘積的指數(shù)e1:被乘數(shù)的指數(shù)mp:乘積的尾數(shù)ml:被乘數(shù)的尾數(shù)product:乘積e2:乘數(shù)的指數(shù)temp:暫存單元DSP技術(shù)與應(yīng)用實(shí)例趙紅怡第6章程序清單如下:

.title"zh24.asm".mmregs.defstartSTACK.usect"STACK",100;64H.bssx1,1.bssx2,1.bsse1,1.bssm1,1.bsse2,1.bssm2,1.bssep,1.bssmp,1.bssproduct,1.bsstemp,1.datatable:.word3*32768/10;0.3.word-8*32768/

溫馨提示

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

評(píng)論

0/150

提交評(píng)論