第3章-TMS320C55x的指令系統(tǒng)_第1頁(yè)
第3章-TMS320C55x的指令系統(tǒng)_第2頁(yè)
第3章-TMS320C55x的指令系統(tǒng)_第3頁(yè)
第3章-TMS320C55x的指令系統(tǒng)_第4頁(yè)
第3章-TMS320C55x的指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩186頁(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)介

第3章TMS320C55x的指令系統(tǒng)內(nèi)容提要

如果要熟練使用數(shù)字信號(hào)處理器,必須了解處理器的指令系統(tǒng),這樣才能編寫出精干、高效的程序。在本章中首先對(duì)TMS320C55x的尋址方式做了介紹,之后對(duì)C55x的指令系統(tǒng)進(jìn)行了詳細(xì)說(shuō)明。

C55x處理器的指令系統(tǒng)可以分為6大類,包括算術(shù)運(yùn)算指令、位操作指令、擴(kuò)展輔助寄存器操作指令、邏輯運(yùn)算指令、移動(dòng)指令和程序控制指令等。而介紹的內(nèi)容包括指令格式,執(zhí)行的操作,是否有并行使能位,長(zhǎng)度,周期,在流水線上的執(zhí)行階段以及執(zhí)行的功能單元等。2023/5/311TMS320C55xDSP原理及應(yīng)用3.1尋址方式3.2TMS320C55x的指令系統(tǒng)第3章TMS320C55x的指令系統(tǒng)2023/5/312TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.1尋址方式

尋址方式是指如何指定指令和操作數(shù)所在存儲(chǔ)空間的地址。C55xDSP支持三種尋址模式,可以高效、靈活地對(duì)數(shù)據(jù)空間、存儲(chǔ)映射寄存器、寄存器位和I/O空間進(jìn)行尋址,它們是:

絕對(duì)尋址模式; 直接尋址模式; 間接尋址模式。2023/5/313TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.1.1絕對(duì)尋址模式

絕對(duì)尋址模式有三種,它們分別是:k16絕對(duì)尋址、k23絕對(duì)尋址和I/O絕對(duì)尋址。1.k16絕對(duì)尋址使用該模式尋址的指令其操作數(shù)為*abs16(#k16),其中k16是一個(gè)16位的無(wú)符號(hào)常數(shù)。尋址方法是將7位的寄存器DPH(擴(kuò)展數(shù)據(jù)頁(yè)指針XDP的高位部分)和k16級(jí)聯(lián)形成一個(gè)23位的地址,用于對(duì)數(shù)據(jù)空間的訪問。該模式可以訪問一個(gè)存儲(chǔ)單元和一個(gè)存儲(chǔ)映射寄存器。2023/5/314TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng).DPHk16數(shù)據(jù)空間0000000~00000000000000000000000~1111111111111111第0主數(shù)據(jù)頁(yè):000000h~00FFFFh0000001~00000010000000000000000~1111111111111111第1主數(shù)據(jù)頁(yè):010000h~01FFFFh0000010~00000100000000000000000~1111111111111111第2主數(shù)據(jù)頁(yè):000000h~00FFFFh~~~1111111~11111111111111111111111~1111111111111111第127主數(shù)據(jù)頁(yè):7F0000h~7FFFFFh

k16絕對(duì)尋址模式

*由于對(duì)指令進(jìn)行了擴(kuò)展,使用該模式尋址的指令不能與其他指令并行執(zhí)行。2023/5/315TMS320C55xDSP原理及應(yīng)用例:*abs16(#k16)用于數(shù)據(jù)存儲(chǔ)器尋址。設(shè)DPH=03h。MOV*abs16(#2002h),T2;#k16=2002h,CPU從032002h處讀取數(shù)據(jù)裝入T2MOVdbl(*abs16(#2002h)),pair(T2);#k16=2002h,#k16+1=2003h;CPU從032002h和032003h處讀取數(shù)據(jù),裝入T2和T32023/5/316TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)2.k23絕對(duì)尋址使用該模式尋址的指令其操作數(shù)為*(#k23),其中k23是一個(gè)23位的無(wú)符號(hào)常數(shù)。如圖3-2所示。使用這種尋址方法的指令將常數(shù)編碼為3字節(jié)(去掉最高位),與k16絕對(duì)尋址一樣,使用該模式尋址的指令不能與其他指令并行執(zhí)行。k23數(shù)據(jù)空間00000000000000000000000~00000001111111111111111第0主數(shù)據(jù)頁(yè):000000h~00FFFFh00000010000000000000000~00000011111111111111111第1主數(shù)據(jù)頁(yè):010000h~01FFFFh~~11111110000000000000000~11111111111111111111111第127主數(shù)據(jù)頁(yè):7F0000h~7FFFFFh2023/5/317TMS320C55xDSP原理及應(yīng)用例,*(#k23)用于數(shù)據(jù)存儲(chǔ)器尋址。MOV*(#032002h),T2;k23=032002h,CPU從032002h處讀取數(shù)據(jù)裝入T2MOVdbl(*(#032002h)),pair(T2);k23=032002h,k23+1=032003h;CPU從032002h和032003h處讀取數(shù)據(jù),裝入T2和T32023/5/318TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.I/O絕對(duì)尋址

對(duì)于I/O絕對(duì)尋址模式,如果使用代數(shù)指令,其操作數(shù)是*port(#k16),其中k16是一個(gè)16位無(wú)符號(hào)常數(shù);如果使用助記符指令,其操作數(shù)是port(#k16)(操作數(shù)前沒有*)。如下所示,使用該模式的指令將常數(shù)編碼為2字節(jié)。同樣,該指令不能與其他指令并行執(zhí)行。

k16I/O空間0000000000000000~

11111111111111110000h~FFFFh2023/5/319TMS320C55xDSP原理及應(yīng)用2023/5/3110TMS320C55xDSP原理及應(yīng)用3.1.2直接尋址模式第3章TMS320C55x的指令系統(tǒng)

直接尋址有以下幾種方式:數(shù)據(jù)頁(yè)指針(DP)直接尋址、堆棧指針(SP)直接尋址、寄存器位直接尋址和外設(shè)數(shù)據(jù)頁(yè)指針(PDP)直接尋址。其中,DP直接尋址和SP直接尋址與狀態(tài)寄存器ST1-55的CPL位(Compilermodebit)有關(guān):

當(dāng)CPL=0,采用DP直接尋址模式當(dāng)CPL=1,采用SP直接尋址模式

而寄存器位尋址和PDP直接尋址與CPL無(wú)關(guān)。2023/5/3111TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)1.DP直接尋址

在DP直接尋址方法中,23位地址的形成如圖3-3所示。其中高7位由DPH提供,用來(lái)確定主數(shù)據(jù)頁(yè),其余低16位由兩部分組成。(1)DP:DP確定在主數(shù)據(jù)頁(yè)內(nèi)長(zhǎng)度為128字節(jié)的局部數(shù)據(jù)頁(yè)的起始地址,該起始地址可以是主數(shù)據(jù)頁(yè)內(nèi)的任何地址。

(2)由匯編器計(jì)算出的7位偏移量(Doffset):偏移量的計(jì)算與訪問的是數(shù)據(jù)空間還是存儲(chǔ)映射寄存器(限定詞是mmap())有關(guān)。

由DPH和DP構(gòu)成擴(kuò)展數(shù)據(jù)頁(yè)寄存器XDP,可以將DPH和DP分別載入,也可以用一條指令載入XDP。例如:AMOV#03FFF0H,XDP2023/5/3112TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

XDPDPH(DP+Doffset)數(shù)據(jù)空間0000000~00000000000000000000000~1111111111111111第0主數(shù)據(jù)頁(yè):000000h~00FFFFh0000001~00000010000000000000000~1111111111111111第1主數(shù)據(jù)頁(yè):010000h~01FFFFh0000010~00000100000000000000000~1111111111111111第2主數(shù)據(jù)頁(yè):020000h~02FFFFh~~

~1111111~11111110000000000000000~1111111111111111第127主數(shù)據(jù)頁(yè):020000h~02FFFFhDP直接尋址模式

XDP2023/5/3113TMS320C55xDSP原理及應(yīng)用例,@Daddr用于數(shù)據(jù)存儲(chǔ)器尋址。設(shè)DPH=03h,DP=0000h。MOV@0005h,T2;DPH:(DP+Doffset)=03:(0000h+0005h)=030005h;CPU從030005h處讀取數(shù)據(jù)裝入T2MOVdbl(@0005h),pair(T2);DPH:(DP+Doffset)=030005h,

DPH:(DP+Doffset–1)=030004h;CPU從030005h和030004h處讀取數(shù)據(jù)裝入T2和T32023/5/3114TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)2.SP直接尋址當(dāng)一條指令采用SP直接尋址模式,23位地址的形成如圖所示。其中,SPH確定高7位地址,其余16位地址由SP和7位偏移量決定,偏移量的范圍是0~127。由SPH和SP構(gòu)成了擴(kuò)展數(shù)據(jù)堆棧指針XSP。

由于在第0主數(shù)據(jù)頁(yè),地址000000h~00005Fh為存儲(chǔ)映射寄存器保留,所以若數(shù)據(jù)棧位于該主數(shù)據(jù)頁(yè),則可以使用的地址范圍是000060h~00FFFFh。2023/5/3115TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

SP直接尋址模式

XSP000000000000000000000000000001000000000000000011111110000000000000000SPH(SP+Doffset)數(shù)據(jù)空間0000000~00000000000000000000000~1111111111111111第0主數(shù)據(jù)頁(yè):000000h~00FFFFh0000001~00000010000000000000000~1111111111111111第1主數(shù)據(jù)頁(yè):010000h~01FFFFh0000010~00000100000000000000000~1111111111111111第2主數(shù)據(jù)頁(yè):020000h~02FFFFh~~~1111111~11111110000000000000000~1111111111111111第127主數(shù)據(jù)頁(yè):020000h~02FFFFhXSP2023/5/3116TMS320C55xDSP原理及應(yīng)用例3-4,*SP(offset)用于數(shù)據(jù)存儲(chǔ)器尋址。設(shè)SPH=0,SP=FF00h。MOV*SP(5),T2;SPH:(SP+offset)=00FF05h,;CPU從00FF05h處讀取數(shù)據(jù)裝入T2MOVdbl(*SP(5)),pair(T2);SPH:(SP+offset)=00FF05h,SPH:(SP+offset–1)=00FF04h;CPU從00FF05h和00FF04h處讀取數(shù)據(jù)裝入T2和T32023/5/3117TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.寄存器位尋址使用寄存器位尋址的指令其操作數(shù)是@bitoffset,該操作數(shù)是從寄存器的最低位開始的偏移值。例如,如果bitoffset為0,那么就可以訪問寄存器的最低位;如果bitoffset為3,那么就可以訪問寄存器的位3。

只有寄存器的位測(cè)試、置位、清零、取反指令支持這種尋址模式。2023/5/3118TMS320C55xDSP原理及應(yīng)用例,@bitoffset用于對(duì)寄存器位的尋址。BSET@0,AC3 ;將AC3的位0置為1BTSTP@30,AC3;把AC3的位30和位31分別復(fù)制到狀態(tài)寄存器ST0_55的位TC1和TC22023/5/3119TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)4.PDP直接尋址當(dāng)一條指令使用PDP直接尋址模式,16位I/O地址的形成如圖3-5所示。64K16位的I/O空間分成512個(gè)外設(shè)數(shù)據(jù)頁(yè),用9位的外設(shè)數(shù)據(jù)頁(yè)指針PDP表示,其中每一頁(yè)有128個(gè)字,由指令中的指定的7位偏移值來(lái)表示。例如,如果訪問一頁(yè)的第一個(gè)字,其偏移值為0。2023/5/3120TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

PDP直接尋址模式000000000000000000000001000000000000010.0000000111111110000000PDPPoffsetI/O空間(64K字)000000000~0000000000000000~1111111第0外設(shè)數(shù)據(jù)頁(yè):0000h~007Fh000000001~0000000010000000~1111111第1外設(shè)數(shù)據(jù)頁(yè):0080h~00FFh000000010~0000000100000000~1111111第2外設(shè)數(shù)據(jù)頁(yè):0100h~017Fh~~~111111111~1111111110000000~1111111第511外設(shè)數(shù)據(jù)頁(yè):FF80h~FFFFh2023/5/3121TMS320C55xDSP原理及應(yīng)用例,@Poffset用于對(duì)I/O空間的尋址,設(shè)PDP=511。MOVport(@0),T2;PDP:Poffset=FF80h,CPU從FF80h讀取數(shù)據(jù)進(jìn)T2MOVT2,port(@127);PDP:Poffset=FFFFh,CPU把T2的數(shù)據(jù)輸出到I/O地址0FFFFh2023/5/3122TMS320C55xDSP原理及應(yīng)用3.1.3間接尋址模式第3章TMS320C55x的指令系統(tǒng)CPU支持的間接尋址模式有AR間接尋址、雙AR間接尋址、CDP間接尋址和系數(shù)間接尋址。利用這些模式可以進(jìn)行線性或循環(huán)尋址。1.AR間接尋址模式

該模式通過一個(gè)輔助寄存器ARn(n=0,1,2,3,4,5,6,或7)訪問數(shù)據(jù)空間。而ST2-55的ARMS位決定了AR間接尋址的操作類型:當(dāng)ARMS=0,DSP模式:CPU提供DSP增強(qiáng)應(yīng)用的高效執(zhí)行功能。當(dāng)ARMS=1,控制模式:針對(duì)控制系統(tǒng)的應(yīng)用,CPU能夠優(yōu)化代碼的長(zhǎng)度。

下面分別給出了AR間接尋址的DSP模式和控制模式。

2023/5/3123TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)AR間接尋址DSP模式序號(hào)操作數(shù)地址修改1*ARnARn未修改2*ARn+在生成地址之后增加:16位操作,ARn=ARn+132位操作,ARn=ARn+2

3*ARn在生成地址之后減少:16位操作,ARn=ARn132位操作,ARn=ARn2

4*+ARn在生成地址之前增加:16位操作,ARn=ARn+132位操作,ARn=ARn+25*

ARn在生成地址之前減少:16位操作,ARn=ARn132位操作,ARn=ARn2

6*(ARn+T0/AR0)在生成地址之后,ARn加上T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR02023/5/3124TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)AR間接尋址DSP模式(續(xù))在生成地址之后,ARn減去T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARnT0在生成地址之后,ARn加上T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0在生成地址之后,ARn減去T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM1=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR0在生成地址之后,ARn加上T1中16位帶符號(hào)的常數(shù):在生成地址之后,ARn減去T1中16位帶符號(hào)的常數(shù):7*(ARnT0/AR0)在生成地址之后,ARn減去T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR08*ARn(T0/AR0)ARn未被修改。ARn被作為基指針,T0或AR0中16位帶符號(hào)常數(shù)被作為偏移量9*(ARn+T0B/AR0B)在生成地址之后,ARn加上T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0按位倒序模式相加

10*(ARnT0B/AR0B)在生成地址之后,ARn減去T0或ARn中16位帶符號(hào)的常數(shù):如果C54CM1=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR0按位倒序模式相減

[注1]:C54CM是狀態(tài)寄存器ST1-55中TMS320C54x兼容模式。2023/5/3125TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)在生成地址之后,ARn加上T1中16位帶符號(hào)的常數(shù):在生成地址之后,ARn減去T1中16位帶符號(hào)的常數(shù):在生成地址之后,ARn加上T1中16位帶符號(hào)的常數(shù):在生成地址之后,ARn減去T1中16位帶符號(hào)的常數(shù):11*(ARn+T1)在生成地址之后,ARn加上T1中16位帶符號(hào)的常數(shù):ARn=ARn+T1

12*(ARnT1)在生成地址之后,ARn減去T1中16位帶符號(hào)的常數(shù):ARn=ARnT113*ARn(T1)ARn未被修改。ARn被作為基指針,T1中16位帶符號(hào)常數(shù)被作為偏移量14*ARn(#K16)ARn未被修改。ARn被作為基指針,16位帶符號(hào)常數(shù)(K16)被作為偏移量15*+ARn(#K16)在地址生成之前,ARn加上16位帶符號(hào)常數(shù)(K16)AR間接尋址DSP模式(續(xù))2023/5/3126TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)在生成地址之后增加:16位操作,ARn=ARn+1序號(hào)操作數(shù)地址修改1*ARnARn未修改2*ARn+在生成地址之后增加:16位操作,ARn=ARn+132位操作,ARn=ARn+2

AR間接尋址控制模式

3*ARn在生成地址之后減少:16位操作,ARn=ARn132位操作,ARn=ARn2

4*(ARn+T0/AR0)在生成地址之后,ARn加上T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0

5*(ARnT0/AR0)在生成地址之后,ARn減去T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR0

2023/5/3127TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

AR間接尋址控制模式(續(xù))6*ARn(T0/AR0)ARn未被修改。ARn被作為基指針,T0或AR0中16位帶符號(hào)常數(shù)被作為偏移量7*ARn(#K16)ARn未被修改。ARn被作為基指針,16位帶符號(hào)常數(shù)(k16)被作為偏移量8*+ARn(#K16)在地址生成之前,ARn加上16位帶符號(hào)常數(shù)(k16)9*ARn(short(#k3))ARn未被修改。ARn被作為基指針,3位帶符號(hào)常數(shù)(k3)被作為偏移量2023/5/3128TMS320C55xDSP原理及應(yīng)用注:1、關(guān)于長(zhǎng)字運(yùn)算中的*ARn+

舉例說(shuō)明:ADDdual(*AR0+),AC1,AC0;32位操作2、關(guān)于位倒序?qū)ぶ肺坏剐驅(qū)ぶ分饕康氖翘岣邎?zhí)行速度及FFT算法中使用存儲(chǔ)器的效率。2023/5/3129TMS320C55xDSP原理及應(yīng)用位倒序?qū)ぶ?/p>

設(shè)FFT長(zhǎng)度N=8,x(0)~x(7)位于地址(01100000)~(01100111),AR0賦值為1(00000001),位倒序方式讀入數(shù)據(jù)情況如下(設(shè)AR2初始為01100000):

RPT#15

MOV*AR2+AR0B,*AR1+

功能:地址=AR2,AR2=B(AR2+AR0)01100000011000010110001001100011011001000110010101100110011001112023/5/3130TMS320C55xDSP原理及應(yīng)用2023/5/3131TMS320C55xDSP原理及應(yīng)用

FFT中混序就是位倒序FFT運(yùn)算時(shí)輸出/輸入序列中必有其一要混序。存儲(chǔ)單元地址FFT變換結(jié)果位碼倒序位碼倒序?qū)ぶ方Y(jié)果存儲(chǔ)單元地址FFT變換結(jié)果位碼倒序位碼倒序?qū)ぶ方Y(jié)果0000X(0)0000X(0)1000X(1)0001X(8)0001X(8)1000X(1)1001X(9)1001X(9)0010X(4)0100X(2)1010X(5)0101X(10)0011X(12)1100X(3)1011X(13)1101X(11)0100X(2)0010X(4)1100X(3)0011X(12)0101X(10)1010X(5)1101X(11)1011X(13)0110X(6)0110X(6)1110X(7)0111X(14)0111X(14)1110X(7)1111X(15)1111X(15)2023/5/3132TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)2.雙AR間接尋址模式

雙AR間接尋址模式可以通過8個(gè)輔助寄存器(AR0~AR7)同時(shí)訪問兩個(gè)數(shù)據(jù)存儲(chǔ)單元,與單個(gè)AR間接訪問數(shù)據(jù)空間一樣,CPU使用一個(gè)擴(kuò)展輔助寄存器產(chǎn)生23位地址。雙AR間接尋址可以實(shí)現(xiàn)以下功能:(1)執(zhí)行一條可完成兩個(gè)16位數(shù)據(jù)空間訪問的指令。在這種情況下,兩個(gè)數(shù)據(jù)存儲(chǔ)操作數(shù)在指令指令中為Xmem和Ymem。例如:ADDXmem,Ymem,ACx(2)并行執(zhí)行兩條指令。在這種情況下,必須每條指令訪問一個(gè)存儲(chǔ)數(shù)據(jù),操作數(shù)在指令指令中是Smem或Lmem。MOVSmem,dst||ANDSmem,src,dst

雙AR間接尋址操作數(shù)是AR間接尋址操作數(shù)的子集,而ARMS狀態(tài)位不影響雙AR間接尋址的操作。2023/5/3133TMS320C55xDSP原理及應(yīng)用2023/5/3134TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

雙AR間接尋址操作數(shù)

在生成地址之后增加:16位操作,ARn=ARn+1在生成地址之后減少:16位操作,ARn=ARn1在生成地址之后,ARn加上T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARn+T0序號(hào)操作數(shù)地址修改1*ARnARn未修改2*ARn+在生成地址之后增加:16位操作,ARn=ARn+132位操作,ARn=ARn+23*ARn在生成地址之后減少:16位操作,ARn=ARn132位操作,ARn=ARn2

4*(ARn+T0/AR0)在生成地址之后,ARn加上T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARn+T0如果C54CM=1,ARn=ARn+AR0

2023/5/3135TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

雙AR間接尋址操作數(shù)(續(xù))在生成地址之后,ARn減去T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARnT0在生成地址之后,ARn加上T1中16位帶符號(hào)的常數(shù):在生成地址之后,ARn減去T1中16位帶符號(hào)的常數(shù):序號(hào)操作數(shù)地址修改5*(ARnT0/AR0)在生成地址之后,ARn減去T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,ARn=ARnT0如果C54CM=1,ARn=ARnAR0

6*ARn(T0/AR0)ARn未被修改。ARn被作為基指針,T0或AR0中16位帶符號(hào)常數(shù)被作為偏移量7*(ARn+T1)在生成地址之后,ARn加上T1中16位帶符號(hào)的常數(shù):ARn=ARn+T1

8*(ARnT1)在生成地址之后,ARn減去T1中16位帶符號(hào)的常數(shù):ARn=ARn-T12023/5/3136TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.CDP間接尋址模式

CDP間接尋址模式使用系數(shù)數(shù)據(jù)指針(CDP)對(duì)數(shù)據(jù)空間、寄存器位和I/O空間進(jìn)行訪問。

在生成地址之后增加:16位操作,CDP=CDP+1在生成地址之后減少:16位操作,CDP=CDP1在地址生成之前,CDP加上16位帶符號(hào)常數(shù)(K16):序號(hào)操作數(shù)地址修改1*CDPCDP未修改2*CDP+在生成地址之后增加:16位操作,CDP=CDP+132位操作,CDP=CDP+23*CDP在生成地址之后減少:16位操作,CDP=CDP132位操作,CDP=CDP2

4*CDP(#K16)CDP未被修改。CDP被作為基指針,16位帶符號(hào)常數(shù)(K16)被作為偏移量5*+CDP(#K16)在地址生成之前,CDP加上16位帶符號(hào)常數(shù)(K16):CDP=CDP+K16

2023/5/3137TMS320C55xDSP原理及應(yīng)用2023/5/3138TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)4.系數(shù)間接尋址模式系數(shù)間接尋址模式的地址產(chǎn)生過程與使用CDP間接尋址數(shù)據(jù)空間的地址產(chǎn)生過程一樣。CDP間接尋址模式支持以下算術(shù)指令:FIR濾波、乘法、乘加、乘減和雙乘加或雙乘減。在生成地址之后增加:16位操作,CDP=CDP+1在生成地址之后減少:16位操作,CDP=CDP1在生成地址之后,CDP加上T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,CDP=CDP+T0序號(hào)操作數(shù)地址修改1*CDPCDP未修改2*CDP+在生成地址之后增加:16位操作,CDP=CDP+132位操作,CDP=CDP+23*CDP在生成地址之后減少:16位操作,CDP=CDP132位操作,CDP=CDP24*(CDP+T0/AR0)在生成地址之后,CDP加上T0或AR0中16位帶符號(hào)的常數(shù):如果C54CM=0,CDP=CDP+T0如果C54CM=1,CDP=CDP+AR02023/5/3139TMS320C55xDSP原理及應(yīng)用2023/5/3140TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.2TMS320C55x的指令系統(tǒng)3.2.1C55x指令的并行執(zhí)行1.指令并行的特征

C55xDSP的結(jié)構(gòu)特點(diǎn)使其在一個(gè)周期內(nèi)可以并行地執(zhí)行兩條指令。C55x支持三種類型的并行指令。(1)單指令中內(nèi)置并行方式

這類并行指令是由一條指令同時(shí)執(zhí)行兩個(gè)不同的操作,通常用符號(hào)“::”來(lái)分隔指令的兩個(gè)部分,這種并行方式也稱為隱含并行方式。例如:

MPY*AR0,*CDP,AC0 ::MPY*AR1,*CDP,AC1

這是一條單指令,由AR0引用的數(shù)據(jù)與由CDP引用的系數(shù)相乘,同時(shí),由AR1引用的數(shù)據(jù)與該系數(shù)相乘。2023/5/3141TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(2)用戶自定義的兩條指令間的并行方式

這類并行指令是用戶或C語(yǔ)言編譯器定義的,是由兩條指令同時(shí)并行執(zhí)行兩個(gè)操作,通常用符號(hào)“||”來(lái)分隔這兩條指令。例如:

MPYM*AR1–,*CDP,AC1 ||XORAR2,T1

第一條指令在D單元執(zhí)行乘法運(yùn)算,第二條指令在A單元的ALU執(zhí)行一個(gè)邏輯操作。(3)內(nèi)置與用戶自定義混合的并行方式

例如:MPYMT3=*AR3+,AC1,AC2||MOV#5,AR1

第一條指令隱含了內(nèi)置并行方式,第二條指令是用戶自定義的并行方式。2023/5/3142TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)2.指令并行的規(guī)則在并行指令中,必須遵守三條基本規(guī)則:①兩條指令的總長(zhǎng)度不能超過6個(gè)字節(jié)。②在指令的執(zhí)行過程中不存在操作器、地址產(chǎn)生單元、總線等資源沖突。③其中一條指令必須有并行使能位或兩條指令符合軟—雙并行條件。下面介紹不能使用并行方式的情況:(1)使用立即數(shù)尋址方式

例如:*abs16(#k16)*(#k23)port(#k16)*ARn(K16)*+ARn(K16)*CDP(K16)*+CDP(K16)2023/5/3143TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(2)條件跳轉(zhuǎn)、條件調(diào)用、中斷、復(fù)位等程序控制指令

例如:BCCP24,condCALLCCP24,condIDLEINTRk5RESETTRAPk5(3)使用下列指令或者操作修飾符例如:mmap()port()<instruction>.CR<instruction>.LR(4)一個(gè)單獨(dú)的寄存器或存儲(chǔ)器在一個(gè)流水線節(jié)拍被讀兩次2023/5/3144TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.資源沖突

單指令在執(zhí)行中要使用操作器、地址產(chǎn)生單元、總線等資源,并行的兩條指令在執(zhí)行時(shí)要使用兩條單指令執(zhí)行時(shí)占用的資源。所以,當(dāng)并行的兩條指令使用C55x不支持的組合資源時(shí),就會(huì)發(fā)生資源沖突。

下面介紹C55x的資源。

(1)運(yùn)算器

可使用的操作器有:D單元的ALU、D單元的移位器、D單元的交換器、A單元的交換器、A單元的ALU和P單元。并行指令執(zhí)行時(shí)一個(gè)操作器只能使用一次。2023/5/3145TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(2)地址產(chǎn)生單元

地址產(chǎn)生單元有:2個(gè)數(shù)據(jù)地址(DA)產(chǎn)生單元、1個(gè)系數(shù)地址(CA)產(chǎn)生單元和1個(gè)堆棧地址(SA)產(chǎn)生單元。指令執(zhí)行時(shí)只能使用給定數(shù)量的數(shù)據(jù)地址產(chǎn)生單元。(3)總線

可使用的總線有:兩個(gè)數(shù)據(jù)讀(DR)總線、一個(gè)系數(shù)讀(CA)總線、兩個(gè)數(shù)據(jù)寫(DW)總線、一個(gè)ACB總線(將D單元寄存器的內(nèi)容傳送給A單元和P單元的操作器)、一個(gè)KAB總線(立即數(shù)總線)和一個(gè)KDB總線(立即數(shù)總線)。指令執(zhí)行時(shí)只能使用給定數(shù)量的總線。2023/5/3146TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)4.軟—雙并行條件引用存儲(chǔ)器操作數(shù)的指令沒有并行使能位。兩條這樣的指令可以組成混合并行指令就是軟—雙并行方式。影響軟—雙并行方式的情況包括:

(1)兩個(gè)存儲(chǔ)器操作數(shù)必須是雙AR間接尋址模式,符合雙AR間接尋址模式的操作數(shù)如下:*ARn *ARn+ *ARn–*(ARn+AR0) *(ARn+T0)*(ARn–AR0) *(ARn–T0)*ARn(AR0) *ARn(T0)*(ARn+T1) *(ARn–T1)2023/5/3147TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

(2)指令不能包含high_byte(Smem)和low_byte(Smem),例如:MOV[uns(]high_byte(Smem)[)],dstMOV[uns(]low_byte(Smem)[)],dstMOVlow_byte(Smem)<<#SHIFTW,ACxMOVhigh_byte(Smem)<<#SHIFTW,ACxMOVsrc,high_byte(Smem)MOVsrc,low_byte(Smem)2023/5/3148TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

(4)如果指令中的k4的值是0~8,就會(huì)改變XDP的值,所以,不能與加載DP的指令組成并行指令。例如,改變XDP的指令:BSETk4,ST0_55BCLRk4,ST0_55加載DP的指令:MOVSmem,DPMOVdbl(Lmem),XDPPOPBOTHXDP2023/5/3149TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

(4)讀重復(fù)計(jì)數(shù)寄存器(RPTC)指令不能和如下的任何一個(gè)單重復(fù)指令組成并行指令。RPT RPTADDRPTSUB RPTCC

雖然修改輔助寄存器(MMR)指令沒有引用存儲(chǔ)器,而且也沒有并行使能位,但是MMR指令可以和如下任何存儲(chǔ)器引用指令組合成軟—雙并行指令。AADDTAx,TAy AADDk8,TAxAMOVTAx,TAy AMOVk8,TAxASUBTAx,TAy ASUBk8,TAxAMOVD16,TAx AMARSmem2023/5/3150TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)3.2.2TMS320C55xDSP的匯編指令

TMS320C55x是TMS320家族中的定點(diǎn)數(shù)字信號(hào)處理器,可以使用兩種指令集:助記符指令集和代數(shù)指令集。代數(shù)指令集中的指令類似于代數(shù)表達(dá)式,運(yùn)算關(guān)系比較清楚明了;助記符指令集與計(jì)算機(jī)匯編語(yǔ)言相似,采用助記符來(lái)表示指令。不過,在編程時(shí)只能使用一種指令集。助記符指令和代數(shù)指令在功能上是一一對(duì)應(yīng)的,只是表示形式不同。本節(jié)同時(shí)介紹助記符指令和代數(shù)指令,并通過實(shí)例來(lái)講解C55x的指令系統(tǒng)。2023/5/3151TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)

TMS320C55x指令集按操作類型可分為以下6種:

算術(shù)運(yùn)算指令位操作指令擴(kuò)展輔助寄存器操作指令邏輯運(yùn)算指令移動(dòng)指令程序控制指令一條指令的屬性包括:指令,執(zhí)行的操作,是否有并行使能位,長(zhǎng)度,周期,在流水線上的執(zhí)行階段以及執(zhí)行的功能單元等。下面,將按照這些屬性分類介紹C55x助記符指令集。指令集。2023/5/3152TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)1.算術(shù)運(yùn)算指令(1)加法指令助記符指令代數(shù)指令說(shuō)明ADD[src,]dstdst=dst+src兩個(gè)寄存器的內(nèi)容相加ADDk4,dstdst=dst+k44位無(wú)符號(hào)立即數(shù)加到寄存器ADDK16,[src,]dstdst=src+K1616位有符號(hào)立即數(shù)和源寄存器的內(nèi)容相加ADDSmem,[src,]dstdst=src+Smem

操作數(shù)和源寄存器的內(nèi)容相加ADDACx<<Tx,ACyACy=ACy+(ACx<<Tx)累加器ACx根據(jù)Tx中的內(nèi)容移位后,再和累加器ACy相加

ADDACx<<#SHIFTW,ACyACy=ACy+(ACx<<#SHIFTW)累加器ACx移位后與累加器ACy相加加法指令①指令2023/5/3153TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)加法指令(續(xù))ADD[uns(]Smem[)],CARRY,[ACx,]ADD[uns(]Smem[)]<<#SHIFTW,ADDK16<<#16,[ACx,]ACyACy=ACx+(K16<<#16)16位有符號(hào)立即數(shù)左移16位后加到累加器ADDK16<<#SHFT,[ACx,]ACyACy=ACx+(K16<<#SHFT)16位有符號(hào)立即數(shù)移位后加到累加器ADDSmem<<Tx,[ACx,]ACyACy=ACx+(Smem<<Tx)操作數(shù)根據(jù)Tx中的內(nèi)容移位后,再和累加器ACx相加ADDSmem<<#16,[ACx,]ACyACy=ACx+(Smem<<#16)操作數(shù)左移16位后,再和累加器ACx相加ACyACy=ACx+uns(Smem)+CARRY操作數(shù)帶進(jìn)位加到累加器ADD[uns()Smem[]],[ACx,]ACyACy=ACx+uns(Smem)操作數(shù)加到累加器[ACx,]ACyACy=ACx+(uns(Smem)<<#SHIFTW)操作數(shù)移位后加到累加器ADDdbl(Lmem),[ACx,]ACyACy=ACx+dbl(Lmem)32位操作數(shù)加到累加器ADDXmem,Ymem,ACxACx=(Xmem<<#16)+(Ymem<<#16)兩操作數(shù)均左移16位后加到累加器ADDK16,SmemSmem=Smem+K16操作數(shù)和16位有符號(hào)立即數(shù)相加ADD[R]V[ACx,]ACyACy=rnd(ACy+|ACx|)與絕對(duì)值相加2023/5/3154TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)加法指令有幾點(diǎn)說(shuō)明:如果目的操作數(shù)是累加器ACx,在D單元的ALU中進(jìn)行運(yùn)算操作;如果目的操作數(shù)是輔助或臨時(shí)寄存器TAx,在A單元的ALU中進(jìn)行運(yùn)算操作;如果目的操作數(shù)是存儲(chǔ)器(Smem),在D單元的ALU中進(jìn)行運(yùn)算操作;如果是移位指令(16位立即數(shù)移位除外),在D單元移位器中進(jìn)行運(yùn)算操作。2023/5/3155TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)②狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:CARRY,C54CM,M40,SATA,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY。2023/5/3156TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)③舉例ADD*AR3+,T0,T1;AR3間接尋址得到的內(nèi)容與T0的內(nèi) ;容相加,結(jié)果裝入T1,并將AR3增1

執(zhí)行前AR3T0T1CARRY0302330000數(shù)據(jù)存儲(chǔ)器EF000302執(zhí)行后AR3T0T1CARRY0303330022001數(shù)據(jù)存儲(chǔ)器EF0003022023/5/3157TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)ADD*AR1<<T0,AC1,AC0;將由AR1尋址得到的內(nèi)容左移T0位 ;與AC1相加,結(jié)果裝入AC0

執(zhí)行前AC0AC1T0AR1SXMDM40ACOV0CARRY00000000000023000000000C0200數(shù)據(jù)存儲(chǔ)器030002000000執(zhí)行后AC0AC1T0AR1SXMDM40ACOV0CARRY00233000000023000000000C0200030002000001數(shù)據(jù)存儲(chǔ)器2023/5/3158TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(2)減法指令①指令減法指令助記符指令代數(shù)指令說(shuō)明SUB[src,]dstdst=dst–src兩個(gè)寄存器的內(nèi)容相減SUBk4,dstdst=dst–k4寄存器的內(nèi)容減去4位無(wú)符號(hào)立即數(shù)SUBK16,[src,]dstdst=dst–K16寄存器的內(nèi)容減去16位有符號(hào)立即數(shù)SUBSmem,[src,]dstdst=dst–Smem寄存器的內(nèi)容減去操作數(shù)SUBsrc,Smem,dstdst=Smem–src操作數(shù)減去源寄存器的內(nèi)容SUBACx<<Tx,ACyACy=ACy–(ACx<<Tx)累加器ACx根據(jù)Tx中的內(nèi)容移位后,作為減數(shù)和累加器ACy相減2023/5/3159TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)減法指令(續(xù))SUBACx<<#SHIFTW,ACyACy=ACy–(ACx<<#SHIFTW)累加器ACx移位后,作為減數(shù)和累加器ACy相減SUBK16<<#16,[ACx,]ACyACy=ACx–(K16<<#16)16位有符號(hào)立即數(shù)左移16位后,作為減數(shù)和累加器ACx相減SUBK16<<#SHFT,[ACx,]ACyACy=ACx–(K16<<#SHFT)16位有符號(hào)立即數(shù)移位后,作為減數(shù)和累加器ACx相減SUBSmem<<Tx,[ACx,]ACyACy=ACx–(Smem<<Tx)操作數(shù)根據(jù)Tx中的內(nèi)容移位后,作為減數(shù)和累加器ACx相減SUBSmem<<#16,[ACx,]ACyACy=ACx–(Smem<<#16)操作數(shù)左移16位后,作為減數(shù)和累加器ACx相減SUBACx,Smem<<#16,ACyACy=(Smem<<#16)–ACx操作數(shù)左移16位后,作為被減數(shù)和累加器ACx相減2023/5/3160TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)減法指令(續(xù))ACy=ACx–uns(Smem)SUBK16<<#SHFT,[ACx,]ACyACy=ACx–(K16<<#SHFT)16位有符號(hào)立即數(shù)移位后,作為減數(shù)和累加器ACx相減SUBSmem<<Tx,[ACx,]ACyACy=ACx–(Smem<<Tx)操作數(shù)根據(jù)Tx中的內(nèi)容移位后,作為減數(shù)和累加器ACx相減SUBSmem<<#16,[ACx,]ACyACy=ACx–(Smem<<#16)操作數(shù)左移16位后,作為減數(shù)和累加器ACx相減SUBACx,Smem<<#16,ACyACy=(Smem<<#16)–ACx操作數(shù)左移16位后,作為被減數(shù)和累加器ACx相減SUB[uns(]Smem[)],BORROW,[ACx,]ACyACy=ACx–uns(Smem)–BORROW從累加器中減去帶借位的操作數(shù)SUB[uns(]Smem[)],[ACx,]ACyACy=ACx–uns(Smem)從累加器中減去操作數(shù)2023/5/3161TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)減法指令(續(xù))SUB[uns(]Smem[)]<<#SHIFTW,[ACx,]ACyACy=ACx–(uns(Smem)<<#SHIFTW)從累加器中減去移位后的操作數(shù)SUBdbl(Lmem),[ACx,]ACyACy=ACx–dbl(Lmem)從累加器中減去32位操作數(shù)SUBACx,dbl(Lmem),ACyACy=dbl(Lmem)–Acx32位操作數(shù)減去累加器SUBXmem,Ymem,ACxACx=(Xmem<<#16)–(Ymem<<#16)兩操作數(shù)均左移16位后相減2023/5/3162TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)①指令影響指令執(zhí)行的狀態(tài)位有:CARRY,C54CM,M40,SATA,SATD,SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy,CARRY。③舉例SUBuns(*AR1),BORROW,AC0,AC1;將CARRY位求反,AC0減去由AR1尋 ;址得到的內(nèi)容及CARRY的內(nèi)容,并將結(jié)果裝入AC1

執(zhí)行前AC0AC1AR1CARRY00EC000000000000000003020數(shù)據(jù)存儲(chǔ)器F0000302執(zhí)行后AC0AC1AR1CARRY00EC00000000EBFF0FFF03021數(shù)據(jù)存儲(chǔ)器F00003022023/5/3163TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(3)條件減法①指令SUBCSmem,[ACx,]ACy;if((ACx–(Smem<<#15))>=0);ACy=(ACx–(Smem<<#15))<<#1+1;else;ACy=ACx<<#1②狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:SXMD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVy,CARRY。2023/5/3164TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)③舉例SUBC*AR1,AC0,AC1;如果(AC0–(*AR1)<<#15)>=0,則;AC1=(AC0–(*AR1)<<#15)<<#1+1;否則AC1=AC0<<#1執(zhí)行前AC0AC1AR1SXMDACOV0CARRY234300000000000000000300數(shù)據(jù)存儲(chǔ)器02000300000執(zhí)行后AC0AC1AR1SXMDACOV0CARRY234300000046840000010300數(shù)據(jù)存儲(chǔ)器020003000112023/5/3165TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(4)條件加減法①指令條件加減法指令A(yù)DDSUBCCSmem,ACx,TCx,ACyACy=adsc(Smem,ACx,TCx)IfTCx=1ACy=ACx+(Smem<<#16)ADDSUBCCSmem,ACx,TC1,TC2,ACyACy=adsc(Smem,ACx,TC1,TC2)IfTC2=1ACy=ACxIfTC2=0andTC1=1ACy=ACx+(Smem<<#16)IfTC2=0andTC1=0ADDSUBCCSmem,ACx,Tx,TC1,TC2,ACyACy=ads2c(Smem,ACx,Tx,TC1,TC2)IfTC2=1andTC1=1ACy=ACx+(Smem<<#16)IfTC2=0andTC1=1ACy=ACx+(Smem<<Tx)IfTC2=1andTC1=0ACy=ACx–(Smem<<#16)IfTC2=0andTC1=0助記符指令代數(shù)指令說(shuō)明ADDSUBCCSmem,ACx,TCx,ACyACy=adsc(Smem,ACx,TCx)IfTCx=1ACy=ACx+(Smem<<#16)elseACy=ACx-(Smem<<#16)ADDSUBCCSmem,ACx,TC1,TC2,ACyACy=adsc(Smem,ACx,TC1,TC2)IfTC2=1ACy=ACxIfTC2=0andTC1=1ACy=ACx+(Smem<<#16)IfTC2=0andTC1=0ACy=ACx–(Smem<<#16)

ADDSUBCCSmem,ACx,Tx,TC1,TC2,ACyACy=ads2c(Smem,ACx,Tx,TC1,TC2)IfTC2=1andTC1=1ACy=ACx+(Smem<<#16)IfTC2=0andTC1=1ACy=ACx+(Smem<<Tx)IfTC2=1andTC1=0ACy=ACx–(Smem<<#16)IfTC2=0andTC1=0ACy=ACx–(Smem<<Tx)

2023/5/3166TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)②狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATD,SXMD,TC1,TC2。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVy,CARRY。

③舉例ADDSUBCC*AR1,AC0,TC2,AC1;如果TC2=1,則AC1=AC0+(*AR1)<<#16 ;否則AC1=AC0-(*AR1)<<#162023/5/3167TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)執(zhí)行前AC0AC1AR1TC2SXMDM40ACOV0CARRY00EC000000000000000002003300020010000數(shù)據(jù)存儲(chǔ)器執(zhí)行后AC0AC1AR1TC2SXMDM40ACOV0CARRY00EC000000011F00000002003300020010011數(shù)據(jù)存儲(chǔ)器2023/5/3168TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(5)乘法指令①指令乘法指令助記符指令代數(shù)指令說(shuō)明SQR[R][ACx,]ACyACy=rnd(ACx*ACx)計(jì)算累加器ACx高位部分(32~16位)的平方值,結(jié)果舍入后放入累加器ACyMPY[R][ACx,]ACyACy=rnd(ACy*ACx)計(jì)算累加器ACx和ACy高位部分(32~16位)的乘積,結(jié)果舍入后放入累加器ACyMPY[R]Tx,[ACx,]ACyACy=rnd(ACx*Tx)計(jì)算累加器ACx高位部分(32~16位)和Tx中內(nèi)容的乘積,結(jié)果舍入后放入累加器ACyMPYK[R]K8,[ACx,]ACyACy=rnd(ACx*K8)計(jì)算累加器ACx高位部分(32~16位)和8位有符號(hào)立即數(shù)的乘積,結(jié)果舍入后放入累加器ACy2023/5/3169TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)MPYK[R]K16,[ACx,]ACyACy=rnd(ACx*K16)計(jì)算累加器ACx高位部分(32~16位)和16位有符號(hào)立即數(shù)的乘積,結(jié)果舍入后放入累加器ACyMPYM[R][T3=]Smem,Cmem,ACxACx=rnd(Smem*coef(Cmem))[,T3=Smem]兩個(gè)操作數(shù)相乘,結(jié)果舍入后放入累加器ACxSQRM[R][T3=]Smem,ACxACx=rnd(Smem*Smem)[,T3=Smem]操作數(shù)的平方,結(jié)果舍入后放入累加器ACxMPYM[R][T3=]Smem,[ACx,]ACyACy=rnd(Smem*ACx)[,T3=Smem]操作數(shù)和累加器ACx相乘,結(jié)果舍入后放入累加器ACyMPYMK[R][T3=]Smem,K8,ACxACx=rnd(Smem*K8)[,T3=Smem]操作數(shù)和8位有符號(hào)立即數(shù)相乘,結(jié)果舍入后放入累加器ACxMPYM[R][40][T3][uns(]Xmem[)],[uns()Ymem[]],ACxACx=M40(rnd(uns(Xmem)*uns(Ymem)))[,T3=Xmem]兩數(shù)據(jù)存儲(chǔ)器操作數(shù)相乘,結(jié)果舍入后放入累加器ACxMPYM[R][U][T3=]Smem,Tx,ACxACx=rnd(uns(Tx*Smem))[,T3=Smem]Tx的內(nèi)容和操作數(shù)相乘,結(jié)果舍入后放入累加器ACx乘法指令(續(xù))2023/5/3170TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)②狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。

執(zhí)行指令后會(huì)受影響的狀態(tài)位:ACOVx,ACOVy。③舉例MPYAC0,AC1;AC1=AC0*AC1

執(zhí)行前AC0AC1M40FRCTACOV1026000340000C0000000001執(zhí)行后AC0AC1M40FRCTACOV1026000340000480000000012023/5/3171TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)(6)乘加指令①指令乘加指令助記符指令代數(shù)指令說(shuō)明SQA[R][ACx,]ACyACy=rnd(ACy+(ACx*ACx))累加器ACy和累加器ACx的乘方相加,結(jié)果舍入后放入累加器ACyMAC[R]ACx,Tx,ACy[,ACy]ACy=rnd(ACy+(ACx*Tx))累加器ACx和Tx的內(nèi)容相乘后,再與累加器ACy相加,結(jié)果舍入后放入累加器ACyMAC[R]ACy,Tx,ACx,ACyACy=rnd((ACy*Tx)+ACx)累加器ACy和Tx的內(nèi)容相乘后,再與累加器ACx相加,結(jié)果舍入后放入累加器ACyMACK[R]Tx,K8,[ACx,]ACyACy=rnd(ACx+(Tx*K8))Tx的內(nèi)容和8位有符號(hào)立即數(shù)相乘后,再與累加器ACx相加,結(jié)果舍入后放入累加器ACy2023/5/3172TMS320C55xDSP原理及應(yīng)用第3章TMS320C55x的指令系統(tǒng)乘加指令(續(xù))ACy=rnd(ACx+(Smem*Smem))[,T3ACy=rnd(ACx+(Tx*Smem))[,T3=MACK[R]Tx,K16,[ACx,]ACyACy=rnd(ACx+(Tx*K1

溫馨提示

  • 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)論