DSP指令一览表

合集下载

第五章 DSP的汇编指令..

第五章 DSP的汇编指令..

第五章 TMS320C55x系列DSP的汇编指令
(2) 用户自定义的双指令的并行
这两条指令的并行是通过用户或C编译器定义的。两条指令 同时执行两个操作,用并行符“||”区分并行执行的两条指令。 例:
MPYM *AR1+, *CDP, AC1 ;D单元的一个MAC来完成
||XOR AR2,T1
;A单元的ALU来完成
第五章 TMS320C55x系列DSP的汇编指令
1、高速数字信号处理中常采用汇编语言编程。 2、汇编语言中的两种指令集 (1) 助记符指令集:有助于记忆的符号来表示指令。 (2) 代数指令集:类似于代数表达式,运算关系清楚明了。 注意:DSP的软件开发工具只支持单一的指令形式,不支持助记
符指令和代数指令的混合形式。 3、术语、符号和缩写见P93的表5-1 4、运算符见表5-2
令执行的条件:
TCx(测试/控制标志为1) !TCx(测试/控制标志为0)
TC1&TC2 TC1&!TC2 TC1|TC2 TC1|!TC2 TC1^TC2 TC1^!TC2
!TC1&TC2 !TC1&!TC2 !TC1|TC2 !TC1|!TC2 !TC1^TC2 !TC1^!TC2
第五章 TMS320C55x系列DSP的汇编指令
4、双16比特算术指令: [(1)语法、(2)操作数、(3)状态位] 在D单元中利用其ALU的双16比特模式,同时执行(并行)两个16
比特算术运算,包括加-减、减-加、两个加和两个减运算。
例:
说明: NO:不能并行执行 3:指令的长度为3字节 1:周期为1 X:在X(执行)流水线阶段处理
D – ALU:在D单元ALU执行。 执行结果:AC0=(*AR3)+CARRY+AC1 状态位: Affected by CARRY,C54CM,M40等

dsp汇编指令系统介绍(精)

dsp汇编指令系统介绍(精)

汇编指令集本节根据指令的功能来分,提供六张表来说明指令集的概况:累加器、算数和逻辑指令(表2);辅助寄存器和数据页指针指令(表3);TREG、PREG和乘法指令(表4);转移指令(表5);控制指令(表6);I/O和存储器操作(表7)。

在每张表中,指令按字母顺序排列。

执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。

编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。

由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。

为了参照起见,我们先定义这六张概述表的符号意义:ACC 累加器。

ARBITXCM 辅助寄存器。

4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。

2位数值,CMPR指令执行CM值所声明的比较:若CM=00,测试当前AR=AR0否;若CM=01,测试当前AR<AR0否;若CM=10,测试当前AR>AR0否;若CM=11,测试当前AR≠AR0否。

ShiftTP 4位右移量。

用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低,TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。

ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。

52表2 累加器、算数和逻辑指令 ABS周期|(ACC)|→ACC 1(ACC)+(数据存储器地址)×12shift→ACC(ACC)+(数据存储器地址)×216→ACC 1(ACC)+k→ACC 1shift(ACC)+lk×2→ACC 2指令功能(ACC)+(数据存储器地址)+(C)→ACC寻址方式直接/间接直接/间接短立即数长立即数指令说明ACC取绝对值移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。

DSP编程指令全集

DSP编程指令全集
ADDK# k
Add to Accumulator Short Immediate
TMS320C1x devices: Add an 8-bit immediate value to the accumulator. TMS320C2x, TMS320C2xx, and TMS320C5x devices: Add an 8-bit immediate value, right-justified, to
ADRK# k
Add to Auxiliary Register Short Immediate
Add an 8-bit immediate value to the current auxiliary register.
ANDdma
AND{ind} [ ,next ARP]
AND# lk [ ,shift]
ADDTdma
ADDT{ind} [ ,next ARP]
Add to Accumulator With Shift Specified by T Register
Left-shift the contents of the addressed data memory location by the value in the 4 LSBs of the T register; add the result to the accumulator. If a shift is specified, leftshift the data before the add. During shifting, low-order bits are zero-filled, and high-order bits are sign-extended if SXM = 1. TMS320C2xx and TMS320C5x devices: If the result of

DSP汇编指令索引

DSP汇编指令索引

指令
指令
隐含并行
105
算 术 运 算 指 令
绝对值 FIR滤波 最小均方 补码 归一化 饱和和舍入 平方距离 位域比较 位域抽取 位域扩展
107 108 109 109 109 110 110 111 111 111
位 操 作 指 令
存储器位操作
112
寄存器位操作
113
状态位设置 扩展辅助 寄存器操 作指令 按位与/或 /异或/取反 位计数 逻辑移位 循环移位

114
115 116 117 118
逻辑运 算指令
TMS320C55x的指令系统 Page 累加器、辅助寄 MOV 存器或临时寄存 SWAP 119 器装载、存储、 SWAPP 移 移动、和交换 SWAP4 动 存储单元间的移 DELAY 122 指 动及初始化 MOV 令 POP 入栈和出栈 122 PSH CPU寄存器装载、 124 MOV 存储和移动 B 跳转 127 BCC CALL CALLCC 调用与返回 128 RET RETCC INTR 程 中断与返回 128 TRAP 序 RETI 控 PRT 制 PRTADD 指 PRTSUB 重复 128 令 PRTCC PRTB PRTBLOCAL XCC 条件执行 XCCPART 129 IDLE 空闲 空操作 NOP 软件复位 RESET
指令
TMS320C55x的指令系统
Page MPYM::MOV MACM::MOV MASM::MOV ADD::MOV SUB::MOV MOV::MOV ABS FIRSADD FIRSSUB LMS NEG MANT ::NEXP EXP SAT ROUND SQDST BAND BFXTR BFXPA BTST BNOT BCLR BSET BTSTSET BTSTCLR BTSTNOT BTST BNOT BCLR BSET BTSTP BCLR BSET MOV AMAR AMOV POPBOTH PSHBOTH NOT AND/OR/XOR BCNT SFTL ROL

DSP指令一览表

DSP指令一览表
SUBSmem[,SHIFT],src[,dst]dst=src—Smem<<SHIFT操作数移位后与累加器相减22
SUBXmem,SHFT,srcsrc=src—Xmem<<SHFT操作数移位后与累加器相减11
SUBXmem,Ymem,dstdst=Xmem<<16—Ymem<<16两个操作数分别左移16位后相减11
MPYXmem,Ymem,dst dst=Xmem*Ymem,T=Xmem两个操作数相乘11
MPYSmem,#lk,dstdst=Smem*#lk,T=Smem长立即数与操作数相乘22
MPY#lk,dstdst=T*#lk长立即数与T寄存器值相乘22
MPYAdstdst=T*A(32-16)T寄存值与累加器A高位相乘11
SUB#lk[,SHFT],src[,dst]dst=src—#1k<<SHFT长立即数移位后与累加器相减22
SUB#lk,16,src[,dst]dst=src—#1k<<16长立即数左移16位后与累加器相减22
SUBsrc[,SHIFT][,dst]dst=dst—src<<SHIFT源累加器移位后与目的em<<16,A=rnd(A*T+B)求多项式的值11
RNDsrc[,dst]dst=src+215累加器舍入运算11
SATsrcsaturate(src)累加器饱和运算11
SQDSTXmem,YmemB=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16求距离的平方11
1
4. 乘法累加/减指令
句法表达式说明


DSP指令一览表

DSP指令一览表

DSP指令一览表附录6 TMS320C54x 指令系统一览表按指令功能排列
一、算术运算指令
1. 加法指令
2. 减法指令
3. 乘法指令
4. 乘法累加/减指令
5. 双精度32位操作数指令
6. 专用指令
二、逻辑运算指令
1. 与逻辑运算指令
2. 或逻辑运算指令
3. 异或逻辑运算指令
4. 移位指令
5. 测试指令
三、程序控制指令
1. 分支转换指令
2. 调用指令
注:条件“真”,§条件“假”,※延迟指令;
3. 中断指令
4. 返回指令
注:条件“真”,§条件“假”,※延迟指令;
5. 重复指令
注:条件“真”,§条件“假”,※延迟指令;
6. 堆栈管理指令
7. 其他程序控制指令
注:条件“真”,§条件“假”,※延迟指令;
四、加载和存储指令
1. 加载指令
2. 存储指令
3. 条件存储指令
4. 并行加载和存储指令
5. 并行加载和乘法指令
6. 并行存储和加 / 减法指令
7. 并行存储和乘法指令
8. 其他加载和存储指令。

DSP指令一览表

DSP指令一览表

无符号数乘法
11
SQUR Smem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQUR A,dst
dst=A(32—16)*A(32—16) 累加器 A 的高位平方
11
1
4. 乘法累加/减指令
句法
表达式
说明
字周 数期
MAC Smem,src
src=src+T*Smem
操作数与 T 寄存器值相乘后加到累加器
操作数移位后加至累加器 操作数左移 16 位加至累加器
11 11
ADD Smem[,SHIFT],src[,dst] dst=src+Smem<<SHIFT 操作数移位后加到累加器
22
ADD Xmem,SHFT,src
src=src+Xmem<<SHFT 操作数移位后加到累加器
11
ADD Xmem,Ymem,dst
, 操作数与累加器 A 高位相乘后加到累加器 B 1 1
MACA T,src[,dst]
dst=src+T*A(32—16)
T 寄存器值与累加器 A 高位相乘
11
MACAR Smem[,B]
B=rnd(B+Smem*A(32—16)) , T 寄存器值与累加器 A 高位相乘后加到累加
T=Smem
B(带舍入)
11
SUB Xmem,Ymem,dst
dst=Xmem<<16—Ymem<<16 两个操作数分别左移 16 位后相减
11
SUB #lk[,SHFT],src[,dst] dst=src—#1k<<SHFT

第三章DSP汇编指令

第三章DSP汇编指令
循环寻址图示
if 0≤ index+step < BK: index = index + step
else if index + step ≥ BK: index = index + step - BK
else if index + step< 0 index = index + step + BK
只有8条指令能使用存储器映射寄存器寻址:
LDM MMR, dst MVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy POPM MMR PSHM MMR STLM src, MMR STM #lk, MMR
7. 堆栈寻址
系统堆栈用来在中断和子程序期间自动存放程序计数器。 它也能用来存放额外的数据项或传递数据值。处理器使用一 个16-bit的存储器映射寄存器—堆栈指针来对堆栈寻址,它 总是指向存放在堆栈中的最后一个元素。
2、调用与中断指令
3、返回指令
4、重复指令和堆栈操作指令
四、装入和存储指令
装入和存储指令包括:
一般的装入和存储指令 条件存储指令 并行装入和存储指令 并行装入和乘法指令 并行存储和加件乘指令 混合装入和存储指令
1、一般的装入指令
2、存贮指令
3 并行装入和存储指令 4、条件存储指令
共有四条使用堆栈寻址方பைடு நூலகம்访问堆栈的指令:
PSHD 把一个数据存储器的值压入堆栈。 PSHM 把 一 个 存 储 器 映 射 寄 存 器 的 值 压 入 堆 栈 。 POPD 把一个数据存储器的值弹出堆栈。 POPM 把一个存储器映射寄存器的值弹出堆栈。
§3-2 特殊寻址方式说明
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

dst=src<<TS,dst=norm(src,TS)
归一化
11
POLY Smem
B=Smem<<16,A=rnd(A*T+B)
求多项式的值
11
RND src[,dst]
dst=src+215
累加器舍入运算
11
SAT src
saturate(src)
累加器饱和运算
11
SQDST Xmem,Ymem B=B+A(32—16)*A(32—16),A=(Xmem—Ymem)<<16 求距离的平方
11
MASR Smem,src
src=rnd(src—T*Smem)
从累加器中减去 T 寄存器值与操作数的乘积
(带舍入)
11
MASA Smem[,B]
B=B—Smem*A(32—16) T=Smem
, 从累加器 B 中减去操作数与累加器 A 高[,dst]
dst=src—T*A(32—16)
11
SQURS Smem,src
src=src—Smem*Smem,T=Smem 从累加器中减去操作数的平方
11
2
5. 双精度(32 位操作数)指令
句法
表达式
说明
字数 周期
DADD
If C16=0
dst=Lmem+src Lmem,src[,dst] If C16=1
双精度/双 16 位数加到累加器
11
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 寄存器值相加/减
11
DSUB Lmem,src
If C16=0
src=src—Lmem
无符号数乘法
11
SQUR Smem,dst
dst=Smem*Smem,T=Smem 操作数的平方
11
SQUR A,dst
dst=A(32—16)*A(32—16) 累加器 A 的高位平方
11
1
4. 乘法累加/减指令
句法
表达式
说明
字周 数期
MAC Smem,src
src=src+T*Smem
操作数与 T 寄存器值相乘后加到累加器
双精度/双 16 位数与 T 寄存器值相加/减 1 1
DRSUB Lmem,src
If C16=0
src=Lmem—src
If C16=1
双精度/双 16 位数中减去累加器值
src(39—16)=Lmem(31—16)—src(31—16)
src(15—0)=Lmem(15—0)—src(15—0)
22 22
ADD src,[,SHIFT][,dst]
dst=dst+src<<SHIFT
累加器移位后相加
11
ADD src,ASM[,dst] ADDC Smem,src
dst=dst+src<<ASM src=src+Smem+C
累加器按 ASM 移位后相加 操作数带进位加至累加器
11 11
ADDM #lk,Smem ADDS Smem,src
11
3
二、逻辑运算指令
1. 与逻辑运算指令
句法
表达式
说明
字数 周期
AND Smem,src
src=src&Smem
操作数和累加器相与
11
AND #lk[,SHFT],src[,dst] dst=src&#lk<<SHFT 长立即数移位后和累加器相与
22
AND #lk,16,src[,dst] dst=src&#lk<<16 长立即数左移 16 位后和累加器相与 2 2
DSP 指令一览表
附录 6 TMS320C54x 指令系统一览表(按指令功能排列)
一、算术运算指令
1. 加法指令
句法
表达式
说明
字数 周期
ADD Smem,src
src=src+Smem
操作数加至累加器
11
ADD Smem,TS,src ADD Smem,16,src[,dst]
src=src+Smem<<TS dst=src+Smem<<16
If C16=1
从累加器中减去双精度/双 16 位数
src(39—16)=src(31—16)—Lmem(31—16)
src(15—0)=src(15—0)—Lmem(15—0)
11
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
AND src[,SHIFT][,dst] dst=dst&src<<SHIFT 源累加器移位后和目的累加器相与 1 1
ANDM #lk,Smem
Smem=Smem&#lk 操作数和长立即数相与
从长操作数中减去 T 寄存器值
11
6. 专用指令 句法 ABDST Xmem,Ymem ABS src[,dst]
表达式 B=B+|A(32—16)|,A=(Xmem—Ymem)<<16 dst=|src|
说明 绝对距离 累加器取绝对值
字数 周期 11 11
CMPL src[,dst]
———
dst= s r c
Smem=Smem+#lk src=src+uns(Smem)
长立即数加至存储器 符号位不扩展的加法
22 11
2. 减法指令
句法
表达式
说明
字数 周期
SUB Smem,src
src=src—Smem
从累加器中减去操作数
11
SUB Smem,TS,src
src=src—Smem<<TS
从累加器中减去移位后的操作数
11
SUB Xmem,Ymem,dst
dst=Xmem<<16—Ymem<<16 两个操作数分别左移 16 位后相减
11
SUB #lk[,SHFT],src[,dst] dst=src—#1k<<SHFT
长立即数移位后与累加器相减
22
SUB #lk,16,src[,dst] SUB src[,SHIFT][,dst]
操作数移位后加至累加器 操作数左移 16 位加至累加器
11 11
ADD Smem[,SHIFT],src[,dst] dst=src+Smem<<SHIFT 操作数移位后加到累加器
22
ADD Xmem,SHFT,src
src=src+Xmem<<SHFT 操作数移位后加到累加器
11
ADD Xmem,Ymem,dst
从累加器中减去 T 寄存器值与操作数的乘积 1 1
MASR
Xmem,Ymem,src[,dst] dst=rnd(src—Xmem*Ymem)
, 从累加器中减去两操作数的乘积(带舍入)
T=Xmem
11
MAS Xmem,Ymem,src[,dst] dst=src—Xmem*Ymem T=Xmem
, 从源累加器中减去两操作数的乘积
dst(39—16)=Lmem(31—16)+src(31—16)
dst(15—0)=Lmem(15—0)+src(15—0)
11
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
从源累加器中减去 T 寄存器值与累加器 A 高
位的乘积
11
MASAR T,src[,dst]
dst=rnd(src—T*A(32—16))
从源累加器中减去 T 寄存器值与累加器 A 高
位的乘积(带舍入)
11
SQURA Smem,src
src=src+Smem*Smem,T=Smem 操作数平方并累加
dst=Xmem<<16+Ymem<<16 两个操作数分别左移 16 位后加到累加器 1 1
ADD #lk[,SHFT],src[,dst] dst=src+#lk<<SHFT
ADD #lk,16,src[,dst]
dst=src+#lk<<16
长立即数移位后加到累加器 长立即数左移 16 位后加到累加器
22
MACR Smem,src
dst=rnd(src+T*Smem)
操作数与 T 寄存器值相乘后加到累加器(带
舍入)
11
MACR Xmem,Ymem,src[,dst] dst=rnd(src+Xmem*Ymem)
, 两个操作数相乘后加到累加器(带舍入)
T=Xmem
11
MACA Smem[,B]
B=B+Smem*A(32—16) T=Smem
23
MACP Smem,pmad,src
src=src+Smem*pmad,T=Smem 操作数与程序存储器值相乘后加到累加器 2 3
相关文档
最新文档