DSP指令一览表

简介:

附录6  TMS320C54x 指令系统一览表(按指令功能排列)

原文:http://blog.163.com/byl545@126/blog/static/180522812008102171429535/

一、算术运算指令

1. 加法指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

ADD  Smem,src

 

src=src+Smem

 

操作数加至累加器

 

1

 

1

 

ADD  Smem,TS,src

 

src=src+Smem<<TS

 

操作数移位后加至累加器

 

1

 

1

 

ADD  Smem,16,src[,dst]

 

dst=src+Smem<<16

 

操作数左移16位加至累加器

 

1

 

1

 

ADD  Smem[,SHIFT],src[,dst]

 

dst=src+Smem<<SHIFT

 

操作数移位后加到累加器

 

2

 

2

 

ADD  Xmem,SHFT,src

 

src=src+Xmem<<SHFT

 

操作数移位后加到累加器

 

1

 

1

 

ADD  Xmem,Ymem,dst

 

dst=Xmem<<16+Ymem<<16

 

两个操作数分别左移16位后加到累加器

 

1

 

1

 

ADD  #lk[,SHFT],src[,dst]

 

dst=src+#lk<<SHFT

 

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

 

2

 

2

 

ADD  #lk,16,src[,dst]

 

dst=src+#lk<<16

 

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

 

2

 

2

 

ADD  src,[,SHIFT][,dst]

 

dst=dst+src<<SHIFT

 

累加器移位后相加

 

1

 

1

 

ADD  src,ASM[,dst]

 

dst=dst+src<<ASM

 

累加器按ASM移位后相加

 

1

 

1

 

ADDC  Smem,src

 

src=src+Smem+C

 

操作数带进位加至累加器

 

1

 

1

 

ADDM  #lk,Smem

 

Smem=Smem+#lk

 

长立即数加至存储器

 

2

 

2

 

ADDS  Smem,src

 

src=src+uns(Smem)

 

符号位不扩展的加法

 

1

 

1

 

 

2. 减法指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

SUB  Smem,src

 

src=src—Smem

 

从累加器中减去操作数

 

1

 

1

 

SUB  Smem,TS,src

 

src=src—Smem<<TS

 

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

 

1

 

1

 

SUB  Smem,16,src[,dst]

 

dst=src—Smem<<16

 

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

 

1

 

1

 

SUB  Smem[,SHIFT],src[,dst]

 

dst=src—Smem<<SHIFT

 

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

 

2

 

2

 

SUB  Xmem,SHFT,src

 

src=src—Xmem<<SHFT

 

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

 

1

 

1

 

SUB  Xmem,Ymem,dst

 

dst=Xmem<<16—Ymem<<16

 

两个操作数分别左移16位后相减

 

1

 

1

 

SUB  #lk[,SHFT],src[,dst]

 

dst=src—#1k<<SHFT

 

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

 

2

 

2

 

SUB  #lk,16,src[,dst]

 

dst=src—#1k<<16

 

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

 

2

 

2

 

SUB  src[,SHIFT][,dst]

 

dst=dst—src<<SHIFT

 

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

 

1

 

1

 

SUB  src,ASM[,dst]

 

dst=dst—src<<ASM

 

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

 

l

 

l

 

SUBB  Smem,src

 

src=src—Smem—C—

 

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

 

1

 

1

 

SUBC  Smem,src

 

If (src—Smem<<15)≥0

src=(src—Smem<<15)<<1+1

Else

src=src<<l

 

有条件减法

 

1

 

1

 

SUBS  Smem,src

 

src=src—uns(Smem)

 

符号位不扩展的减法

 

1

 

1

 

 

3. 乘法指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

MPY  Smem,dst

 

dst=T*Smem

 

T寄存器值与操作数相乘

 

1

 

1

 

MPYR  Smem,dst

 

dst=rnd(T*Smem)

 

T寄存器值与操作数相乘(带舍入)

 

1

 

1

 

MPY  Xmem,Ymem,dst

 

dst=Xmem*Ymem,T=Xmem

 

两个操作数相乘

 

1

 

1

 

MPY  Smem,#lk,dst

 

dst=Smem*#lk,T=Smem

 

长立即数与操作数相乘

 

2

 

2

 

MPY  #lk,dst

 

dst=T*#lk

 

长立即数与T寄存器值相乘

 

2

 

2

 

MPYA  dst

 

dst=T*A(32-16)

 

T寄存值与累加器A高位相乘

 

1

 

1

 

MPYA  Smem

 

B=Smem*A(32-16),T=Smem

 

操作数与累加器A高位相乘

 

1

 

1

 

MPYU  Smem,dst

 

dst=uns(T)*uns(Smem)

 

无符号数乘法

 

1

 

1

 

SQUR  Smem,dst

 

dst=Smem*Smem,T=Smem

 

操作数的平方

 

1

 

1

 

SQUR  A,dst

 

dst=A(32—16)*A(32—16)

 

累加器A的高位平方

 

1

 

1

 

 

4. 乘法累加/减指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

MAC  Smem,src

 

src=src+T*Smem

 

操作数与T寄存器值相乘后加到累加器

 

1

 

1

 

MAC  Xmem,Ymem,src[,dst]

 

dst=src+Xmern*Ymem,T=Xmem

 

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

 

1

 

1

 

MAC  #lk,src[,dst]

 

dst=src+T*#lk

 

长立即数与T寄存器值相乘后加到累加器

 

2

 

2

 

MAC  Smem,#lk,src[,dst]

 

dst=src+Smem*#lk,T=Smem

 

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

 

2

 

2

 

MACR  Smem,src

 

dst=rnd(src+T*Smem)

 

操作数与T寄存器值相乘后加到累加器(带舍入)

 

1

 

1

 

MACR  Xmem,Ymem,src[,dst]

 

dst=rnd(src+Xmem*Ymem),T=Xmem

 

两个操作数相乘后加到累加器(带舍入)

 

1

 

1

 

MACA  Smem[,B]

 

B=B+Smem*A(32—16),T=Smem

 

操作数与累加器A高位相乘后加到累加器B

 

1

 

1

 

MACA  T,src[,dst]

 

dst=src+T*A(32—16)

 

T寄存器值与累加器A高位相乘

 

1

 

1

 

MACAR  Smem[,B]

 

B=rnd(B+Smem*A(32—16)),T=Smem

 

T寄存器值与累加器A高位相乘后加到累加B(带舍入)

 

1

 

1

 

MACAR  T,src[,dst]

 

dst=rnd(src+T*A(32—16))

 

累加器A高位与T寄存器值相乘后与源、累加器相加(带舍入)

 

1

 

1

 

MACD  Smem,pmad,src

 

src=src+Smem*pmad,

T=Smem,(Smem+1)=Smem

 

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

 

2

 

3

 

MACP  Smem,pmad,src

 

src=src+Smem*pmad,T=Smem

 

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

 

2

 

3

 

MACSU  Xmem,Ymem,src

 

src=src+uns(Xmem)*Ymem,T=Xmem

 

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

 

1

 

1

 

MAS  Smem,src

 

src=src—T*Smem

 

从累加器中减去T寄存器值与操作数的乘积

 

1

 

1

 

MASR  Xmem,Ymem,src[,dst]

 

dst=rnd(src—Xmem*Ymem),T=Xmem

 

从累加器中减去两操作数的乘积(带舍入)

 

1

 

1

 

MAS  Xmem,Ymem,src[,dst]

 

dst=src—Xmem*Ymem,T=Xmem

 

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

 

1

 

1

 

MASR  Smem,src

 

src=rnd(src—T*Smem)

 

从累加器中减去T寄存器值与操作数的乘积(带舍入)

 

1

 

1

 

MASA  Smem[,B]

 

B=B—Smem*A(32—16),T=Smem

 

从累加器B中减去操作数与累加器A高位的乘积

 

1

 

1

 

MASA  T,src[,dst]

 

dst=src—T*A(32—16)

 

从源累加器中减去T寄存器值与累加器A高位的乘积

 

1

 

1

 

MASAR  T,src[,dst]

 

dst=rnd(src—T*A(32—16))

 

从源累加器中减去T寄存器值与累加器A高位的乘积(带舍入)

 

1

 

1

 

SQURA  Smem,src

 

src=src+Smem*Smem,T=Smem

 

操作数平方并累加

 

1

 

1

 

SQURS  Smem,src

 

src=src—Smem*Smem,T=Smem

 

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

 

1

 

1

 

 

5. 双精度(32位操作数)指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

DADD  Lmem,src[,dst]

 

If  C16=0

dst=Lmem+src

If  C16=1

dst(39—16)=Lmem(31—16)+src(31—16)

dst(15—0)=Lmem(15—0)+src(15—0)

 

双精度/双16位数加到累加器

 

1

 

1

 

DADST  Lmem,dst

 

If  C16=0

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

If  C16=1

dst(39—16)=Lmem(31—16)+T

dst(15—0)=Lmem(15—0)—T

 

双精度/双16位数与T寄存器值相加/减

 

1

 

1

 

DRSUB  Lmem,src

 

If  C16=0

src=Lmem—src

If  C16=1

src(39—16)=Lmem(31—16)—src(31—16)

src(15—0)=Lmem(15—0)—src(15—0)

 

双精度/双16位数中减去累加器值

 

1

 

1

 

DSADT  Lmem,dst

 

If  C16=0

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

If  C16=1

dst(39—16)=Lmem(31—16)—T

dst(15—0)=Lmem(15—0)+T

 

长操作数与T寄存器值相加/减

 

1

 

1

 

DSUB  Lmem,src

 

If  C16=0

src=src—Lmem

If  C16=1

src(39—16)=src(31—16)—Lmem(31—16)

src(15—0)=src(15—0)—Lmem(15—0)

 

从累加器中减去双精度/双16位数

 

1

 

1

 

DSUBT  Lmem,dst

 

If  C16=0

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

If  C16=1

dst(39—16)=Lmem(31—16)—T

dst(15—0)=Lmem(15—0)—T

 

从长操作数中减去T寄存器值

 

1

 

1

 

 

6. 专用指令

 

句    法

 

表  达  式

 

说    明

 

字数

 

周期

 

ABDST  Xmem,Ymem

 

B=B+|A(32—16)|,A=(Xmem—Ymem)<<16

 

绝对距离

 

1

 

1

 

ABS  src[,dst]

 

dst=|src|

 

累加器取绝对值

 

1

 

1

 

CMPL  src[,dst]

 

dst=src———

 

累加器取反

 

1

 

1

 

DELAY  Smem

 

(Smem+1)=Smem

 

存储器单元延迟

 

1

 

1

 

EXP  src

 

T=number of sign bits(src)—8

 

求累加器的指数

 

1

 

1

 

FIRS  Xmem,Ymem,pmad

 

B=B+A*pmad,A=(Xmem+Ymem)<<16

 

对称FIR滤波

 

2

 

3

 

LMS  Xmem,Ymem

 

B=B+Xmem*Ymem,A=(A+Xmem<<16)+215

 

求最小均方值

 

1

 

1

 

MAX  dst

 

dst=max(A,B)

 

求累加器(A,B)最大值

 

1

 

1

 

MIN  dst

 

dst=min(A,B)

 

求累加器(A,B)最小值

 

1

 

1

 

NEG  src[,dst]

 

dst=-src

 

累加器变负

 

1

 

1

 

NORM  src[,dst]

 

dst=src<<TS,dst=norm(src,TS)

 

归一化

 

1

 

1

 

POLY  Smem

 

B=Smem<<16,A=rnd(A*T+B)

 

求多项式的值

 

1

 

1

 

RND  src[,dst]

 

dst=src+215

 

累加器舍入运算

 

1

 

1

 

SAT  src

 

saturate(src)

 

累加器饱和运算

 

1

 

1

 

SQDST  Xmem,Ymem

 

B=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16

 

求距离的平方

 

1

 

1


本文转自博客园知识天地的博客,原文链接: DSP指令一览表 ,如需转载请自行联系原博主。

相关文章
|
6月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
193 2
|
6月前
|
存储 芯片 SoC
ZYNQ程序固化
ZYNQ程序固化
|
存储 算法 计算机视觉
m基于FPGA的各类存储器纯Verilog实现,包含testbench,包括RAM,SRAM等
m基于FPGA的各类存储器纯Verilog实现,包含testbench,包括RAM,SRAM等
397 2
|
存储 算法 异构计算
m基于FPGA的数据串并并串转换系统verilog实现,包含testbench,可以配置并行数量
m基于FPGA的数据串并并串转换系统verilog实现,包含testbench,可以配置并行数量
369 0
|
算法 异构计算
基于FPGA的直接序列扩频通信verilog设计,包括汉明编译码,扩频解扩,同步模块以及testbench
基于FPGA的直接序列扩频通信verilog设计,包括汉明编译码,扩频解扩,同步模块以及testbench
307 0
基于FPGA的直接序列扩频通信verilog设计,包括汉明编译码,扩频解扩,同步模块以及testbench
|
芯片
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
97 0
|
安全 数据安全/隐私保护
西门子S7-200 SMART系统块的组态,如何组态CPU、信号板和扩展模块?
本篇我们来介绍如何在编程软件STEP7-Micro/WIN SMART中组态系统块。系统块可提供对S7-200 SMART CPU、信号板和扩展模块的组态,下面我们将分别进行介绍。
西门子S7-200 SMART系统块的组态,如何组态CPU、信号板和扩展模块?
|
C语言 Perl
|
安全 数据安全/隐私保护
西门子S7-200 SMART如何组态系统块,CPU、信号板和扩展模块的组态
上篇文章中我们学习了西门子S7-200 SMART查看符号名和绝对地址及符号表相关操作,本篇我们来介绍如何在编程软件STEP7-Micro/WIN SMART中组态系统块。系统块可提供对S7-200 SMART CPU、信号板和扩展模块的组态,下面我们将分别进行介绍。
西门子S7-200 SMART如何组态系统块,CPU、信号板和扩展模块的组态
|
存储 传感器 算法
STM32:宏观介绍STM32(内含:1.STM32用途简介+2.系列介绍+3.片上资源/外设+4.命名规则+5.系统结构+6.引脚定义+7.启动配置+8.最小系统电路+9.最小系统实物图)
STM32:宏观介绍STM32(内含:1.STM32用途简介+2.系列介绍+3.片上资源/外设+4.命名规则+5.系统结构+6.引脚定义+7.启动配置+8.最小系统电路+9.最小系统实物图)
646 1
STM32:宏观介绍STM32(内含:1.STM32用途简介+2.系列介绍+3.片上资源/外设+4.命名规则+5.系统结构+6.引脚定义+7.启动配置+8.最小系统电路+9.最小系统实物图)