表4.4.4并行加载和存储指令
语 法 ST src,Ymem ‖LD Xmem,dst ST src,Ymem ‖LD Xmem, T 表达式 Ymem=src<<(ASM–16) ‖dst=Xmem<<16 Ymem=src<<(ASM–16) ‖T=Xmem 说 明 存储累加器并行加载累加器 存储累加器并行加载T寄存器 字长 1 1 周期数 1 1 5.并行加载和乘法指令
并行加载和乘法指令有4条,见下表。
表4.4.5并行加载和乘法指令
语 法 LD Xmem , dst ‖MAC Ymem , dst_ LD Xmem , dst ‖MACR Ymem , dst_ LD Xmem,dst ‖MAS Ymem,dst_ LD Xmem,dst ‖MASR Ymem,dst_ 表达式 dst=Xmem<<16 ‖dst_=dst_+T*Ymem dst=Xmem<<16 ‖dst_=rnd(dst_+T*Ymem) dst=Xmem<<16 ‖dst_=dst_-T*Ymem dst=Xmem<<16 ‖dst_=rnd(dst_-T*Ymem) 说 明 加载累加器并行乘法累加运算 加载累加器并行乘法累加运算(可凑整) 加载累加器并行乘法减法运算 加载累加器并行乘法减法运算(可凑整) 字长 1 1 1 1 周期数 1 1 1 1 6.并行存储和加减指令
并行存储和加载指令有2条,见下表。
表4.4.6 并行存储和加减指令
语 法 ST src , Ymem ‖ADD Xmem , dst ST src , Ymem ‖SUB Xmem , dst 表达式 Ymem=src<<(ASM-16) ‖dst=dst_+Xmem<<16 Ymem=src<<(ASM-16) ‖dst=(Xmem<<16)-dst_ 说 明 存储累加器值并行加法运算 存储累加器值并行减法运算 字长 1 1 周期数 1 1 7.并行存储和乘法指令
并行存储和乘法指令有5条,见下表。
表4.4.7并行存储和乘法指令
语 法 表达式 Ymem=src<<(ASM–16) ‖dst=dst+T*Xmem Ymem=src<<(ASM–16) ‖dst=rnd(dst+T*Xmem) Ymem=src<<(ASM–16) ‖dst=dst-T*Xmem 说 明 存储累加器并行乘法累加运算 存储累加器并行乘法累加运算(带凑整) 存储器累加器并行乘减法运算 字长 周期数 1 1 1 1 1 1 ST src , Ymem ‖MAC Xmem , dst ST src , Ymem ‖MACR Xmem , dst ST src , Ymem ‖MAS Xmem , dst 13
续表
语 法 表达式 Ymem=src<<(ASM–16) ‖dst=rnd(dst-T*Xmem) Ymem=src<<(ASM–16) ‖dst=T*Xmem 说 明 存储累加器并行乘法累加运算(带凑整) 存储累加器并行乘法运算 字长 1 1 周期数 1 1 ST src , Ymem ‖MASR Xmem , dst ST src , Ymem ‖MPY Xmem , dst 8.其它存储和加载指令
有12条其它存储和加载指令,见下表。
表4.4.8 其它存储和加载指令
语 法 MVDD Xmem, Ymem MVDK Smem, dmad MVDM damd, MMR MVDP Smem, pmad MVKD dmad , Smem MVMD MMR , dmad MVMM MMRx , MMRy MVPD pmad , Smem PORTR PA , Smem PORTW Smem , PA READA Smem WRITA Smem 表达式 Ymem=Xmem dmad=Smem MMR=damd Pmad=Smem Smem=dmad dmad=MMR MMRy=MMRx Smem=pmad Smem=PA PA=Smem Smem=Pmem(A) Pmem(A)=Smem 说 明 数据存储器内部间数据传送 数据存储器内部指定地址传送数据 数据存储器向MMR传送数据 数据存储器向程序存储器传送数据 数据存储器内部指定地址传送数据 MMR向指定地址传送数据 MMRx向MMRy传送数据 程序存储器向数据存储器传送数据 从PA口读入数据 向PA口输出数据 按累加器A寻址读程序存储器并存入数据存储器 将数据按累加器A寻址写入程序存储器 字长 1 2 2 2 2 2 1 2 2 2 1 1 周期数 1 2 2 4 2 2 1 3 2 2 5 5 Ⅴ、 重复执行单条指令
重复执行单条指令是将下一条指令重复执行(RC)+1次,最多为65 536次,使用重复执行指令功能时,绝对的程序和数据地址是自动增加的。
当重复指令被解码时,所有中断(包括NMI,不包括RS)均被屏蔽,直到重复指令执行完毕。但是在响应重复执行循环中响应HOLD信号,不管状态寄存器ST1中的HM为何值。
重复指令可以使被重复的指令由多周期指令变成单周期指令,表3.30列出了这些指令。 使用长偏移地址或绝对地址的单数据操作数指令不能用于重复指令,如使用*ARn(lk)、*+ARn(lk)、*+ARn(lk)%和*(lk)寻址的指令。
不能使用RPT或RPTZ指令循环执行的指令有36条,见表3.31。
14
表.5.1 重复执行时由多周期指令变成单周期指令的指令
指 令 FIRS MACD MACP MVDK MVDM MVDP MVKD MVMD MVPD READA WRITA 有限冲击响应滤波器 带延时的乘累加 乘累加 数据存储器之间数据传送 数据存储器数据送到存储器映像寄存器中 数据存储器数据传送到程序存储器 数据存储器之间数据传送 存储器映像寄存器中数据传送到数据存储器中 程序存储器中数据传送到数据存储器中 从程序存储器读数到数据存储器 把数据存储器中的数据写到程序存储器中 表.5.2不能使用RPT或RPTZ指令重复指令的指令
指 令 ADDM ANDM B[D] BACC[D] BANZ[D] BC[D] CALA[D] CALL[D] CC[D] CMPR DST FB[D] FBACC[D] FCALA[D] FCALL[D] FRET[D] 说 明 加长立即数到数据存储器中 把数据存储器与长立即数相与 无条件跳转 跳转到累加器地址 辅助寄存器不为0跳转 条件转移 调用累加器地址 无条件调用 条件调用 和辅助寄存器相比较 长字(32位)数据存储 无条件远程跳转 远程跳转到累加器所指地址 远程调用子程序,地址由累加器指定 无条件远程调用 远程返回 INTR LD ARP LD DP MVMM ORM RC[D] RESET RET[D] RETF[D] RND RPT RPTB[D] RPTZ RSBX SSBX TRAP 指令 中断 加载辅助寄存器指针 加载数据页指针 MMR之间数据移动 数据存储器与长立即数相与 条件返回 软件复位 无条件返回 从中断返回 累加器凑整 重复执行下一条指令 块重复 重复执行下一条指令并清除累加器 状态寄存器的位复位 状态寄存器的位置位 软件中断 说明 说 明 周 期 3 3 3 2 2 4 2 2 3 5 5 15
续表
指 令 FRETE[D] IDLE 说 明 中断使能并从中断中远程返回 省电指令 XC XORM 指令 条件执行 长立即数和数据存储器相异或 说明 Ⅵ、 指令介绍及举例
本节详细介绍了TMS320C54x系列指令集,该指令集支持大量的信号处理操作及通用操作,如多重处理和高速控制等。TMS320C54x提供两种指令,一是汇编指令,另一种是代数指令。汇编指令类似指令助记符,代数指令接近汇编指令,但更便于理解。TMS320C54x开发平台都支持两种指令编程和调试,也支持汇编指令和代数指令互相转换。下面所有举例都列出了两种表达方式,前面是汇编指令表达方式,后面为代数指令表达方式。 1. ABDST
语法: 汇编指令方式 代数指令方式
ABDST Xmem, Ymem abdst(Xmem,Ymem)
操作码:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 1 1 0 0 0 1 1 X X X X Y Y Y Y 执行:(B)+|A(32~16)|→B ((Xmem)-(Ymem))<<16 →A
受OVM,FRCT和SXM影响;影响C,OVA,OVB。
说明:计算两向量Xmem, Ymem之差的绝对值。累加器A(32~16)的绝对值加到累加器B中。Xmem减Ymem之差左移16位送到累加器A中。若分数方式位为1(FRCT=1),则绝对值乘2。
指令字长:1个字。 周期数:1个周期。
【例】ABDST *AR3+,*AR4+ (abdst (*AR3+,*AR4+))
Before Instruction After Instruction A FF ABCD 0000 A FF FFAB 0000 00 0000 5433 B 00 0000 0000 B 0100 AR3 AR3 0101 0200 AR4 AR4 0201 0 FRCT FRCT 0 数据存储器
0100h 0055 0100h 0055 0200h 00AA 0200h 00AA 2.ABS
语法: 汇编指令方式 代数指令方式
ABS src[,dst] dst=|src|
16
相关推荐: