第6章 DSP的指令系統(tǒng)_第1頁
第6章 DSP的指令系統(tǒng)_第2頁
第6章 DSP的指令系統(tǒng)_第3頁
第6章 DSP的指令系統(tǒng)_第4頁
第6章 DSP的指令系統(tǒng)_第5頁
已閱讀5頁,還剩136頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章TMS320C54x的指令系統(tǒng)6.1指令的表示方法6.2尋址方式6.3指令系統(tǒng)

本章小結(jié)

習題’C54x的指令系統(tǒng)包含助記符指令和代數(shù)指令兩種形式。

助記符指令:是一種采用助記符號表示的類似于匯編語言的指令;

代數(shù)指令:是一種比匯編語言更高級,類似于高級語言的代數(shù)形式指令,具有接近匯編語言的特點。

兩種指令具有相同的功能。本章著重介紹助記符指令的分類及基本功能。

6.1指令的表示方法

第6章TMS320C54x的指令系統(tǒng)第6章TMS320C54x的指令系統(tǒng)C54x的助記符指令是由操作碼和操作數(shù)兩部分組成。在進行匯編以前,操作碼和操作數(shù)都是用助記符表示。

例如:

LD

#0FFh,

A

;將立即數(shù)0FF傳送至A

操作碼源操作數(shù)目的操作數(shù)注釋第6章TMS320C54x的指令系統(tǒng)6.1.1指令系統(tǒng)中的符號

序號符號含義1A累加器A2ALU算術邏輯運算單元3AR泛指通用輔助寄存器4ARx指定某一輔助寄存器AR0~AR75ARPST0中的3位輔助寄存器指針6ASMST1中的5位累加器移位方式位-16~157B累加器B8BRAFST1中的塊重復操作標志9BRC塊重復操作寄存器10BITC用于測試指令,指定數(shù)據(jù)存儲器單元中的哪一位被測試,取指范圍:0~1511C16ST1中的雙16位/雙精度算術運算方式位12CST0中的進位位第6章TMS320C54x的指令系統(tǒng)序號符號含義13CC2位條件碼(0CC3)14CMPTST1中的ARP修正方式位15CPLST1中的直接尋址編輯標志位16cond表示一種條件的操作數(shù),用于條件執(zhí)行指令17[d],[D]延時選項18DABD地址總線19DARDAB地址寄存器20dmad16位立即數(shù)數(shù)據(jù)存儲器地址(0~65535)21Dmem數(shù)據(jù)存儲器操作數(shù)22DPST0中的數(shù)據(jù)存儲器頁指針(0DP511)23dst目的累加器(A和B)24dst_與dst相反的目的累加器25EABE地址總線第6章TMS320C54x的指令系統(tǒng)序號符號含

義26EAREAB地址總線27extpmad23位立即程序存儲器地址28FRCTST1中的小數(shù)方式位29hi(A)累加器的高階位(AH或BH)30HMST1中的保持方式位31IFR中斷標志寄存器32INTMST1中的中斷屏蔽位33K少于9位的短立即數(shù)34k33位立即數(shù)(0k37)35k55位立即數(shù)(-16k515)36k99位立即數(shù)(0k9511)37lk16位長立即數(shù)38Lmem利用長字尋址的32位單數(shù)據(jù)存儲器操作數(shù)第6章TMS320C54x的指令系統(tǒng)序號符號含義39Mmr,MMR存儲器映像寄存器40MMRx,MMRy存儲器映像寄存器,AR0~AR7或SP41nXC指令后面的字數(shù),取1或242N指定狀態(tài)寄存器,N=0為ST0,N=1為ST143OVAST0中的累加器A溢出標志44OVBST0中的累加器B溢出標志45OVdst指定目的累加器(A或B)的溢出標志46OVdst_指定與Ovdst相反的目的累加器的溢出標志47OVsrc指定源累加器(A或B)的溢出標志48OVMST1中的溢出方式位49PA16位立即端口地址(0PA65535)50PAR程序存儲器地址寄存器51PC程序計數(shù)器52pmad16位立即程序存儲器地址(0

pmad

65535)第6章TMS320C54x的指令系統(tǒng)序號符號含義53pmem程序存儲器操作數(shù)54PMST處理器工作方式狀態(tài)寄存器55prog程序存儲器操作數(shù)56[R]舍入選項57rnd循環(huán)尋址58RC重復計數(shù)器59RTN快速返回寄存器60REA塊重復結(jié)束地址寄存器61RSA塊重復起始地址寄存器62SBIT用于指定狀態(tài)寄存器位的4位地址(0~15)63SHFT4位移位值(0~15)64SHIFT5位移位值(-16~15)65Sind間接尋址的單數(shù)據(jù)存儲器操作數(shù)66Smem16位單數(shù)據(jù)存儲器操作數(shù)第6章TMS320C54x的指令系統(tǒng)序號符號含

義67SP堆棧指針寄存器68src源累加器(A或B)69ST0,ST1狀態(tài)寄存器0,狀態(tài)寄存器170SXMST1中的符號擴展方式位71T暫存器72TCST0中的測試/控制標志73TOS堆棧頂部74TRN狀態(tài)轉(zhuǎn)移寄存器75TS由T寄存器的5~0位所規(guī)定的移位數(shù)(-16~31)76uns無符號數(shù)77XFST1中的外部標志狀態(tài)位78XPC程序計數(shù)器擴展寄存器79Xmem16位雙數(shù)據(jù)存儲器操作數(shù),用于雙數(shù)據(jù)操作數(shù)指令80Ymem16位雙數(shù)據(jù)存儲器操作數(shù),用于雙和單數(shù)據(jù)操作指令第6章TMS320C54x的指令系統(tǒng)6.1.2指令系統(tǒng)中的運算符

1.指令系統(tǒng)中使用的記號序號記號含義1[X]表示操作數(shù)在指令中為任選項2#用來表示指令中的立即數(shù)3(abc)小括號表示一個寄存器或存儲單元的內(nèi)容4x

y

x值被傳送到y(tǒng)中5r(n-m)表示寄存器或存儲器r的第n~m位6<<nn移位nn位,nn為正時左移,為負時右移。7||表示兩指令并行操作8\\循環(huán)左移9//循環(huán)右移10X

X取反(1的補碼)11|X|

X取絕對值12AAh

AA代表一個十六進制數(shù)第6章TMS320C54x的指令系統(tǒng)2.指令系統(tǒng)中使用的運算符序號符號運算功能求值順序1+-~!取正、取負、按位求補、邏輯負

從右至左2*/%乘法、除法、求模從左至右3+-加法、減法從左至右4^指數(shù)

從左到右

5<<>>左移、右移從左至右6<

小于、小于等于從左至右7>

大于、大于等于從左至右8!=不等于從左至右9&按位與運算從左至右10∧

按位異或運算從左至右11|按位或運算從左至右第6章TMS320C54x的指令系統(tǒng)

6.2尋址方式

尋址方式是指當CPU執(zhí)行指令時,尋找指令所指定的參與運算的操作數(shù)的方法。

根據(jù)程序的要求采用不同的尋址方式,可以有效地縮短程序的運行時間和提高代碼執(zhí)行效率。

’C54x芯片的尋址方式可以分為兩類

●數(shù)據(jù)尋址

●程序?qū)ぶ返?章TMS320C54x的指令系統(tǒng)

’C54x有7種基本的數(shù)據(jù)尋址方式:

立即尋址

絕對尋址累加器尋址直接尋址間接尋址存儲器映像寄存器尋址堆棧尋址:由指令提供一個操作數(shù):由指令提供一個操作數(shù)地址:以累加器的內(nèi)容為地址訪問程序空間某單元:尋址地址為DP或SP的值加上指令提供的偏移量:利用輔助寄存器訪問存儲器:用來改變映像寄存器,但不影響DP或SP的值:用來管理系統(tǒng)堆棧中的操作第6章TMS320C54x的指令系統(tǒng)尋址方式用

途舉例指令含義立即尋址主要用于初始化LD#10,A立即數(shù)10

A絕對尋址利用16位地址尋址存儲單元STLA,*(y)將AL內(nèi)容存入y所在的存儲單元累加器尋址將累加器中的內(nèi)容作為地址READAx將A的內(nèi)容作為地址讀程序存儲器,并存入x存儲單元直接尋址利用數(shù)據(jù)頁指針和堆棧指針尋址LD@x,A(DP+x的低7位地址)

A間接尋址利用輔助寄存器作為地址指針LD*AR1,A((AR1))

A存儲器映像寄存器尋址快速尋址存儲器映象寄存器LDMST1,B(ST1)

B堆棧尋址壓入/彈出數(shù)據(jù)存儲器和存儲器映像寄存器MMRPSHMAG(SP)-1

SP,(AG)

(SP)第6章TMS320C54x的指令系統(tǒng)部分尋址縮略語

縮略語含義Smem16位單尋址操作數(shù)Xmem16位雙尋址操作數(shù),用于雙操作數(shù)或部分單操作數(shù)指令,從DB數(shù)據(jù)總線上讀取Ymem16位雙尋址操作數(shù),用于雙操作數(shù)指令,從CB數(shù)據(jù)總線上讀取dmad16位立即數(shù):數(shù)據(jù)存儲器地址(0~65535)pmad16位立即數(shù):程序存儲器地址(0~65535)PA16位立即數(shù):I/O口地址(0~65535)src源累加器(A或B)dst目的累加器(A或B)1k16位長立即數(shù)第6章TMS320C54x的指令系統(tǒng)6.2.1立即尋址

立即尋址就是在指令中含有執(zhí)行指令所需的操作數(shù)。操作數(shù)緊隨操作碼存放在程序存儲器中。

例如:LD#F180,A;將立即數(shù)F180加載到A程序存儲器操作碼立即數(shù)F180

立即數(shù)的數(shù)值形式:

①短立即數(shù)。3、5、8、9位,單字指令;②長立即數(shù)。16位,雙字指令。特點:指令中含有一個固定的立即數(shù),運行速度較快,但需占用程序存儲空間,并且數(shù)值不能改變。用途:用于表示常數(shù)或?qū)拇嫫鞒跏蓟?。?章TMS320C54x的指令系統(tǒng)6.2.2絕對尋址

指令中含有所要尋找的操作數(shù)的16位存儲單元地址。

16位地址表示形式:

①地址標號,如:TABLE;

②16位符號常量,如:89AB、1234。

特點:指令中包含一個固定的16位地址,能尋址所有數(shù)據(jù)存儲空間,但運行速度慢,需要較大的存儲空間。用途:用于對速度要求較低的場合。絕對尋址有四種類型①數(shù)據(jù)存儲器地址(dmad)尋址;②程序存儲器地址(pmad)尋址;③端口(PA)尋址;④*(1k)尋址。

第6章TMS320C54x的指令系統(tǒng)1.數(shù)據(jù)存儲器地址尋址

用于確定操作數(shù)存于數(shù)據(jù)存儲單元的地址。

例如,將數(shù)據(jù)存儲器EXAM1地址單元中的數(shù)據(jù)復制到AR5寄存器所指向的數(shù)據(jù)存儲單元中。

MVKDEXAM1,*AR5

語法:使用一個程序標號或一個數(shù)字來指定數(shù)據(jù)空間的一個地址。數(shù)據(jù)存儲器的16位地址dmad值

第6章TMS320C54x的指令系統(tǒng)2.程序存儲器地址尋址

用于確定程序存儲器中的一個地址。例如,將程序存儲器TABLE地址單元中的內(nèi)容復制到AR2寄存器所指向的數(shù)據(jù)存儲單元中。

MVPDTABLE,*AR2

語法:使用一個符號或具體的數(shù)字來指定程序空間的一個地址。程序存儲器的16位地址pmad值

第6章TMS320C54x的指令系統(tǒng)3.端口(PA)尋址用一個符號或一個數(shù)字來確定外部I/O端口的地址。例如,把一個數(shù)從端口為FIFO的I/O口復制到AR5寄存器所指向的數(shù)據(jù)存儲單元中。

PORTRFIFO,*AR5

I/O端口地址PA第6章TMS320C54x的指令系統(tǒng)4.*(1k)尋址使用一個指定數(shù)據(jù)空間的地址來確定數(shù)據(jù)存儲器中的一個地址。例如,把地址為PN的數(shù)據(jù)單元中的數(shù)據(jù)裝到累加器A中。

LD*(PN),A

語法:允許所有使用單數(shù)據(jù)存儲器(Smem)尋址的指令去訪問數(shù)據(jù)空間的任意單元,而不改變DP的值,也不用對AR進行初始化。

這種尋址可用于支持單數(shù)據(jù)存儲器操作數(shù)的指令。

第6章TMS320C54x的指令系統(tǒng)6.2.3累加器尋址

將累加器的內(nèi)容作為地址去訪問程序存儲單元,即將累加器中的內(nèi)容作為地址,用來對存放數(shù)據(jù)的程序存儲器尋址。

例如:

READASmem

;將A中的數(shù)據(jù)作為地址尋址程序

存儲器中的數(shù)據(jù),并將數(shù)據(jù)送

入Smem指定的數(shù)據(jù)存儲單元。

WRITASmem

;將Smem指定的數(shù)據(jù)存儲單元中的

數(shù)據(jù),寫入A所指定的程序存儲

單元。

用途:用于完成程序存儲空間與數(shù)據(jù)存儲空間之間的數(shù)據(jù)傳輸。共有兩條指令可以采用累加器尋址:

READASmemWRITASmem

第6章TMS320C54x的指令系統(tǒng)6.2.4直接尋址

利用數(shù)據(jù)指針DP和堆棧指針SP尋址。

指令格式:15~8

7

6~0

操作碼

I=0

數(shù)據(jù)存儲器地址(dmad)

指令的8位操作碼指令的標識符表示指令為直接尋址

數(shù)據(jù)存儲器地址包含了數(shù)據(jù)存儲器偏移地址

特點:①指令中只含有數(shù)據(jù)存儲器的低7位地址(偏移地址dmad);

②16位數(shù)據(jù)存儲器地址由基地址(數(shù)據(jù)頁指針DP或堆棧指針SP)和偏移地址

(dmad)共同構(gòu)成。

第6章TMS320C54x的指令系統(tǒng)所要尋址的數(shù)據(jù)存儲器16位地址是由基地址和偏移地址構(gòu)成。

基地址:

數(shù)據(jù)頁指針DP(9位);

②堆棧指針SP。

當CPL=0時,數(shù)據(jù)存儲器16位地址由DP和偏移地址dmad構(gòu)成;

當CPL=1時,數(shù)據(jù)存儲器16位地址由SP加偏移地址dmad構(gòu)成。第6章TMS320C54x的指令系統(tǒng)

地址形成過程:當CPL=0時,直接尋址指令15~876~0操作碼I=0dmad頁指針DP(位于ST0中)9位數(shù)據(jù)頁指針DP9位數(shù)據(jù)頁指針DP高9位dmad低7位16位數(shù)據(jù)存儲器地址第6章TMS320C54x的指令系統(tǒng)

地址形成過程:當CPL=1時,直接尋址指令15~876~0操作碼I=0dmad高9位dmad低7位16位數(shù)據(jù)存儲器地址16位堆棧指針SP堆棧指針SPSP+dmad16位SP+dmad第6章TMS320C54x的指令系統(tǒng)6.2.5間接尋址

是根據(jù)輔助寄存器(AR0~AR7)給出的16位地址進行尋址。

每一個輔助寄存器都可以用來尋址64K字數(shù)據(jù)存儲空間中任何一個單元。

兩個輔助寄存器算術運算單元(ARAU0和ARAU1)可以根據(jù)輔助寄存器的內(nèi)容進行操作,完成16位無符號數(shù)算術運算。

間接尋址有兩種方式:●單操作數(shù)間接尋址●雙操作數(shù)間接尋址第6章TMS320C54x的指令系統(tǒng)1.單操作數(shù)尋址

用來完成存儲單元中16位單數(shù)據(jù)的讀寫操作。

指令格式:15~8

7

6~3

2~0

操作碼

I=1

MOD

ARF

指令的8位操作碼指令的標識符表示指令為間接尋址4位的方式域用來定義間接尋址的類型3位輔助寄存器域用來定義所使用的輔助寄存器第6章TMS320C54x的指令系統(tǒng)特殊的間接尋址功能:循環(huán)尋址用%表示,其輔助寄存器使用規(guī)則與其他尋址方式相同。在卷積、自相關和FIR濾波器等許多算法中,都需要在存儲器中設置循環(huán)緩沖區(qū),實現(xiàn)循環(huán)緩沖區(qū)的關鍵是循環(huán)尋址。循環(huán)緩沖區(qū)是一個滑動窗口,包含著最近的數(shù)據(jù),如果有新的數(shù)據(jù)到來,它將覆蓋最早的數(shù)據(jù)。對一個需要8個循環(huán)緩沖的運算,循環(huán)指針在第一次的移動從1,2,3,4,5,6,7→8;第二次是從2,3,4,5,6,7→8→1;;第三次是從3,4,5,6,7→8→1→2;依次下去,直到完成規(guī)定的循環(huán)次數(shù)。

(1)循環(huán)尋址第6章TMS320C54x的指令系統(tǒng)(2)位倒序?qū)ぶ?/p>

位倒序?qū)ぶ分饕獞糜贔FT運算,可以提高FFT算法的執(zhí)行速度和使用存儲器的效率。FFT運算主要實現(xiàn)采樣數(shù)據(jù)從時域到頻域的轉(zhuǎn)換,用于信號分析,F(xiàn)FT要求采樣點輸入是倒序時,輸出才是順序;若輸入是順序,則輸出就是倒序,采用位倒序?qū)ぶ返姆绞秸梅螰FT算法的要求。

位碼順序?qū)ぶ罚喊凑斩M制遞增規(guī)律尋址。如:0000,0001,0010,0011,…,1111。

位碼倒序?qū)ぶ罚焊鶕?jù)二進制遞增碼,按其位碼倒序的規(guī)律進行尋址。如:0000,1000,0100,1100,…,1111。第6章TMS320C54x的指令系統(tǒng)

指令格式:15~8

76

54

32

10

操作碼

Xmod

Xar

Ymod

Yar

指令的8位操作碼用來定義Xmem操作數(shù)間接尋址方式的類型用來定義存儲Xmem地址的輔助寄存器用來定義Ymem操作數(shù)間接尋址方式的類型用來定義存儲Ymem地址的輔助寄存器2.雙操作數(shù)尋址

用于完成執(zhí)行2次讀操作或者1次讀和1次的并行存儲操作(用‖表示)。這些指令代碼都是1個字長,而且只能以間接尋址方式進行操作。

第6章TMS320C54x的指令系統(tǒng)

兩個數(shù)據(jù)存儲器操作數(shù)由Xmem和Ymem表示。

Xmem:讀操作數(shù);

Ymem:

在兩次讀操作的指令中,表示一個讀操作數(shù);

在一次讀和一次寫的指令中,表示寫操作數(shù)。在指令中,由于只有2位可以用于選擇輔助寄存器,所以根據(jù)Xar或Yar的值可以選擇4個寄存器。Xar和Yar域選擇的輔助寄存器Xar、Yar輔助寄存器00011011AR2AR3AR4AR5第6章TMS320C54x的指令系統(tǒng)雙操作數(shù)間接尋址的類型

Xmod、Ymod操作碼語法功能

說明

00*ARx地址=ARxARx中的內(nèi)容是數(shù)據(jù)存儲器地址01*ARx-地址=ARxARx=ARx-1尋址后,ARx的地址減110*ARx+地址=ARxARx=ARx+1尋址后,ARx的地址加111*ARx+0%地址=ARxARx=circ(ARx+AR0)尋址后,AR0以循環(huán)尋址方式加到ARx中去

第6章TMS320C54x的指令系統(tǒng)6.2.6存儲器映像寄存器尋址

存儲器映象寄存器尋址用于修改存儲器映象寄存器(MMR)中的內(nèi)容,而不影響當前數(shù)據(jù)頁指針DP和當前堆棧指針SP的值。由于這種方式不需要修改DP和SP,對寄存器的寫操作開銷最小。存儲器映象寄存器尋址可用于直接尋址和間接尋址。1.采用直接尋址方式2.采用間接尋址方式

高9位數(shù)據(jù)存儲器地址置0,利用指令中的低7位地址直接訪問MMR。

高9位數(shù)據(jù)存儲器地址置0,按照當前輔助寄存器ARx的低7位地址訪問MMR。

第6章TMS320C54x的指令系統(tǒng)

’C54x共有8條指令可以進行MMR尋址:

LDMMMR,dst

;將MMR加載到累加器

MVDMdmad,MMR

;數(shù)據(jù)存儲器向MMR傳送數(shù)據(jù)

MVMDMMR,dmad

;MMR向指定地址傳送數(shù)據(jù)

MVMMMMRx,MMRy

;MMRx向MMRy傳送數(shù)據(jù)

POPMMMR

;將數(shù)據(jù)從棧頂彈至MMR

PSHMMMR

;將MMR數(shù)據(jù)壓入堆棧

STLMsrc,MMR

;累加器低位存入MMR

STM#lk,MMR

;長立即數(shù)lk存入MMR第6章TMS320C54x的指令系統(tǒng)6.2.7堆棧尋址

堆棧:當發(fā)生中斷或子程序調(diào)用時,用來自動保存PC內(nèi)容以及保護現(xiàn)場或傳送參數(shù)。

’C54x的堆棧是向低地址生長,并由16位堆棧指針SP管理。SP總是指向棧頂。

堆棧尋址:利用SP指針,按照先進后出的原則進行尋址。

當進棧操作時,SP先減小,然后數(shù)據(jù)進入堆棧;

當出棧操作時,數(shù)據(jù)先出棧,然后SP增加。

第6章TMS320C54x的指令系統(tǒng)

采用堆棧尋址的指令:

PSHDSmem

;將Smem中的數(shù)據(jù)壓入堆棧

PSHMMMR

;將MMR中的數(shù)據(jù)壓入堆棧

POPDSmem

;將數(shù)據(jù)從棧頂彈至Smem中

POPMMMR

;將數(shù)據(jù)從棧頂彈至MMR中第6章TMS320C54x的指令系統(tǒng)6.3TMS320C54x的指令系統(tǒng)

’C54x的指令系統(tǒng)共有129條基本指令,由于操作數(shù)的尋址方式不同,由它們可以派生多至205條指令。按指令的功能可分成四大類:算術運算指令邏輯運算指令數(shù)據(jù)傳送指令程序控制指令第6章TMS320C54x的指令系統(tǒng)6.4.1算術運算指令

算術運算指令是實現(xiàn)數(shù)學計算的重要指令集合?!疌54x的算術指令具有運算功能強、指令豐富等特點。

包括:加法指令(ADD)減法指令(SUB)乘法指令(MPY)乘法-累加指令(MAC)乘法-減法指令(MAS)雙字運算指令(DADD)專用指令第6章TMS320C54x的指令系統(tǒng)1.加法指令

’C54x的加法指令共有13條,可完成兩個操作數(shù)的加法運算、移位后的加法運算、帶進位的加法運算和不帶符號位擴展的加法運算。操作碼:

ADD、ADDC、ADDM、ADDS

指令格式:操作碼源操作數(shù)

[,移位數(shù)]

,目的操作數(shù)

源操作數(shù):

Smem、Xmem、Ymem、#lk、src

移位數(shù):

TS、16、SHIFT、SHFT、ASM

目的操作數(shù):src、dst、Smem

第6章TMS320C54x的指令系統(tǒng)

ADDSmemXmem#lksrcADDSmem,srcADDSmem,TS,srcADDSmem,16,src[,dst]ADDSmem,[,SHIFT],src[,dst]

操作碼

源操作數(shù)

指令格式ADDXmem,SHIFT,srcADDXmem,Ymem,dstADD#lk[,SHFT],src[,dst]ADD#lk,16,src[,dst]ADDsrc,[,SHIFT][,dst]ADDsrc,ASM[,dst]以下10條指令功能是將一個16位的數(shù)加到選定的累加器中,這16位數(shù)可以為下列四種情況之一。第6章TMS320C54x的指令系統(tǒng)

ADDC

操作碼

源操作數(shù)

指令格式

Smem

ADDCSmem,src

ADDM

#lk

ADDC#lk,Smem

ADDS

Smem

ADDCSmem,src

其中,ADD為不帶進位加法,ADDC用于帶進位的加法運算(如32位擴展精度加法),ADDS用于無符號數(shù)的加法運算,而ADDM專用于立即數(shù)的加法。

第6章TMS320C54x的指令系統(tǒng)表6.9加法指令序號指令功能說明1ADDSmem

,srcsrc=src+Smem操作數(shù)加至累加器2ADDSmem

,TS,srcsrc=src+Smem<<TS操作數(shù)移位后加至累加器3ADDSmem

,16,src[,dst]dst=src+Smem<<16操作數(shù)左移16位加至累加器4ADDSmem,[,SHIFT],src[,dst]dst=src+Smem<<SHIFT操作數(shù)移位后加至累加器5ADDXmem

,SHFT,src

src=src+Xmem<<SHFT操作數(shù)移位后加至累加器6ADDXmem

,Ymem

,dstdst=Xmem<<16+Ymem<<16兩操作數(shù)分別左移16位后相加送至累加器7ADD#lk,[,SHFT],src[,dst]dst=src+#lk<<SHFT長立即數(shù)移位后加至累加器8ADD#lk,16,src[,dst]dst=src+#lk<<16長立即數(shù)左移16位加至累加器9ADDsrc,[,SHIFT][,dst]dst=dst+src<<SHIFT累加器移位后相加10ADDsrc,ASM[,dst]dst=dst+src<<ASM累加器按ASM移位后相加11ADDCSmem

,srcsrc=src+Smem+C操作數(shù)帶進位加至累加器12ADDM#lk,SmemSmem=Smem+#lk長立即數(shù)加至存儲器13ADDSSmem

,srcsrc=src+uns(Smem)操作數(shù)符號位不擴展加至累加器第6章TMS320C54x的指令系統(tǒng)2.減法指令

’C54x的減法指令共有13條,其中,SUB為不帶借位的減法,SUBS用于無符號數(shù)的減法運算,SUBB用于帶借位的減法運算(如32位擴展精度的減法)。而SUBC為條件減法,src減去Smem左移15位后的值,若結(jié)果大于0,則結(jié)果左移1位再加1,最終結(jié)果存放到src中;否則src左移1位并存入src中。

SUBSUBBSUBCSUBS

指令格式:操作碼源操作數(shù)

[,移位數(shù)]

,目的操作數(shù)

SmemXmemYmem#lksrc

TS16SHIFTSHFTASM

srcdst

第6章TMS320C54x的指令系統(tǒng)

SUBSmemXmem#lksrcSUBSmem,srcSUBSmem,TS,srcSUBSmem,16,src[,dst]SUBSmem,[,SHIFT],src[,dst]操作碼源操作數(shù)指令格式SUBXmem,SHIFT,srcSUBXmem,Ymem,dstSUB#lk[,SHFT],src[,dst]SUB#lk,16,src[,dst]SUBsrc,[,SHIFT][,dst]SUBsrc,ASM[,dst]第6章TMS320C54x的指令系統(tǒng)

SUBB

操作碼

源操作數(shù)目的操作數(shù)

指令格式Smem

SUBBSmem,src

SUBC

Smem

SUBCSmem,src

SUBS

Smem

ADDCSmem,src

src

src

src

第6章TMS320C54x的指令系統(tǒng)表6.10減法指令序號指令功能說明1SUBSmem

,srcsrc=src-Smem從累加器中減去操作數(shù)2SUBSmem

,TS,srcsrc=src-Smem<<TS從累加器中減去移位后的操作數(shù)3SUBSmem

,16,src[,dst]dst=src-Smem<<16累加器減去左移16位的操作數(shù)4SUBSmem,[,SHIFT],src[,dst]dst=src-Smem<<SHIFT操作數(shù)移位后與累加器相減5SUBXmem

,SHFT,src

src=src-Xmem<<SHFT操作數(shù)移位后與累加器相減6SUBXmem

,Ymem

,dstdst=Xmem<<16-Ymem<<16兩操作數(shù)分別左移16位后相減送至累加器7SUB#lk,[,SHFT],src[,dst]dst=src-#lk<<SHFT長立即數(shù)移位后與累加器相減8SUB#lk,16,src[,dst]dst=src-#lk<<16長立即數(shù)左移16位與累加器相減9SUBsrc,[,SHIFT][,dst]dst=dst-src<<SHIFT目標累加器減去移位后的源累加器10SUBsrc,ASM[,dst]dst=dst-src<<ASM源累加器按ASM移位與目標累加器相減11SUBBSmem

,srcsrc=src-Smem-C累加器與操作數(shù)帶借位減操作12SUBCSmem

,srcIf(src-Smem<<15)>0,src=(src-Smem<<15)<<1+1Elsesrc=src<<1條件減法操作13SUBSSmem

,srcsrc=src-uns(Smem)累加器與符號位不擴展的操作數(shù)減第6章TMS320C54x的指令系統(tǒng)3.乘法指令

’C54x的指令系統(tǒng)提供了10條乘法運算指令,其運算結(jié)果都是32位的,存放在累加器A和B中。而參與運算的乘數(shù)可以是T寄存器、立即數(shù)、存儲單元和累加器A或B的高16位。格式:操作碼源操作數(shù)1

[,源操作數(shù)2]

,目的操作數(shù)

操作碼:MPY、MPYR、MPYA、MPYU、SQUR

源操作數(shù)1:Smem、Xmem、#lk

源操作數(shù)2:Ymem、#lk

目的操作數(shù):dst

在TMS320C54x中,小數(shù)的乘法與整數(shù)乘法基本相同,只是由于兩個有符號的小數(shù)相乘,其結(jié)果的小數(shù)點的位置在次高位的后面,所以必須左移一次。

第6章TMS320C54x的指令系統(tǒng)

MPY

SmemXmem#lkMPYSmem,dstMPYSmem,#lk,dst

操作碼

源操作數(shù)指令格式MPYXmem,Ymem,dstMPY#lk,dst

MPYA

MPYAdstMPYASmem第6章TMS320C54x的指令系統(tǒng)

MPYR

操作碼

源操作數(shù)目的操作數(shù)

指令格式Smem

MPYRSmem,dst

MPYU

Smem

MPYUSmem,dst

SQUR

Smem

SQURSmem,dst

dst

dst

dst

A

dst

SQURA,dst

第6章TMS320C54x的指令系統(tǒng)表6.11乘法指令序號指令功能說明1MPYSmem

,dstdst=T*SmemT寄存器與操作數(shù)相乘2MPYRSmem

,dstdst=rnd(T*Smem)T寄存器與操作數(shù)帶舍入相乘3MPYXmem

,Ymem

,dst

dst=Xmem

*Ymem,T=Xmem兩操作數(shù)相乘4MPYSmem

,#lk,dstdst=Smem

*#lk,T=Smem長立即數(shù)與操作數(shù)相乘5MPY#lk,dstdst=T*#lk長立即數(shù)與T寄存器相乘6MPYA

dstdst=T*A(32-16)T寄存器與累加器A高位相乘7MPYASmemB=Smem*A(32-16),T=Smem操作數(shù)與累加器A高位相乘8MPYUSmem

,dstdst=uns(T)*uns(Smem)無符號數(shù)相乘9SQURSmem

,dstdst=Smem

*Smem,T=Smem操作數(shù)的平方10SQURA,dstdst=A(32-16)*A(32-16)累加器A高位的平方第6章TMS320C54x的指令系統(tǒng)4.乘加和乘減指令

這類指令共計22條,除了完成乘法運算外,還具有加法或減法運算。因此,在一些復雜的算法中,可以大大提高運算速度。

參與運算的乘數(shù)可以是T寄存器、立即數(shù)、存儲單元和累加器A或B的高16位。

乘法運算結(jié)束后,再將乘積與目的操作數(shù)進行加法或減法運算。第6章TMS320C54x的指令系統(tǒng)格式:操作碼源操作數(shù)1

[,源操作數(shù)2]

,目的操作數(shù)

操作碼:MAC、MACR、MACA、MACAR、

MACD、MACP、MACSU、MAS、MASR源操作數(shù)1:Smem、Xmem、#lk、T

源操作數(shù)2:Ymem、#lk、pmad

目的操作數(shù):src、dst、B

第6章TMS320C54x的指令系統(tǒng)

MAC

SmemXmem#lkMACSmem,srcMACSmem,#lk,src[,dst]

操作碼

源操作數(shù)

指令格式MACXmem,Ymem,src[,dst]MAC#lk,src[,dst]

MACR

MACRSmem,srcMACRXmem,Ymem,src[,dst]SmemXmem第6章TMS320C54x的指令系統(tǒng)

操作碼

源操作數(shù)1源操作數(shù)2

指令格式

MACA

MACASmem[,B]MACAT,src[,dst]SmemT

MACAR

MACARSmem[,B]MACART,src[,dst]SmemT

MACD

MACDSmem,pmad,srcSmempmad

MACP

MACPSmem,pmad,srcpmad

MACSU

MACSUXmem,Ymem,srcXmemYmemSmem第6章TMS320C54x的指令系統(tǒng)

操作碼

源操作數(shù)指令格式

MAS

MASSmem,srcMASXmem,Ymem,src[,dst]SmemXmem

MASR

MASRSmem,srcMASRXmem,Ymem,src[,dst]SmemXmem第6章TMS320C54x的指令系統(tǒng)表6.12乘加和乘減指令

序號指令功能說明1MACSmem

,srcsrc=src+T*Smem操作數(shù)與T相乘加到累加器2MACXmem

,Ymem

,src[,dst]dst=src+Xmem

*Ymem,T=Xmem兩操作數(shù)相乘加到累加器3MAC#lk,src

[,dst]dst=src+T*#lk長立即數(shù)與T相乘加到累加器4MACSmem

,#lk,src

[,dst]dst=src+Smem*#lk,T=Smem長立即數(shù)與操作數(shù)相乘加到累加器5MACRSmem

,srcsrc=rnd(src+T*Smem)操作數(shù)與T相乘加到累加器(帶舍入)6MACRXmem

,Ymem

,src[,dst]dst=rnd(src+Xmem

Ymem),T=Xmem兩操作數(shù)相乘加到累加器(帶舍入)7MACASmem[,B]B=B+Smem*A(32-16),T=Smem操作數(shù)與A高位相乘加到累加器B8MACAT,src

[,dst

]dst=src+T*A(32-16)T與A的高位相乘加到累加器9MACARSmem[,B]B=rnd(B+Smem*A(32-16)),T=Smem操作數(shù)與累加器A高位相乘加到累加器B(帶舍入)10MACART,src

[,dst

]dst=rnd(src+T*A(32-16))T與A高位相乘加到累加器(帶舍入)11MACDSmem

,Pmad

,srcsrc=src+Smem*Pmad,T=Smem,(Smem+1)=Smem操作數(shù)與程序存儲器內(nèi)容相乘后加到累加器并延遲12MACPSmem

,Pmad

,srcsrc=src+Smem*Pmad,T=Smem操作數(shù)與程序存儲器內(nèi)容相乘后加到累加器第6章TMS320C54x的指令系統(tǒng)序號指令功能說明13MACSUXmem

,Ymem

,srcsrc=src+uns(Xmem)*Ymem,T=Xmem無符號操作數(shù)與有符號操作數(shù)相乘后加到累加器14MASSmem

,srcsrc=src-T*Smem累加器減去T與操作數(shù)的乘積15MASXmem

,Ymem

,src[,dst]dst=src-

Xmem

*Ymem,T=Xmem累加器減去兩操作數(shù)的乘積16MASRXmem

,Ymem

,src[,dst]dst=rnd(src-Xmem

*Ymem),T=Xmem累加器減兩操作數(shù)的乘積(舍入)17MASRSmem

,srcsrc=rnd(src-T*Smem)累加器減T與操作數(shù)的乘積(舍入)18MASASmem

[,B]B=B-Smem*A(32-16),T=Smem累加器B減去操作數(shù)與累加器A高位的乘積19MASAT,src

[,dst

]dst=src-T*A(32-16)累加器減去T與A高位的乘積20MASART,src

[,dst

]dst=rnd(src-T*A(32-16))累加器減T與A高位的乘積(舍入)21SQURA

Smem,srcsrc=src+Smem*Smem,T=Smem操作數(shù)的平方與累加器相加22SQURS

Smem,srcsrc=src-Smem*Smem,T=Smem操作數(shù)的平方與累加器相減表6.12乘加和乘減指令(續(xù))

第6章TMS320C54x的指令系統(tǒng)5.雙字算術運算指令

雙字算術運算指令共計6條,完成雙16位數(shù)的加堿運算。①DADDLmem,src[,dst]功能:

若C16=0,則完成雙精度加法

dst

=Lmem

+src

;若C16=1,則雙16位數(shù)加法

dst(39-16)=Lmem(31-16)+src(31-16)dst(15-0)=Lmem(15-0)+src(15-0)第6章TMS320C54x的指令系統(tǒng)②DADSTLmem,dst功能:

若C16=0,則完成雙精度加法

dst

=Lmem

+(T<<16+T);若C16=1,則雙16位數(shù)加/減法

dst(39-16)=Lmem(31-16)+Tdst(15-0)=Lmem(15-0)-T第6章TMS320C54x的指令系統(tǒng)③DRSUBLmem,src功能:

若C16=0,則完成雙精度減法

src

=Lmem

-src

;若C16=1,則完成雙16位數(shù)減法

src(39-16)=Lmem(31-16)-src(31-16)src(15-0)=Lmem(15-0)-src(15-0)第6章TMS320C54x的指令系統(tǒng)④DSADTLmem,dst功能:功能:

若C16=0,則完成雙精度減法

dst

=Lmem

-(T<<16+T);若C16=1,則完成雙16位數(shù)加/減法

dst(39-16)=Lmem(31-16)-Tdst(15-0)=Lmem(15-0)+T第6章TMS320C54x的指令系統(tǒng)⑤DSUBLmem,src功能:

若C16=0,則雙精度方式,累加器減去32位數(shù)

src

=src

-

Lmem

;若C16=1,則雙16位方式,完成雙16位數(shù)減法

src(39-16)=src(31-16)-

Lmem(31-16)src(15-0)=src(15-0)

-

Lmem(15-0)第6章TMS320C54x的指令系統(tǒng)⑥D(zhuǎn)SUBTLmem,dst功能:功能:

若C16=0,則雙精度操作數(shù)減去T值

dst

=Lmem

-(T<<16+T)

若C16=1,則雙16位操作數(shù)減去T值

dst(39-16)=Lmem(31-16)-Tdst(15-0)=Lmem(15-0)-T第6章TMS320C54x的指令系統(tǒng)6.特殊運算指令特殊運算指令共15條。

序號指令功能說明1ABDSTXmem

,YmemB=B+|A(32-16)|,A=(Xmem-Ymem)<<16絕對距離2ABSsrc

[,dst

]dst

=|src|累加器求絕對值3CMPLsrc

[,dst

]dst

=src累加器求反4DELAYSmem(Smem

+1)=Smem存儲單元延遲5EXPsrcT=帶符號數(shù)(src)-8求累加器的指數(shù)6FIRSXmem

,Ymem,

PmadB=B

–A*Pmad,A=(Xmem+Ymem)<<16對稱FIR濾波7LMSXmem

,YmemB=B+

Xmem

*Ymem,A=(A+Xmem<<16)+215求最小均方值第6章TMS320C54x的指令系統(tǒng)序號指令功能說明8MAXdstdst

=max(A,B)求A和B的最大值9MINdstdst

=min(A,B)求A和B的最小值10NEGsrc

[,dst

]dst

=-src累加器變負11NORMsrc

[,dst

]dst

=src<<TS,dst

=norm(src,T)歸一化12POLYSmem

B=Smem<<16,A=rnd(A*T+B)求多項式的值13RNDsrc

[,dst

]dst

=src

+215累加器舍入運算14SATsrc

Saturate(src)累加器飽和運算15SQDSTXmem

,Ymem

B=B+

A(32-16)*A(32-16)A=(Xmem-Ymem)<<16求距離的平方第6章TMS320C54x的指令系統(tǒng)6.4.2邏輯運算指令

’C54x的指令系統(tǒng)具有豐富的邏輯運算指令。

包括:與運算指令(AND)或運算指令(OR)異或運算指令(XOR)移位操作指令(ROL)測試操作指令(BIT)第6章TMS320C54x的指令系統(tǒng)1.與運算指令

操作碼:

AND、ANDM

指令格式:操作碼源操作數(shù)

[,移位數(shù)]

,目的操作數(shù)

源操作數(shù):

Smem、#lk、src

移位數(shù):

16、SHIFT、SHFT

目的操作數(shù):src、dst、Smem

第6章TMS320C54x的指令系統(tǒng)與邏輯運算指令共有5條。

序號指令功能說明1ANDSmem

,srcsrc

=src&Smem源操作數(shù)與累加器與運算2AND#lk[,SHFT],src[,dst]dst

=src&#lk<<SHFT長立即數(shù)移位后與累加器與運算3AND#lk,16,src[,dst]dst

=src&#lk<<16長立即數(shù)左移16位與累加器與運算4ANDsrc[,SHIFT][,dst]dst=dst&src<<SHIFT源累加器移位后與目標累加器與運算5ANDM#lk,SmemSmem

=Smem&#lk目標操作數(shù)與長立即數(shù)與運算第6章TMS320C54x的指令系統(tǒng)2.或運算指令

指令格式:操作碼源操作數(shù)

[,移位數(shù)]

,目的操作數(shù)

1Smem[,SHFT],src

或運算指令共計5條。OR2

#lk,src[,dst]OR

163

#lk,src[,dst]OR[,SHIFT]4

src

[,dst]OR5

#lk

,SmemORM第6章TMS320C54x的指令系統(tǒng)序號指令功能說明1ORSmem

,srcsrc

=src

|Smem源操作數(shù)與累加器或運算2OR#lk[,SHFT],src[,dst]dst

=src

|#lk<<SHFT長立即數(shù)移位后與累加器或運算3OR#lk,16,src[,dst]dst

=src

|#lk<<16長立即數(shù)左移16位與累加器或運算4ORsrc[,SHIFT][,dst]dst=dst|src<<SHIFT源累加器移位后與目標累加器或運算5ORM#lk,SmemSmem

=Smem

|#lk目標操作數(shù)與長立即數(shù)或運算第6章TMS320C54x的指令系統(tǒng)3.異或運算指令

指令格式:操作碼源操作數(shù)

[,移位數(shù)]

,目的操作數(shù)

異或運算指令共計5條。

1Smem[,SHFT],srcXOR2

#lk,src[,dst]XOR

163

#lk,src[,dst]XOR[,SHIFT]4

src

[,dst]XOR5

#lk

,SmemXORM第6章TMS320C54x的指令系統(tǒng)序號指令功能說明1XORSmem

,srcsrc

=src

Smem源操作數(shù)與累加器異或運算2XOR#lk[,SHFT],src[,dst]dst

=src

#lk<<SHFT長立即數(shù)移位后與累加器異或運算3XOR#lk,16,src[,dst]dst

=src

#lk<<16長立即數(shù)左移16位與累加器異或運算4XORsrc[,SHIFT][,dst]dst=dst

src<<SHIFT源累加器移位后與目標累加器異或運算5XORM#lk,SmemSmem

=Smem

#lk目標操作數(shù)與長立即數(shù)異或運算第6章TMS320C54x的指令系統(tǒng)4.移位操作指令

指令格式:操作碼源操作數(shù)

[,移位數(shù)]

[,目的操作數(shù)]

’C54x共有6條移位指令,可實現(xiàn)帶進位位循環(huán)移位、帶TC位循環(huán)左移、算術移位、條件移位和邏輯移位等操作。操作碼:

ROL、ROLTC、ROR、SFTA、SFTC、SFTL

源操作數(shù):

src

移位數(shù):

SHIFT

目的操作數(shù):dst

第6章TMS320C54x的指令系統(tǒng)①帶進位位循環(huán)左移操作數(shù)src:累加器A或B指令功能:

累加器src與進位位C循環(huán)左移一位。

執(zhí)行過程:C→src(0)src(30~0)→src(31~1)src(31)→C0→

src(39~32)

指令格式:ROLsrc

;C的值移入src的最低位;src左移一位;src的最高位移入C;src的保護位清0第6章TMS320C54x的指令系統(tǒng)②帶測試位循環(huán)左移操作數(shù)src:累加器A或B指令功能:

累加器src與測試位TC循環(huán)左移一位。

執(zhí)行過程:

指令格式:ROLTCsrc

39~32310累加器src保護位TC①

TC的值移入src的最低位

累加器src左移一位②③

src的最高位移入TC③④

src的保護位清0④

0

第6章TMS320C54x的指令系統(tǒng)③

帶進位位循環(huán)右移操作數(shù)src:累加器A或B指令功能:

累加器src與進位位C循環(huán)右移一位。

執(zhí)行過程:

指令格式:RORsrc

C的值移入src的31位②

累加器src右移一位③

src的最低位移入C④

src的保護位清039~32310累加器src保護位C①②③④

0

第6章TMS320C54x的指令系統(tǒng)④

算術移位操作數(shù)src:累加器A或B指令功能:

根據(jù)SHIFT,src的內(nèi)容算術移位。

指令格式:SFTAsrc,SHIFT[,dst]

If

SHIFT<0Thensrc((-SHIFT)-1)→C

src(39~0)<<SHIFT→src或dst

IfSXM=1Thensrc(39)→src(39~(39+SHIFT+1))

或src(39)→dst(39~(39+SHIFT+1))Else0→src(39~(39+SHIFT+1))

或0→dst(39~(39+SHIFT+1))Elsesrc(39-SHIFT)→C

(src)>>SHIFT→src或dst0→src((SHIFT-1)~0)

或0→dst((SHIFT-1)~0)第6章TMS320C54x的指令系統(tǒng)算術移位執(zhí)行過程:當SHIFT<0時,進行算術右移

1)src的第(-SHIET-1)位復制到進位位C;

2)40位src右移SHIFT位,結(jié)果存入src或dst;

3)符號擴展處理

若SXM=1,進行符號位擴展。src(39)寫入dst(39~(39+SHIFT+1))

若SXM=0,不進行符號位擴展。0寫入dst(39~(39+SHIFT+1))當SHIFT>0時,進行算術左

1)src的第(39-SHIET)位復制到進位位C

2)40位src左移SHIFT位,結(jié)果存入src或dst

3)將0置入dst的低SHIFT的各位,0寫入dst((SHIFT-1)~0)第6章TMS320C54x的指令系統(tǒng)⑤條件移位操作數(shù)src:累加器A或B指令功能:

指令格式:SFTCsrc

Ifsrc=0Then1→

TCElseIfsrc(31)=src(30)Thensrc<<1→

src0→TCElse1→TC第6章TMS320C54x的指令系統(tǒng)條件移位執(zhí)行過程:

當src=0時,將1寫入測試位TC;

當src≠0時,進行條件移位。

若src有兩個有效符號位,則移位。

32位src左移一位;保護位src(39~32)不變;

0寫入測試位TC。

若src只有一個符號位,則不移位。

1寫入測試位TC。第6章TMS320C54x的指令系統(tǒng)⑥

邏輯移位操作數(shù)src:累加器A或B

指令格式:SFTLsrc,SHIFT[,dst]指令功能:

IfSHIFT<0Thensrc((-SHIFT)-1)→Csrc(31~0)<<SHIFT→

dst0→dst(39~(31+SHIFT+1)IfSHIFT=0Then0→C

Elsesrc(31-(SHIFT-1))→Csrc((31-SHIFT)~0)<<SHIFT→

dst0→dst((SHIFT-1~0)

0→dst(39~32)第6章TMS320C54x的指令系統(tǒng)執(zhí)行過程:若SHIFT<0,則進行邏輯右移。

src的第(-SHIFT-1)位復制到進位位C;

src的低32位右移SHIFT位,結(jié)果存入dst;

0寫入dst(39~31+(SHIFT+1))。

若SHIFT=0,不進行邏輯移位,

溫馨提示

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

評論

0/150

提交評論