TMSCX dsp原理及應用 汪春梅新的_第1頁
TMSCX dsp原理及應用 汪春梅新的_第2頁
TMSCX dsp原理及應用 汪春梅新的_第3頁
TMSCX dsp原理及應用 汪春梅新的_第4頁
TMSCX dsp原理及應用 汪春梅新的_第5頁
已閱讀5頁,還剩129頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學1TMSCXdsp原理及應用汪春梅新的3.1尋址方式

尋址方式:

是指如何指定指令和操作數(shù)所在存儲空間的地址。C55xDSP支持三種尋址模式:絕對尋址模式:

指令里有一個地址的全部或者部分,指示目的地址;直接尋址模式:

使用偏移地址指示目的地址;間接尋址模式:

使用指針指示目的地址。

第1頁/共134頁支持尋址模式操作數(shù)的指令應具有下表所示的句法元素:句法元素描述Smem指令語句里含有Smem時,該指令可以訪問數(shù)據(jù)存儲器、I/O空間或者MMR中的一個單字(16bits)。寫該指令語句時,用一個兼容的尋址模式操作數(shù)來代替Smem。Lmem指令語句里含有Lmem時,該指令可以訪問數(shù)據(jù)存儲器或者MMR中的一個長字(32bits)。寫該指令語句時,用一個兼容的尋址模式操作數(shù)來代替Smem。XmemandYmem指令語句里含有XmemandYmem時,該指令可以對數(shù)據(jù)存儲器同時作兩次16bits的訪問。寫該指令語句時,用兼容的尋址模式操作數(shù)來代替XmemandYmem。Cmem指令語句里含有Cmem時,該指令可以訪問數(shù)據(jù)存儲器的單字(16bits)。寫該指令語句時,用一個兼容的尋址模式操作數(shù)來代替Cmem。Baddr指令語句里含有Baddr時,該指令可以訪問累加器(AC0~AC3)、輔助寄存器(AR0~AR7)或T0~T3中的一個bit或者兩個bit。只有寄存器bit測試/設置/清除/取反指令支持Baddr。寫任意一條此類指令語句時,用一個兼容的尋址模式操作數(shù)來代替Baddr

。第2頁/共134頁3.1.1絕對尋址模式尋址模式功能k16絕對尋址用DPH的7-bit寄存器,和一個16-bit無符號常數(shù)構成一個23-bit數(shù)據(jù)空間地址。該模式可以訪問存儲器或者MMR。k23絕對尋址指定一個23-bit無符號常數(shù)作為全地址。該模式可以訪問存儲器或者MMR。I/O絕對尋址指定一個16bit無符號常數(shù)作為I/O地址,該模式可以訪問I/O空間。第3頁/共134頁k16絕對尋址其操作數(shù)為*abs16(#k16),其中,k16為16位無符號常數(shù)。將7位的寄存器DPH和k16級聯(lián)形成一個23位的地址,用于對數(shù)據(jù)空間的訪問。該模式可以訪問一個數(shù)據(jù)存儲器單元或者MMR。k16絕對尋址模式

第4頁/共134頁k16絕對尋址其操作數(shù)為*abs16(#k16),其中,k16為16位無符號常數(shù)。將7位的寄存器DPH和k16級聯(lián)形成一個23位的地址,用于對數(shù)據(jù)空間的訪問。該模式可以訪問一個數(shù)據(jù)存儲器單元或者MMR。指令實例:(1)語法格式:MOVSmem,dst

指令語句:MOV*abs16(#2002h),T2 指令實例:(2)語法格式:MOVK16,Smem

指令語句:MOV#248,*abs16(#2002h)

第5頁/共134頁k16絕對尋址程序執(zhí)行的結果是:T2=

。匯編語言k16絕對尋址程序閱讀與分析:

.defstart

.mmregs

.textstart:MOV

#03H

,

DPH

MOV

#24

,

*abs16(#2002h)

MOV

*abs16(#2002h)

,

T2here:bhere操作數(shù)*abs16(#2002h)的尋址地址:

。032002H0018H第6頁/共134頁k23絕對尋址操作數(shù)為*(#k23),其中,k23為23位的無符號常數(shù),作為所尋址數(shù)據(jù)空間的地址。k23絕對尋址模式

第7頁/共134頁I/O絕對尋址對于代數(shù)格式匯編語言指令,操作數(shù)是*port(#k16),其中k16為16位無符號常數(shù),用于指明16位I/O端口地址。使用助記符格式匯編語言指令,其操作數(shù)是port(#k16)(操作數(shù)前沒有*)。

I/O絕對尋址第8頁/共134頁3.1.2直接尋址模式

直接尋址的分類見下表:尋址模式描述DP直接尋址使用DPH指定的主數(shù)據(jù)頁,和DP相連接形成23位數(shù)據(jù)空間地址,用于訪問存儲器和MMR。SP直接尋址使用SPH指定的主數(shù)據(jù)頁,和SP相連接形成23位地址,用于訪問數(shù)據(jù)存儲器里的堆棧值。寄存器bit直接尋址用一個偏移來指定一個bit地址。該模式用于訪問一個寄存器bit或者兩個相鄰的寄存器bit。PDP直接尋址用PDP(外設數(shù)據(jù)頁寄存器)和一個偏移,來指定一個I/O端口地址。該模式用來訪問I/O空間的單元。第9頁/共134頁3.1.2直接尋址模式

直接尋址中的DP直接尋址和SP尋址與狀態(tài)寄存器ST1-55的CPL位有關。當CPL=0采用DP直接尋址模式,操作數(shù)@Daddr當CPL=1采用SP直接尋址模式,操作數(shù)*SP(offset)

直接尋址模式中的寄存器bit直接尋址和PDP直接尋址與狀態(tài)寄存器ST1-55的CPL位無關。第10頁/共134頁3.1.2直接尋址模式

一、DP直接尋址

DP直接尋址的23位地址構成:高7位由DPH提供,用來確定主數(shù)據(jù)頁;其余低16位為以下兩部分的和:(1)DP里的值。DP定義了在主數(shù)據(jù)頁內(nèi)的起始地址。(2)匯編程序計算的7-bit偏移量(Doffset)。DP直接尋址模式

第11頁/共134頁DP直接尋址偏移量(Doffset)的計算訪問對象計算Doffset說明數(shù)據(jù)存儲器Doffset=(Daddr-.dp)&7FhDaddr是讀/寫操作的16bit地址,.dp是利用匯編偽指令分配的數(shù)值(一般DP的匹配),&表示按位“與”MMRDoffset=Daddr&7FhDaddr是讀/寫操作的16bit地址,&表示按位“與”,mmap()迫使CPU把數(shù)據(jù)頁視為0來操作。Doffset的計算有兩種情況:表2-1DP直接尋址Doffset的計算一、DP直接尋址第12頁/共134頁DP直接尋址偏移量(Doffset)的計算

DP直接尋址Doffset的計算代碼示例:TheassemblercalculatesDoffset:Doffset=(1)尋址數(shù)據(jù)存儲器Atruntime,the23-bitdata-spaceaddressisgenerated:23-bitaddress=(Daddr–.dp)&7Fh=(FFF4h–FFF0h)&7Fh=04hDPH:(DP+Doffset)=03:(FFF0h+0004h)=03FFF4hAMOV#03FFF0h,XDP.dp#0FFF0hMOV@0FFF4h,T2指令實例:;Maindatapageis03.Forrun-time,;DPisFFF0h.;Forassemblytime,.dpisFFF0h.;LoadT2withthevalueatlocal;addressFFF4h.分析:一、DP直接尋址第13頁/共134頁DP直接尋址偏移量(Doffset)的計算

DP直接尋址Doffset的計算代碼示例:匯編器計算偏移量:Doffset=(2)尋址MMR(memory-mappedregister)

程序運行時:(CPU:DPH=DP=0)23-bit地址產(chǎn)生如下:23-bitaddress=Daddr&7Fh=0010h&7Fh=10hDPH:(DP+Doffset)=00:(0000h+0010h)=000010hMOVmmap(@AR0),T2;LoadT2withthevalueinAR0.;mmap()qualifierindicatesaccesstoMMR.;AR0ismappedtoaddress000010hindataspace指令實例:分析:一、DP直接尋址第14頁/共134頁

二、SP直接尋址

SP直接尋址的23位地址構成:最高7位地址由寄存器SPH確定;低16位地址是SP值和指令里指定的7位偏移量之和。偏移量范圍是0~127。(由SPH和SP構成了擴展數(shù)據(jù)堆棧指針XSP)SP直接尋址模式第15頁/共134頁

二、SP直接尋址

SP直接尋址的23位地址構成:最高7位地址由寄存器SPH確定;低16位地址是SP值和指令里指定的7位偏移量之和。偏移量范圍是0~127。指令實例:(1)語法格式:MOVSmem,dst

指令語句:MOV*SP(5),T2 指令尋址分析:假設SPH=00h,SP=FF00h;

操作數(shù)*SP(5),T2的尋址地址為:指令執(zhí)行結果:將數(shù)據(jù)空間中地址為00FF05h單元內(nèi)的數(shù)值加載到T2寄存器中。 SPH:(SP+offset)=00FF05h;第16頁/共134頁三、寄存器位直接尋址模式操作數(shù)是@bitoffset只有寄存器的位測試、置位、清零、取反指令支持這種尋址模式。

說明:(1)偏移量bitoffset是從所要位尋址的寄存器最低位開始,如果bitoffset是3,則正在尋址該寄存器的第3位。(2)該尋址方式只能訪問以下的寄存器:AC0–AC3、AR0–AR7、T0–T3。指令實例:(1)語法格式:BSETBaddr,src

指令語句:BSET@0,AC3 CPU置位AC3的第零位。指令尋址分析:第17頁/共134頁四、PDP直接尋址

使用PDP尋址方式時,16bit的I/O空間地址的形成如下:64K×16bit的I/O空間被分成512個外設數(shù)據(jù)頁,每頁有128個字,用9位的外設數(shù)據(jù)頁指針寄存器PDP指出頁地址,同時由指令中指定的一個7位偏移值來表示頁內(nèi)的偏移量,從而形成一個16bit的外設I/O地址。第18頁/共134頁四、PDP直接尋址

圖2-5PDP直接尋址模式第19頁/共134頁四、PDP直接尋址

指令實例:用PDP直接尋址模式訪問I/O空間

語法:MOVSmem,dst

語句:MOVport(@0),T2;指令尋址地址:PDP:Poffset

語法:MOVk9,PDP

語句:MOV#008,PDP;PDP=008h 初始化PDP寄存器的語句:MOVport(@0),T2;PDP:Poffset=0400h

第20頁/共134頁3.1.3間接尋址模式CPU支持的間接尋址模式見下表:尋址模式功能AR間接尋址使用8個輔助寄存器(AR0~AR7)中的一個指向數(shù)據(jù)。CPU用輔助寄存器來產(chǎn)生地址的方式取決于訪問數(shù)據(jù)空間、單個寄存器位或者I/O空間。雙AR間接尋址地址產(chǎn)生過程與AR間接尋址模式相同。該模式用在訪問兩個或者多個數(shù)據(jù)存儲器單元的指令中。CDP間接尋址用系數(shù)數(shù)據(jù)指針(CDP)指向數(shù)據(jù)。CPU用CDP產(chǎn)生的地址的方式取決于訪問數(shù)據(jù)空間、單個寄存器位或者I/O空間。系數(shù)間接尋址地址產(chǎn)生過程與CDP間接尋址模式相同。該模式所支持的指令,可以在訪問數(shù)據(jù)存儲器里一個系數(shù)的同時,用雙AR間接尋址訪問另外兩個數(shù)據(jù)存儲器的值。第21頁/共134頁一、AR間接尋址模式通過一個輔助寄存器ARn(n=0,1,2,3,4,5,6,7)訪問數(shù)據(jù)。ST2-55的ARMS位決定AR間接尋址的操作類型ARMS=0,DSP模式:CPU提供DSP增強應用的高效執(zhí)行功能;ARMS=1,控制模式:CPU能夠優(yōu)化代碼的長度。ARn產(chǎn)生地址的方式取決于所訪問的類型,具體見下表:

表2-4AR間接尋址模式訪問的類型訪問ARn包含

數(shù)據(jù)存儲空間(存儲器或MMR)一個23位地址的低16位。高7位由ARnH來提供。單個寄存器bit(或相鄰兩個bit)一個bitI/O空間一個16-bit的I/O地址。3.1.3間接尋址模式

第22頁/共134頁3.1.3間接尋址模式

(1)AR間接尋址模式訪問數(shù)據(jù)存儲空間訪問數(shù)據(jù)空間時,使用一條裝入XARn的指令,語法:AMOVk23,XAdst

語句:AMOV#7FFFFFh,XAR0;將23位地址值(7FFFFFh)存入XAR0。第23頁/共134頁3.1.3間接尋址模式

(2)AR間接尋址模式訪問寄存器位

訪問寄存器位時,所選擇的輔助寄存器,ARn中只有一個bit。例如:AR6里是0,則AR6指向所操作寄存器的最低bit0。指令實例:(1)語法格式:BSETBaddr,src

指令語句:MOV#15,AR6BSET*AR6,AC3 CPU置位AC3的第15位。指令尋址分析:

說明:(1)該尋址方式只能訪問以下的寄存器:AC0–AC3、AR0–AR7、T0–T3。第24頁/共134頁3.1.3間接尋址模式

(3)AR間接尋址模式訪問I/O空間

訪問I/O空間時,用16bit地址訪問I/O空間里的字,輔助寄存器ARn中包含全部16-bitI/O地址。指令實例:用

AR間接尋址模式訪問I/O空間

語法:MOVSmem,dst

語句:MOVport(*ARn),T2;I/O空間中的值讀入到T2中。MOV#FF80h,AR6; MOVport(*AR6),T2;

MOVT2,port(*AR6+);

MOVport(*-AR6),T2; 作業(yè):分析每一條程序語句的運行結果。第25頁/共134頁3.1.3間接尋址模式

二、雙AR間接尋址模式訪問多數(shù)據(jù)空間

雙AR間接尋址模式用來:(1)執(zhí)行訪問兩個16-bit數(shù)據(jù)存儲器(

XmemandYmem)的指令。

例如指令語法:ADDXmem,Ymem,ACx(2)并行執(zhí)行兩條指令,每條指令必須單獨訪問一個存儲器SmemorLmem。例如指令語法:MOVSmem,dst||ANDSmem,src,dst提問:查本書附錄分析指令功能。提問:查本書附錄分析指令功能。第26頁/共134頁3.1.3間接尋址模式

三、CDP間接尋址模式CDP間接尋址模式使用系數(shù)數(shù)據(jù)寄存器CDP訪問數(shù)據(jù)空間、寄存器位和I/O空間。CDP間接尋址操作數(shù)第27頁/共134頁3.1.3間接尋址模式三、CDP間接尋址模式指令實例:用

CDP間接尋址模式訪問I/O空間

語法:MOVSmem,dst

語句:MOVport(*CDP),T2;I/O空間中的值(地址為CDP中的16-

;bit數(shù)值)讀入到T2中。指令實例:用

CDP間接尋址模式訪問數(shù)據(jù)空間

語法:MOVSmem,dst

語句:MOV(*CDP),T2;數(shù)據(jù)空間中的值(地址為XDP中的23-

;bit數(shù)值)讀入到T2中。

;CDPH:CDP=XCDP第28頁/共134頁3.1.3間接尋址模式

四、系數(shù)間接尋址模式

系數(shù)間接尋址模式的地址產(chǎn)生過程與CDP間接尋址模式數(shù)據(jù)空間的地址產(chǎn)生過程一樣。

支持以下算術指令:

FIR濾波、乘法、乘加、乘減、雙乘加或雙乘減。系數(shù)間接尋址模式功用:系數(shù)間接尋址模式主要是每個周期對3個存儲器操作數(shù)操作的指令。其中兩個操作數(shù)(Xmem和Ymem)用雙AR間接尋址模式訪問,第三個操作數(shù)Cmem用系數(shù)間接尋址模式訪問。第29頁/共134頁四、系數(shù)間接尋址模式3.1.3間接尋址模式指令實例:系數(shù)間接尋址模式

語法:MPYXmem,Cmem,ACx::MPYYmem,Cmem,ACy

語句:MPY*AR0,*CDP,AC0;兩個操作數(shù)(Xmem和Ymem)用;雙AR間接尋址模式訪問。

::MPY*AR1,*CDP,AC1;系數(shù)數(shù)據(jù)Cmem采用系數(shù)間接尋;址,地址為CDPH:CDP=XCDP。指令尋址分析:

CPU用XCDP處的系數(shù)乘以XAR0的值,并將結果存儲到AC0中;同時,用同一個系數(shù)乘以XAR1的值,將結果存儲到AC1中,不修改CDP的值。 指令說明:

Cmem必須放在與Xmem和Ymem不同的存儲器塊里。 第30頁/共134頁四、系數(shù)間接尋址模式3.1.3間接尋址模式系數(shù)間接尋址操作數(shù)

第31頁/共134頁3.2TMS320C55X的指令系統(tǒng)指令實例:MPY*AR0,*CDP,AC0::MPY*AR1,*CDP,AC1;隱含并行系數(shù)間接尋址方式一、C55X指令的并行執(zhí)行(1)單指令中內(nèi)置并行方式由一條指令同時執(zhí)行兩個不同的操作,通常用符號“::”來分割指令的兩個部分,這種并行方式也稱為隱含(內(nèi)置)并行方式。第32頁/共134頁3.2TMS320C55X的指令系統(tǒng)指令實例:MPYM*AR1-,*CDP,AC1||XORAR2,T1;第一條指令在D單元執(zhí)行乘法運算,第二條指令在A單元的ALU執(zhí)行一個邏輯操作。一、C55X指令的并行執(zhí)行(2)用戶自定義的兩條指令間的并行方式這類并行指令是用戶或者C語言編譯器定義的,是由兩條指令同時并行執(zhí)行兩個操作,通常用符號“||”來分隔這兩條指令。第33頁/共134頁3.2TMS320C55X的指令系統(tǒng)指令實例:MPYMT3=*AR3+,AC1,AC2||MOV#5,AR1;第一條指令隱含了內(nèi)置并行方式;第二條指令是用戶自定義的并行方式。一、C55X指令的并行執(zhí)行(3)內(nèi)置與用戶自定義混合的并行方式。指令分析:

MPYM[R][40][T3=][uns(]Xmem[)],[uns(]Ymem[)],ACx;

ACx=M40(rnd(uns(Xmem)*uns(Ymem)))[,T3=Xmem]第34頁/共134頁指令并行的規(guī)則兩條指令的總長度不能超過6個字節(jié)在指令的執(zhí)行過程中不存在操作器、地址產(chǎn)生單元、總線等資源沖突其中一條指令必須有并行使能位或兩條指令符合軟-雙并行條件3.2TMS320C55X的指令系統(tǒng)一、C55X指令的并行執(zhí)行第35頁/共134頁不能使用并行方式的情況

使用立即數(shù)尋址方式例如: *abs16(#k16);*(#k23);port(#k16); *ARn(K16);*+ARn(K16);*CDP(K16); *+CDP(K16)條件跳轉(zhuǎn)、條件調(diào)用、中斷、復位等程序控制指令例如:

BCCP24,cond;CALLCCP24,cond; IDLE;INTRk5;RESET;TRAPk5使用下列指令或者操作修飾符例如:

mmap();port();<instruction>.CR; <instruction>.LR第36頁/共134頁資源沖突C55x的資源運算器使用的操作器有:D單元的ALU、D單元的移位器、D單元的交換器、A單元的交換器、A單元的ALU和P單元地址產(chǎn)生單元兩個數(shù)據(jù)地址(DA)產(chǎn)生單元、一個系數(shù)地址(CA)產(chǎn)生單元和一個堆棧地址(SA)產(chǎn)生單元只能使用給定數(shù)量的數(shù)據(jù)地址產(chǎn)生單元總線兩個數(shù)據(jù)讀(DR)總線、一個系數(shù)讀(CA)總線、兩個數(shù)據(jù)寫(DW)總線、1個ACB總線(將D單元寄存器的內(nèi)容傳送給A單元和P單元的操作器)、一個KAB總線(立即數(shù)總線)和一個KDB總線(立即數(shù)總線)只能使用給定數(shù)量的總線第37頁/共134頁軟-雙并行條件

兩個存儲器操作數(shù)必須是雙AR間接尋址模式指令不能包含high_byte(Smem)和low_byte(Smem)指令不能讀、寫同一個存儲器單元如果指令中的k4的值是0~8,就會改變XDP的值,所以,不能與加載DP的指令組成并行指令讀重復計數(shù)寄存器(RPTC)指令不能和如下的任何一個單重復指令組成并行指令第38頁/共134頁算術運算指令位操作指令擴展輔助寄存器操作指令邏輯運算指令移動指令程序控制指令注:一條指令的屬性包括:指令,執(zhí)行的操作,是否有并行使能位,長度,周期,在流水線上的執(zhí)行階段以及執(zhí)行的功能單元等。

3.2TMS320C55X的指令系統(tǒng)二、TMS320C55XDSP的匯編指令第39頁/共134頁TMS320C55XDSP的匯編指令指令集中使用的術語、符號和縮寫

第40頁/共134頁指令集中使用的運算符第41頁/共134頁算術運算指令

加法指令加法指令有幾點說明:如果目的操作數(shù)是累加器ACx,在D單元的ALU中進行運算操作;如果目的操作數(shù)是輔助或臨時寄存器TAx,在A單元的ALU中進行運算操作;如果目的操作數(shù)是存儲器(Smem),在D單元的ALU中進行運算操作;如果是移位指令(16位立即數(shù)移位除外),在D單元移位器中進行運算操作狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:CARRY,C54CM,M40,SATA,SATD,SXMD執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY狀態(tài)位的含義見本書的附錄C:TMS320C55X的狀態(tài)寄存器。第42頁/共134頁加法指令

第43頁/共134頁舉例:ADD*AR3+,T0,T1;AR3間接尋址得到的內(nèi)容與T0的內(nèi)容相加,結果裝入T1,并將AR3增1。執(zhí)行前T00302330000EF00數(shù)據(jù)存儲器0302hAR3T1CARRYT00303330022001EF00數(shù)據(jù)存儲器0302hAR3T1CARRY執(zhí)行后第44頁/共134頁舉例:

ADD*AR1<<T0,AC1,AC0;將由AR1尋址得到的內(nèi)容左移T0位與AC1相加,結果裝入AC0CARRY=0見仿真結果Carry受bit31影響!第45頁/共134頁減法指令狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:CARRY,C54CM,M40,SATA,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY指令第46頁/共134頁減法指令

第47頁/共134頁舉例:

SUBuns(*AR1),BORROW,AC0,AC1

將CARRY位求反,AC0減去由AR1尋址得到的 內(nèi)容及CARRY的內(nèi)容,并將結果裝入AC1

第48頁/共134頁條件減法指令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í)行指令后會受影響的狀態(tài)位:ACOVy,CARRY第49頁/共134頁舉例:

SUBC*AR1,AC0,AC1

如果(AC0–(*AR1)<<#15)>=0,則AC1=(AC0–(*AR1)<<#15)<<#1+1,否則AC1=AC0<<#1第50頁/共134頁條件加減法指令狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATD,SXMD,TC1,TC2。執(zhí)行指令后會受影響的狀態(tài)位:ACOVy,CARRY第51頁/共134頁舉例:

ADDSUBCC*AR1,AC0,TC2,AC1

如果TC2=1,則AC1=AC0+(*AR1<<#16, 否則AC1=AC0-(*AR1)<<#16第52頁/共134頁乘法指令指令—在D單元的MAC中完成操作狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy第53頁/共134頁乘法指令

第54頁/共134頁舉例:

MPYAC1,AC0;AC1=AC0*AC1第55頁/共134頁乘加指令指令—在D單元的MAC中完成操作狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy第56頁/共134頁乘加指令第57頁/共134頁舉例1:

MACMR*AR1,*CDP,AC2 AC2=AC2+(*AR1)*(*CDP)第58頁/共134頁舉例2:

MACMRuns(*AR2+),uns(*AR3+),AC3 AC3=(*AR2)+(*AR3)+AC3,AR2=AR2+1, AR3=AR3+1

第59頁/共134頁乘減指令指令—在D單元的MAC中完成操作狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy第60頁/共134頁乘減指令

第61頁/共134頁舉例:

MASRT1,AC0,AC1 AC1=AC1-AC0*T1第62頁/共134頁雙乘加/減指令指令—利用D單元的兩個MAC在一個周期內(nèi)同時執(zhí)行兩個乘法或乘加/減運算狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,M40,RDM,SATD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy第63頁/共134頁舉例:

MASR40uns(*AR0),uns(*CDP),AC0 ::MACR40uns(*AR1),uns(*CDP),AC1

;AC0=AC0-uns(*AR0)*uns(*CDP) ;AC1=AC1-uns(*AR1)*uns(*CDP)第64頁/共134頁雙16位算術指令指令—利用D單元中的ALU在一個周期內(nèi)完成兩個并行的算術運算,包括一加一減、一減一加、兩個加法或兩個減法狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第65頁/共134頁雙16位算術指令第66頁/共134頁舉例:

ADDSUBT1,*AR1,AC1

;AC1(39-16)=(*AR1)+T1

;||AC1(15-0)=(*AR1)-T1第67頁/共134頁比較和選擇極值指令指令—在D單元的ALU中完成兩個并行16位極值選擇操作和一個40位極值選擇操作狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,SATD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVw,CARRY第68頁/共134頁比較和選擇極值指令第69頁/共134頁舉例:

MAXDIFFAC0,AC1,AC2,AC1第70頁/共134頁最大/最小值指令指令MAX[src,]dst;dst=max(src,dst)MIN[src,]dst;dst=min(src,dst)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:CARRY第71頁/共134頁舉例1:

MAXAC2,AC1

;由于(AC2)<(AC1),所以AC1保 持不變且CARRY狀態(tài)位置1舉例2:

MINAC1,T1;由于T1<AC1(15-0),所以T1的內(nèi)容保持不變且將CARRY狀態(tài)位置1

第72頁/共134頁存儲器比較指令指令CMPSmem==K16,TCx

;IfSmem==K16thenTCx=1elseTCx=0狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx舉例CMP*AR1+==#400h,TC1第73頁/共134頁寄存器比較指令指令—在D單元和A單元的ALU中完成兩個累加器、輔助寄存器或臨時寄存器的比較,若累加器與輔助寄存器或臨時寄存器比較,在A單元將ACx(15-0)與TAx進行比較狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,TCy。執(zhí)行指令后會受影響的狀態(tài)位:TCx第74頁/共134頁舉例1:

CMPAC1==T1,TC1

;由于AC1(15-0)=T1,所以將TC1置1第75頁/共134頁條件移位指令指令SFTCCACx,TCx

;IfACx(39–0)=0thenTCx=1;IfACx(31–0)hastwosignbitsthen;ACx=ACx(31–0)<<#1andTCx=0;elseTCx=1狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx舉例SFTCCAC0,TC1第76頁/共134頁帶符號移位指令指令—移位指令中的移位值由立即數(shù)、SHIFTW或Tx內(nèi)容確定狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATA,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第77頁/共134頁舉例1:

SFTST2,#1;T2=T2<<#1舉例2:

SFTSCAC0,#–5,AC1

;AC1=AC0>>5,移出的位裝入CARRY

第78頁/共134頁修改輔助寄存器(MAR)指令指令狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:ST2-55執(zhí)行指令后會受影響的狀態(tài)位:無舉例AADD#255,T0;T0=T0+255AMOV#255,AR0;AR0=255AMAR*AR3+;AR3=AR3+1第79頁/共134頁修改堆棧指針指令指令

AADDK8,SP;SP=SP+K8狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:無。舉例

AADD#127,SP;SP=SP+127第80頁/共134頁隱含并行指令指令加-存儲、乘加/減-存儲、加/減-存儲、裝載-存儲和乘加/減-裝載狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,RDM,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第81頁/共134頁隱含并行指令

第82頁/共134頁舉例:

MPYMR*AR0+,T0,AC1 ::MOVHI(AC0<<T2),*AR1+

;AC1=(*AR0)*T0,因為FRCT=1,AC1=rnd(AC1*2), ;AC0=AC0<<T2,(*AR1)=AC0(31-16),AR1=AR1+1, ;AR0=AR0+1

第83頁/共134頁絕對距離指令指令以并行方式完成兩個操作,一個在D單元的MAC中,另一個在D單元的ALU中ABDSTXmem,Ymem,ACx,ACy;ACy=ACy+|HI(ACx)|;ACx=(Xmem<<#16)–(Ymem<<#16)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,C54CM,M40,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第84頁/共134頁舉例:

ABDST*AR0+,*AR1,AC0,AC1

;AC1=AC1+|HI(AC0)|

;AC0=((*AR0)<<#16)–((*AR1)<<#16) ;AR0=AR0+1第85頁/共134頁絕對值指令指令ABS[src,]dst;dst=|src|狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,SATA,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,CARRY舉例

ABSAR1,AC1;AC1=|AR1|第86頁/共134頁FIR濾波指令指令FIRSADDXmem,Ymem,Cmem,ACx,ACy;ACy=ACy+(ACx(32-16)*Cmem)

;ACx=(Xmem<<#16)+(Ymem<<#16)FIRSSUBXmem,Ymem,Cmem,ACx,ACy;ACy=ACy+(ACx(32-16)*Cmem)

;ACx=(Xmem<<#16)–(Ymem<<#16)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第87頁/共134頁舉例:

FIRSADD*AR0,*AR1,*CDP,AC0,AC1

;AC1=AC1+AC0(32-16)*(*CDP)

;AC0=((*AR0)<<#16)+((*AR1)<<#16)第88頁/共134頁最小均方(LMS)指令指令LMSXmem,Ymem,ACx,ACy

;ACy=ACy+(Xmem*Ymem)

;::ACx=rnd(ACx+(Xmem<<#16))狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,RDM,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第89頁/共134頁舉例:

LMS*AR0,*AR1,AC0,AC1

;AC1=AC1+(*AR0)*(*AR1)

;::AC0=rnd(AC0+((*AR0)<<#16))第90頁/共134頁補碼指令指令NEG[src,]dst;dst=–src狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:M40,SATA,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,CARRY舉例

NEGAC1,AC0;AC0=-AC1第91頁/共134頁歸一化指令指令MANTACx,ACy;ACy=mant(ACx),::NEXPACx,Tx;Tx=–exp(ACx)EXPACx,Tx;Tx=exp(ACx)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:無舉例

MANTAC0,AC1;AC1等于AC0的尾數(shù),即將AC0右移與32位帶符號數(shù)對齊后的值;::NEXPAC0,T1;T1等于將AC0的MSB左移與32位帶符號數(shù)對齊所移位的次數(shù)值第92頁/共134頁飽和和舍入指令指令SAT[R][ACx,]ACy;ACy=saturate(rnd(ACx))ROUND[ACx,]ACy;ACy=rnd(ACx)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40,RDM,SATD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVy第93頁/共134頁舉例1:

ROUNDAC0,AC1

;AC1=AC0+8000h,且16個最低有效位清0舉例2:

SATAC0,AC1

;將32位的AC0飽和,將飽和后的值FF80000000裝入AC1

第94頁/共134頁平方差指令指令SQDSTXmem,Ymem,ACx,ACy

;ACy=ACy+(ACx(32-16)*ACx(32-16))

;ACx=(Xmem<<#16)–(Ymem<<#16)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:FRCT,SMUL,C54CM,M40,SATD,SXMD。執(zhí)行指令后會受影響的狀態(tài)位:ACOVx,ACOVy,CARRY第95頁/共134頁舉例:

SQDST*AR0,*AR1,AC0,AC1

;AC1=AC1+(AC0(32-16))*(AC0(32-16)) ;AC0=((*AR0)<<16)-((*AR1<<16)第96頁/共134頁位操作指令

位域比較指令指令BANDSmem,k16,TCx

;If(((Smem)ANDk16)==0),TCx=0

;elseTCx=1狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx舉例:BAND*AR3,#00A0h,TC2

;由于(*AR3)ANDk16==0,TC2=0第97頁/共134頁位計數(shù)指令BCNTACx,ACy,TCx,Tx

;Tx=(ACxANDACy)中1的個數(shù) ;若Tx為奇數(shù),則TCx=1,反之TCx=0狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx舉例:BCNTAC1,AC2,TC1,T1

;T1=(AC1與AC2)中1的個數(shù),個數(shù)是奇數(shù),TC1=1第98頁/共134頁位域擴展和抽取指令指令位域抽?。築FXTRk16,ACx,dst;從LSB到MSB將k16中非零位對應的ACx中的位抽取出來,依次放到dst的LSB中位域擴展:BFXPAk16,ACx,dst;將ACx的LSB放到k16中非零位對應的dst中的位置上,;ACx的LSB個數(shù)等于k16中1的個數(shù)狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:無第99頁/共134頁舉例1:

BFXTR#8024h,AC0,T2

;從最低位到最高位將(8024h)中非零位對應的AC0中的位抽取出來依次放到T2的LSB中

舉例2:

BFXPA#8024h,AC0,T2

;將AC0的LSB放到#8024h中非零位對應的T2中的位置上,AC0的LSB個數(shù)等于#8024h中1的個數(shù)

第100頁/共134頁存儲器位操作指令指令測試、清零、置位和取反狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx第101頁/共134頁舉例1:

BTSTAC0,*AR0,TC1

;位地址AC0(3-0)=8,測試(*AR0)的位8,結果存入TC1舉例2:

BTSTNOT#12,*AR0,TC1

;測試(*AR0)的位12,結果存入TC1,并將(*AR0)的位12取反

第102頁/共134頁寄存器位操作指令指令測試、置位、清零和取反操作狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx第103頁/共134頁舉例1:

BTST@#12,T0,TC1

;測試T0的位12,將結果存入TC1

舉例2:

BNOTAR1,T0

;將T0中由AR1確定的位12取反

第104頁/共134頁舉例3:

BTSTPAR1(T0),AC0

;由基地址(AR1)和偏移地址T0確定的位地址為39,測試AC0中的第39位并存入TC1;測試AC0中的第40位并存入TC2第105頁/共134頁狀態(tài)位設置指令指令置位和清零狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:已經(jīng)選擇的狀態(tài)位第106頁/共134頁舉例1:

BCLRAR1LC,ST2_55

;由標號AR1LC確定位地址為1,將ST2-55的位2清零

舉例2:

BSETCARRY,ST0_55

;由標號CARRY確定位地址為11,將ST0-55的位11置位

舉例3:

BSETCARRY

;將ST0-55的CARRY(位11)置位

第107頁/共134頁擴展輔助寄存器操作指令

指令狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:ST2-55。執(zhí)行指令后會受影響的狀態(tài)位:無第108頁/共134頁舉例1:

AMAR*AR1+,XAR0;將(*AR1)的內(nèi)容裝入XAR0,且AR1增1AMOV#7FFFFFh;將23位的值(7FFFFFh)裝入XAR0MOVdbl(*AR3),XAR1;將(*AR3)低7位和(*(AR3+1))的16位裝入XAR1第109頁/共134頁位操作指令

位域比較指令指令BANDSmem,k16,TCx

;If(((Smem)ANDk16)==0),TCx=0

;elseTCx=1狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:無。執(zhí)行指令后會受影響的狀態(tài)位:TCx舉例:BAND*AR3,#00A0h,TC2

;由于(*AR3)ANDk16==0,TC2=0第110頁/共134頁邏輯運算指令

按位與/或/異或/取反指令指令狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40。執(zhí)行指令后會受影響的狀態(tài)位:無第111頁/共134頁舉例1:

NOTAC0,AC1

;將AC0的內(nèi)容取反,結果存入AC1

舉例2:

ANDAC0,AC1;AC1=AC1ANDAC0

舉例3:AC0<<#4,AC1;將AC0邏輯左移4位后與AC1相或,結果存 入AC1舉例4:XORAC0,AC1;AC1=AC1XORAC0第112頁/共134頁邏輯移位指令狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:C54CM,M40。執(zhí)行指令后會受影響的狀態(tài)位:CARRY第113頁/共134頁舉例1:

SFTLAC1,#1;AC1=AC1<<#1,由于M40=0,CARRY=位31,且位(39-32)清零

舉例2:

SFTLAC0,T0,AC1;AC1=AC0<<-6,由于M40=0,所以(39-32)清零

第114頁/共134頁循環(huán)移位指令ROLBitOut,src,BitIn,dst;將BitIn移進src的LSB,src被移出的位存放于BitOut,此時的結果放到dst中RORBitIn,src,BitOut,dst;將BitIn移進src的MSB,src被移出的位存放于BitOut,此時的結果放到dst中狀態(tài)位影響指令執(zhí)行的狀態(tài)位有:CARRY,M40,TC

溫馨提示

  • 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

提交評論