当前位置:文档之家› 第五章 DSP的汇编指令

第五章 DSP的汇编指令

2、累加器溢出状态(ACOVx)
当AC0~AC3寄存器溢出时,目的累加器的溢出状态位ACOV0~3被置1。 以下情况会清零ACOVx位
复位; CPU执行一个跳转,条件调用,条件返回或执行一条测试ACOVx的指令; 通过BCLR指令清除; 溢出位检测受ST1_55中的M40位影响,即:
进位标志的检测受ST1_55中的M40位影响 M40=0时: 进位标志的检测与第31位相关
M40=1时: 进位标志的检测与第39位相关
第五章 TMS320C55x系列DSP的汇编指令
5、分数模式(FRCT)
FRCT=0:关闭小数模式
FRCT=1:打开小数模式
BCLR FRCT BSET FRCT
第五章 TMS320C55x系列DSP的汇编指令
3、乘法指令 [(1)语法、(2)操作数、(3)状态位] 常规乘法(MPY):在D单元的一个MAC中执行乘法运算。 乘加和乘减运算(MAC/MAS):在D单元的一个MAC中执行乘法,然 后执行加法或减法运算。
双乘加/减(Dual-MAC/S): 利用D单元的两个MAC同时执行两个乘法或
在实际编程时,只要指令满足这三条基本规则,即可写成并行 方式,然后进行编译。如果编译有错,则可参照pp.77-78的8条 详细规则进行检测。
第五章 TMS320C55x系列DSP的汇编指令 5.4 TMS320C55x DSP的汇编指令
TMS320C55x DSP的汇编指令按操作分为以下6类 算术运算指令 比特操作指令 一条指令的属性包括: 语法(Syntax) 执行的操作 操作数 相关的状态位 是否有并行使能位 长度(Size) 执行周期(Cycles) 在流水线(Pipeline)上的执行阶段 在哪个功能单元执行(Executed) 是否可以重复执行等
第五章 TMS320C55x系列DSP的汇编指令
规则3:并行指令含有两个数据存储器访问时,必须使用间 接寻址模式。
以上三条规则是基本规则,缺一不可。
例如:
MOV *AR,AC1 ||ADD @var,AR2 ;2个字节 ;3个字节
两条指令访问两个数据存储单元,第二条指令没有使用间接
寻址,不满足规则3,所以不能并行。
;A单元的ALU来完成
第五章 TMS320C55x系列DSP的汇编指令
(3)内置并行指令与用户自定义并行指令的混合形式 在不引起资源冲突的情况下,将隐含并行的指令按用户自定 义方式与另一条指令并行执行。例:
MPY *AR0, *CDP, AC0 ;隐含的或内置的并行指令 :: MPY *AR1, *CDP, AC1 ||MOV #5, AR1
M40=0时,D单元按32位运算模式,因此累加器溢出、进位、符号扩
展和移位操作都以第31比特为准。
M40=1时,D单元按40位运算模式,因此累加器溢出,进位,符号扩
展和移位操作都以第39比特为准。
BCLR M40
; Clear M40
BSET M40
; Set M40
第五章 TMS320C55x系列DSP的汇编指令
乘加/乘减运算。 AC0 02 6000 3400 AC1 00 C000 0000 M40 1 0 AC0 02 6000 3400 AC1 00 4800 0000 M40 1 0 0
例1(常规乘法)
MPY AC0,AC1 说明:AC1= AC0(32~16)×AC1(32~16)
FRCT ACOV1
第五章 TMS320C55x系列DSP的汇编指令
可以作为指令执行的条件有: (1)累加器的值
ACx==#0
ACx<=#0 (2)溢出标志和进位标志 overflow(ACx) CARRY
ACx!=#0
ACx>#0 !overflow(ACx) !CARRY *ARx!=#0 *ARx>#0
பைடு நூலகம்ACx<#0
第五章 TMS320C55x系列DSP的汇编指令
1、高速数字信号处理中常采用汇编语言编程。 2、汇编语言中的两种指令集 (1) 助记符指令集:有助于记忆的符号来表示指令。 (2) 代数指令集:类似于代数表达式,运算关系清楚明了。
注意:DSP的软件开发工具只支持单一的指令形式,不支持助记
符指令和代数指令的混合形式。 3、术语、符号和缩写见P93的表5-1 4、运算符见表5-2
例1(常规减法):
BCLR CARRY ;BORROW=1 AMOV #010000h,XAR1 AMOV #0300h,AR1 MOV #0200h,* AR1 MOV #0300h,AC0 SUB *AR1,BORROW,AC0,AC1 ; AC1=AC0-(*AR1)-BORROW=00FFh
第五章 TMS320C55xDSP的汇编指令
5.1状态比特和 执行条件 一条指令的执 行可能会受到某些 状态位的影响,也 可能会改变某些状 态位的值,这些状 态位都在状态寄存 器。
第五章 TMS320C55x DSP的汇编指令
1、40比特运算模式(M40)
用于控制D单元的运行模式,会影响累加器溢出、进位标志等。
7 、测试/控制标志(TCx)
主要用于保存某些测试指令的结果;
可以作为指令执行的条件;
举例:CMP AC1 = = T1, TC1;;如果AC1 = T1,那么TC1=1。
BCLR TC1 BSET TC1 ; Clear TC1 ; Set TC1
BCLR TC2 ; Clear TC2 BSET TC2 ; Set TC2
扩展辅助寄存器操作指令
逻辑操作指令 MOVE操作指令 程序控制指令
第五章 TMS320C55x系列DSP的汇编指令
例如: -----------------------------------------------------------------------------------| ADD uns(*AR3),CARRY,AC1,AC0 | No | 3 | 1 | X | D - ALU | -----------------------------------------------------------------------------------说明: NO:不能并行执行 3:指令的长度为3字节 1:周期为1 X:在X(执行)流水线阶段处理 D – ALU:在D单元ALU执行。 执行结果:AC0=(*AR3)+CARRY+AC1 状态位: Affected by CARRY,C54CM,M40等
FRCT
0 ACOV1
第五章 TMS320C55x系列DSP的汇编指令
4、双16比特算术指令: [(1)语法、(2)操作数、(3)状态位] 在D单元中利用其ALU的双16比特模式,同时执行(并行)两个16
比特算术运算,包括加-减、减-加、两个加和两个减运算。
移位指令:条件移位、带符号的移位。
寄存器修改:辅助寄存器修改、堆栈指针SP修改 隐含的并行指令
专用指令:绝对值、归一化、有限冲激响应滤波FIR、最小均方LMS等
第五章 TMS320C55x系列DSP的汇编指令
1、加法指令 在D单元或A单元中执行加法运算。 当有一个目的操作数为累加器ACx时,在D-ALU中执行。 当目的操作数为辅助或临时寄存器时,在A-ALU中执行 当目的操作数为Smen时,在D-ALU中执行 当移位位数不是立即数16时(移位指令),在D单元的移位器中执 行。
这类指令是利用双MAC来实现的,C55x中,这视为一条单指令。
第五章 TMS320C55x系列DSP的汇编指令
(2) 用户自定义的双指令的并行 这两条指令的并行是通过用户或C编译器定义的。两条指令 同时执行两个操作,用并行符“||”区分并行执行的两条指令。 例:
MPYM *AR1+, *CDP, AC1 ;D单元的一个MAC来完成 ||XOR AR2,T1
第五章 TMS320C55x系列DSP的汇编指令
5.3 C55x指令的并行执行 1、并行指令的分类
C55只支持有限的指令并行执行,能支持三种类型的指令并行。
(1) 隐含的或内置的单指令并行
一条指令同时执行两个不同的操作,用“::”来分隔指令的两
个部分。
MPY *AR0, *CDP, AC0 :: MPY *AR1, *CDP, AC1
; Clear FRCT ; Set FRCT
第五章 TMS320C55x系列DSP的汇编指令
6、中断模式(INTM)
INTM=0:允许所有可屏蔽中断
INTM=1:关闭所有可屏蔽中断
BCLR INTM ; Clear INTM
BSET INTM
; Set INTM
第五章 TMS320C55x系列DSP的汇编指令
(1)语法
(2)操作数 (3)状态位 举例:ADD uns(*AR3),CARRY,AC1,AC0
第五章 TMS320C55x系列DSP的汇编指令
2、减法指令 常规减法:在D单元或A单元执行减法操作。
条件减法:在D单元中执行,先执行减法,然后根据结果进行移位。
条件加/减:在D单元根据TC1或TC2的状态执行加/减运算。 (1)语法;(2)操作数;(3)状态位
;用户自定义并行
第五章 TMS320C55x系列DSP的汇编指令
2、指令并行的规则 只有满足以下三条基本规则,并行指令才可以使用,若非 法使用并行指令,可能会导致不可预测的执行结果。 规则1:指令长度要少于6个字节
受I单元指令译码器的限制,只有两条指令长度不超过6字节的,
才可以作为并行处理。[IBQ大小为64字节/译码器大小为6字节] 规则2:没有硬件资源冲突 如果两条指令不存在操作数、总线、内部交叉单元和寄存器 之间的冲突,则可以并行。
相关主题