关键词不能为空

当前您在: 主页 > 英语 >

DSP指令一览表

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 08:15
tags:

-

2021年2月28日发(作者:rocky)


DSP


指令一览表




附录


6


TMS320C54x < /p>


指令系统一览表


(


按指令功能排列


)


一、算术运算指令



1.


加法指令


















字数



周期



src=src+Smem


1


1


ADD


Smem



src


操作数加至累加器



src=src+Smem<


1


1


ADD


Smem



TS



src


操作数移位后加至累加器



dst=src+Smem<<16


1


1


ADD


Smem



16



src[



dst]


操作数左移


16


位加至累加器



2


2


ADD


Smem[

< p>


SHIFT]



src [



dst]


dst=src+Smem<


操作数移位后加到累加器



src=src+Xmem<


1


1


ADD


Xmem



SHFT



src


操作数移位后加到累加器



dst=Xmem<<16+Ymem<<16


两个操作数分 别左移


16


位后加到累加器



1


1


ADD

< br>Xmem



Ymem



dst


dst=src+#lk<


2


2


ADD

< br>#lk[



SHFT]



src[



dst]


长立即数移位后加到累加器



dst=src+#lk<<16


2


2


ADD


#lk



16



src[

< p>


dst]


长立即数左移


16


位后加到累加器



dst=dst+src<


1


1


ADD


src



[



SHIFT][



dst]


累加器移位后相加



dst=dst+src<


1


1


ADD


src



ASM[



dst]


累加器按


ASM


移位后相加



src=src+Smem+C


1


1


ADDC


Smem



src


操作数带进位加至累加器



Smem=Smem+#lk


2


2


ADDM


#lk



Smem


长立即数加至存储器



src=src+uns(Smem)


1


1


ADDS


Smem



src


符号位不扩展的加法



2.


减法指令


















字数



周期



src=src



Smem


1


1


SUB


Smem



src


从累加器中减去操作数



src=src



Smem<


1


1


SUB

< br>Smem



TS



src


从累加器中减去移位后的操作数



dst=src



Smem<<16


1


1


SUB

< br>Smem



16



src[



dst]


从累 加器中减去左移


16


位后的操作数



2


2


SUB

< br>Smem[



SHIFT]


,< /p>


src[



dst]

< br>dst=src



Smem<


操作数移位后与累加器相减



src= src



Xmem<


1


1


SUB


Xmem



SHFT



src


操作数移位后与累加器相减



dst= Xmem<<16



Ymem<<16


两个操作数分别左移


16


位后相减



1


1


SUB

< br>Xmem



Ymem



dst


2


2


SUB


#lk[



SHFT]



src[



dst]


dst=src



#1k<


长立即数移位后与累加器相减



dst=src



#1k<<16


2


2


SUB

< br>#lk



16



src[



dst]


长立即 数左移


16


位后与累加器相减



dst=dst



src<


1


1


SUB

< br>src[



SHIFT][


,< /p>


dst]


源累加器移位后与目的累加器相减



dst=dst



src<


l


SUB


src



ASM[



dst]


源累加器按


ASM


移位后与目的累加器相减



l


SUBB


Smem



src


SUBC


Smem



src


SUBS


Smem



src



3.


乘法指令








MPY


Smem



dst


MPYR


Smem



dst


MPY


Smem



#lk



dst


MPY


#lk



dst


MPY


A


dst


MPY


A


Smem


MPYU


Smem



dst


SQUR


Smem



dst


SQUR


A



dst




从累加器中带借位减操作数



src=src



Smem

< br>—


C



If (src


—Smem<<15)≥0



src=(src



Smem<<15)<<1+1


有条件减法



Else


src=src<


src=src



uns(Smem)


符号位不扩展的减法



1


1


1


1


1


1








dst=T*Smem


dst=rnd(T*Smem) < /p>


dst=Smem*#lk



T=Sme m


dst=T*#lk


dst=T*A(32-16)


dst=uns(T)*uns(Smem)


dst=A(3 2



16)*A(32



16)


1






T


寄存器值与操作数相乘



字数



周期



1


1


2


2


1


1


1


1


1


1


1


1


2


2


1


1


1


1


1


T


寄存器值与操作数相乘


(


带舍入


)


1


长立即数与操作数相乘



长立即数与< /p>


T


寄存器值相乘



T


寄存值与累加器


A


高位相乘



无符号数乘法



累 加器


A


的高位平方



MPY


Xmem



Ymem



dst dst=Xmem*Ymem



T=Xmem


两个操作数相乘



B=Smem*A( 32-16)



T=Smem


操作数 与累加器


A


高位相乘



dst=Smem*Smem



T=Smem


操作数的平方



4.


乘法累加


/


减指令








MAC


Smem



src








src=src+T*Smem







操作数与


T


寄存器值相乘后加到累加器



两个操作数相乘后加到累加器



长立即 数与


T


寄存器值相乘后加到累加器



长立即数与操作数相乘后加到累加器









1


1


2


2


1


1


2


2


1


1


1


1


1


1


3


3


1


1


1


1


1


1


1


1


1


1


dst=src+Xmern*Ymem


MAC

< p>
Xmem



Ymem


,< /p>


src[



dst]


T=Xmem


MAC


#lk



src[



ds t]


MAC


Smem



#lk



src[


,< /p>


dst]


MACR


Smem



src


dst=src+T*#lk


dst=src+Smem*# lk



T=Smem


dst=rnd(src+T*Smem)


操作数与


T


寄存器值相乘后加到累加器


(



1


舍入


)




两个操作数相乘后加到累加器

< br>(


带舍入


)


1


dst=rnd(src+Xmem*Ymem)


MACR


Xmem



Ymem

< br>,


src[



dst]


T=Xmem


MACA


Smem[



B]


MACA


T


src[



dst]


MACAR


Smem[



B]


MACAR


T


< br>src[



dst]


MACD


Smem



pmad

< br>,


src


MACP


Sme m



pmad



src


MACSU


Xmem



Ymem



src


MAS


Smem



src

< br>B=B+Smem*A(32



16)

< br>T=Smem


dst=src+T*A(32



16)


操作数与累加器


A

< br>高位相乘后加到累加器


B


1


T


寄存器值与累加器


A


高位相乘



1


B=rnd(B+Smem*A(32



16))



T


寄存器值与累加器


A


高位相乘后加到 累加


1


T=Smem


B(


带舍入


)


dst=rnd(src+T*A(32



16))


src=src+Smem*pmad



< /p>


T=Smem



(Smem+1)=Sm em


src=src+uns(Xmem)*Ymem


T=Xmem


src=src



T*Smem



累加器


A


高位与


T


寄存器值相乘后与源、


< p>
1


加器相加


(


带舍入< /p>


)


操作数与程序存储器值相乘后累加并延迟



2


2


1


src=src+Smem*pmad



T=Smem


操作数与程序存储器值相乘后加到累加器



元符号数与有符号数相乘后加到累加器



从累加器中减去


T


寄存器值与操作数的乘积

< br>


1


1


1


dst=rnd(src



Xmem*Ymem)



MASR


Xmem

< br>,


Ymem



src[



dst]


从累加器中减去两操作数的乘积< /p>


(


带舍入


)


T=Xmem


MAS


Xmem< /p>



Ymem



s rc[



dst]


MASR


Smem



src


MASA


Smem[



B]


MASA


T


src[



dst]


MASAR


T



src[



dst]


SQURA


Smem



src


SQURS


Smem



src











2


dst=src



Xmem*Ymem


T=Xmem


src=rnd(src



T*Smem)


B=B



Smem*A(32

< br>—


16)


T=Smem


dst =src



T*A(32


< p>
16)


dst=rnd(src



T*A(32



16))



从源累加器中减去两操作数的乘积



从累加器中减去


T


寄存器值与操作数的 乘积


1


(


带舍入


)



从累加器


B


中减去操作数与累加器< /p>


A


高位的


1


乘积



从源累加器中减去


T


寄存器值与累加器


A


高< /p>


1


位的乘积



从源累加器中减去


T


寄存器值与累加器


A



1


位的乘积

(


带舍入


)


1


1


src=src+Smem*Smem


T=Smem


操作数平方并累加



src=src< /p>



Smem*Smem



T=Smem


从累加器中减去操作数的平方



5.


双精度


(32

< br>位操作数


)


指令














字数



周期



If


C16=0


dst=Lmem+src


1


1


DADD


Lmem



src[



dst]


If


C16=1


双精度


/



16


位数加到累加器



dst(39



16)=Lmem(31< /p>



16)+src(31



16)


dst(15



0 )=Lmem(15



0)+src(15


0)


If


C16=0


dst=Lmem+(T<<16+T)


If


C16=1


DADST


Lmem



dst

< br>双精度


/



16


位数与


T


寄存器值相加


/




1


1


dst(39



16)=Lmem(31< /p>



16)+T


dst(15

< p>


0)=Lmem(15



0)



T


If


C16=0


src=Lmem



src


If


C16=1


1


1


DRSUB


Lmem



src

< br>双精度


/



16


位数中减去累加器值



src(39

< br>—


16)=Lmem(31



1 6)



src(31



16)


src(15



0) =Lmem(15



0)


< p>
src(15



0)


If


C16=0


dst=Lme m



(T<<16+T)


If


C16=1


1


1


DSADT


Lmem



dst

< br>长操作数与


T


寄存器值相加


/< /p>




dst(39



16)=Lmem(31



16)



T


dst(15

< br>—


0)=Lmem(15



0) +T


If


C16=0


src=src



Lmem


If


C16=1


1


1


DSUB


Lmem



src

< br>从累加器中减去双精度


/



16


位数



src(39

< br>—


16)=src(31



16 )



Lmem(31



16)


src(15



0) =src(15



0)



Lmem(15



0)


If


C16=0


dst=Lme m



(T<<16+T)


If


C16=1


1


1


DSUBT


Lmem



dst

< br>从长操作数中减去


T


寄存器值



dst(39



16)=Lmem(3 1



16)



T


dst(15



0)=Lmem( 15



0)



T



6.


专用指令








ABDST


Xmem



Ymem


ABS


src[



dst]


CMPL


src[



dst]


DELAY


Smem


EXP


src


LMS


Xmem



Ymem


MAX


dst


MIN


dst


NEG


src[



dst]


NORM


src[



dst]


POL


Y


Smem


RND


src[



dst]


SAT


src


SQDST


Xmem



Ymem






3











< /p>


B=B+|A(32



16)|



A=(Xmem



Y mem)<<16


dst=|src|


dst=

< p>
s


r


c



(Smem+1)=Smem


T=number of sign bits(src)



8


B=B+Xmem*Ymem



A=(A+Xmem<<16) +215


dst=max(A



B)


dst=min(A



B)


dst=-src


dst=src<

< br>,


dst=norm(src



TS)


B=Smem<<16



A= rnd(A*T+B)


dst=src+215


saturate(src)


———






绝对距离



累加器取绝对值



累加器取反



存储器单元延迟



求累加器的指数



对称


FIR


滤波



求最小均方值



字数



周期



1


1


1


1


1


2


1


1


1


1


1


1


3


1


1


1


1


1


1


1


1


1


FIRS


Xmem

< p>


Ymem



pmad B=B+A*pmad



A=(Xmem+Ymem)<<16


求累加器


(A



B)


最大值



1

< br>求累加器


(A



B)

< p>
最小值



1


累加器变负



归一化



求多项式的值



累加器舍入运算



累加器饱和运算



1


1


1


1


1


1


B=B+A(32

< p>


16)*A(32



1 6)



A=(Xmem



Ymem)<<16


求距离的平方



二、逻辑运算指令



1.


与逻辑运算指令








AND


Smem



src


AND


#lk


< br>16



src[



dst]


AND


src[


SHIFT][



dst]


ANDM


#lk



Smem



2.


或逻辑运算指令








OR


Smem


OR


#lk



16



src[



dst]


OR


src[


< br>SHIFT][



dst]


ORM


#lk



Smem



3.


异或逻辑运算指令








XOR


Smem



src


XOR


#lk


< br>16



src[



dst]


XOR


src[


SHIFT][



dst]


XORM


#lk



Smem



4.


移位指令








ROL


src


ROLTC


src


ROR


src


SFTC


src



5.


测试指令


















测试由立即数规定的位域



存储单元与长立即数比较



字数



周期



1


2


1


2


l


2


1


2


1


BIT


Xmem



BITC


TC=Xmem(15



BITC)


测试指定位



BITF


Smem



#lk


TC=(Smem&#lk)


BITT


Smem


CMPM


Smem



#lk TC=(Smem==#lk)








4








src=src&Smem


dst=src&#lk<<16






操作数和累加器相与



字数



周期



1


2


1


2


1


2


2


1


2


AND


#lk[



SHFT]



src[



dst] dst=src&#lk<


长立即数移位后和累加器相与



dst=dst&src<


源累加器移位后和目的累加器相与



Smem=Smem&#lk


操作数和长立即数相与



长立即数左移


16


位后和累加器相与



2








src=src|Smem


dst=src|#lk<<16






操作数和累加器相或



字数



周期



l


2


1


2


1


2


2


1


2


OR


#lk[


< br>SHFT]



src[



dst] dst=src|#lk<


长立即数移位后和累加器相或



dst=dst|src<


源累加器移位后和目的累加器相或



Smem=Smem|#lk


操作数和长立即数相或



长立即数左移


16


位后和累加器相或



2








src=src



Smem


dst=src



#lk<<16






操作数和累加器相异或



字数



周期



1


2


1


2


1


2


2


1


2


XOR


#lk


< br>[



SHFT]



src[



dst] dst=src



#lk<


长立即数移位后和累加器相异或



ds t=dst



src<


源累加器移位后和目的累加器相异或



Smem=Smem



#lk


操作数和长立即数相异或



长立即数左 移


16


位后和累加器相异或



2








Rotate left with carry in


Rotate left with TC in


Rotate right with carry in






字数



周期



1


1


1


1


1


1


累加器经进位位循环左移



1


累加器经


TC


位循环左移


1


累加器经进位位循环右移



1


1


1


1


SFTA


src



SHIFT[



dst] dst=src<


累加器算术移位



if src(31)=src(30)then src=src<<1


累加器条件移位



累加器逻辑移位



SFTL


src



SHIFT[



dst] dst=src<


TC=Smem(15



T(3

< p>


O))


测试由


T


寄存器指定的位



CMPR


CC



ARx


Compare ARx with AR0


辅助寄存器


ARx



ARO


比 较



1

-


-


-


-


-


-


-


-



本文更新与2021-02-28 08:15,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679811.html

DSP指令一览表的相关文章