3986.net
小网站 大容量 大智慧
相关标签
当前位置:首页 >> 工学 >>

第三章 DSP的指令系统


第三章 DSP的指令系统

3.2 汇编程序语法

汇编程序语法
TMS320 的 汇 编 程 序 包 含 汇 编 指 令 (伪指令,assembler directives)、 汇编语言指令(assembly language instructions ) 、 宏 指 令 ( macro directives)和注释(comments)。

C54的指令既可以是助记符方 式,也可以是代数式方式

助记符方式汇编程序语法

[label][:] mnemonic [operand list] [;comment]
[标号][:] 助记符

[操作数]

[;注释]

汇编程序语法
? 所有的语句必须由语句标号、空格、*

号或 ;号开头。 ?语句标号不是必须的,如果用,就必须 在第一列。
?语句中的各部分之间,由一个或多个空

格分开。 ?注释不是必须的。注释可以从第一列的 * 号或 ;号开头;如果不是从第一列开 始,就必须用 ;号开头。

语句标号
由字母、数字、_、$组成,最多不 超过32个字符,对大小写敏感,第 一个字符不能是数字。后跟 :,但 分号不是语句标号的组成部分。

助记符
? 助记符不允许从第一列开始,否则

被认为是语句标号。
?助记符可以是机器指令(如ABS,

MPYU , SPH 等 ) 、 伪 指 令 ( 如 .data, .list, .set 等 ) 、 宏 指 令 (如.macro, .var, .mexit等)和宏调用。

操作数
操作数可以是常数、符号或表达式。 当操作数多于一个时,用逗号分开。

常数
? 二进制常数(如01B或01b)
? 八进制常数(如10Q或10q) ? 十进制常数(如23) ? 十六进制常数(如78H或78h) ? 字符常数(如‘A’或‘b’)

? 字符串(如“sample
? 汇编时使用的常数

program”)

表达式
? 表达式是一个常数、符号、或用算

术运算符连接起来的常数或符号。 表达式的值的范围为-32768到32767

常用符号
Smem 单访问数据存储器操作数 Ymem 双访问数据存储器操作数 Xmem 双访问数据存储器操作数 #1K 立即数 SRC 源累加器(A或B) DST 目前的累加器(A或B) TC ST0中的测试/控制标志位 TS T寄存器中的位(5-0),确定的移位数 SHIFT 4BIT 指示的移位数(0-15) ASM STI 中的5位累加器移位模式(-16..15)

FRCT Fractional mode bit in ST1 OVA Overflow flag for accumulator A in ST0 OVB Overflow flag for accumulator B in ST0 OVdst Overflow flag for the destination accumulator (A or B) OVdst_ Overflow flag for the opposite destination accumulator (A or B) OVsrc Overflow flag for the source accumulator (A or B) OVM Overflow mode bit in ST1 PA 16-bit port immediate address (0-65535) PAR Program address register SXM Sign-extension mode bit in ST1 T Temporary register C Carry bit in ST0 pmad 16-bit immediate program-memory address (0 Pmem Program-memory operand dmad 16-bit immediate data-memory address (0 Dmem Data-memory operand

3.3 54CX指令

指令
TMS320C54x的指令集有近两百条指令, 按功能分为如下几类:
?算术运算指令
?逻辑运算指令 ?程序控制指令

?装入和存储指令

算术运算指令
? 加法指令 ? 减法指令 ? 乘法指令 ? 乘加指令 ? 乘减指令 ? 双数/双精度指令 ? 特殊操作指令

加法指令

EXAMPLE?p65 ADD *AR3+,14,A; 执行前 A C AR3 SXM 0100h
00 0000 1200
LEFT SHIFT 14BIT ADD WITH ACCA, AR3 INC

执行后

A 00 0540 1200 1 0 C 0100 AR3 0101 1 SXM 1 0100h 1500 DATA MEM

1500

0001 0101 0000 0000 00 0101 0100 0000 0000 0000 0000 0000 00 540000H
SXM 为ST1中的符号扩展模式位

;B=(A>>8)+B

;B=4568h<<8+A

EXAMPLE: ADDC *+AR2(5),A; AR2 INC FIRST, ADD 执行前 A C AR2
00 0000 0013
C AND SMEM WITH ACCA,

执行后 A 1 C 0100 AR2
00 0000 0018

0 0105

DATA MEM 0105h 0004

0105h

0004

EXAMPLE: ADDS *AR2-, A;
ADD SMEM WITH ACCA, AR2 DEC,RESULT IN A

ADDS : 无符号数相加 执行前 A B AR2
00 0000 0003
X 0104

执行后 A B AR2
00 0000 F009

0 0103

DATA MEM 0104h F006

0104h

F006

ADDM #1K,Smem
ADDM #123BH, *AR4+

ADDM #0FFF8H, *AR4+

减法指令

EXAMPLE: SUB *AR1+,14,A; 执行前 A C AR1 SXM 0100h
00 0000 1200
(AR1) LEFT SHIFT 14BIT, A-(AR1) SEND A

执行后
FF FAC0 1200

A X C 0100 AR1 1 SXM 0100h

0 0101 1 1500 DATA MEM

1500

0001 0101 0000 0000 00 0101 0100 0000 0000 0000 0000 0000 00 540000H
SXM 为ST1中的符号扩展模式位

SUBB Smem, src

SUBC Smem, src

SUBS Smem, src

减法指令使用举例
stm stm sub #60h, ar3 ;将变量temp1的地址装入ar3寄存器 #61h, ar2 ;将变量temp3的地址装入ar3寄存器 *ar2+, *ar3,b ;将变量temp3左移16位同时变量 ; temp2也左移16位,然后相减,结 ; 果放入寄存器B(高16位)中,同 ; 时ar2加1。 b,63h ;将相减的结果(高16位)存入变量63h

sth

利用SUBC实现除法
?

在‘C54X中没有提供专门的除法指令, 一般有两种方法来完成除法。一种是用 乘法来代替,除以某个数相当于乘以其 倒数,所以先求出其倒数,然后相乘。 这种方法对于除以常数特别适用。另一 种方法是使用SUBC指令,重复16次减法 完成除法运算。

利用SUBC完成Temp1/Temp2
ld
rpt subc stl sth

temp1,B ;将被除数temp1装入B寄存 ;器的低16位 #15 ;重复SUBC指令16次 temp2,b ;使用SUBC指令完成除法 B,temp3 ;将商(B寄存器的低16位) ;存入变量temp3 B,temp4 ;将余数(B寄存器的高16位) ;存入变量temp4
注: 实际上是完成整数除法(jiaoP66)

乘法指令
r n d 表示对乘法结果加 32768, 结果低16位清零

FCRT=1,小数方式,结果左移一位,以消除多余的符号位:2AH… 54H J P67: 如果FCRT=0,自己分析!

MPY Xmem , Ymem, dst

MPYA Smem;
High 16bit

MPYU Smem,dst;

乘加和乘减指令

乘加(TMS320C50)
MAC dma,pma 程序存储器的值乘以 数据存储器的值并累加到ACC (ACC) + (shifted P register) -> ACC (dma) -> TREG (dma) x (pma, addressed by FPC) -> P register Modify AR(ARP) and ARP as specified (FPC) + 1 -> FPC

Example

Example

逻辑运算指令
AND INSTRUCTIONS

OR INSTRUCTIONS

XOR INSTRUCTIONS

Example : AND Smem, src

Example : AND src,SHIFT,dst

Example : ANDM #1K, Smem

Example : OR Smem, src

Example : XOR Smem, src XOR src,SHIFT, dst

移位指令

ROL src

ROLTC src

TC

ST0中的测试/控制标志位

ROR src

Example:

;SRC 算术移位

A(4) TO C; A>>4 TO B; A(39) TO B(39..35)

SFTC src

;SRC 逻辑移位

测试指令

BIT Xmem,BITC;

BITC= 3, 0100H(BIT 15-3) TO TC 0111 0110 1000 1000 Bit 12=1

BITF Smem,#1K;

BITT Smem

T(3-0)=Ch=12 0100H(15-12)=0100H(3)=1

TC=1

CMPM Smem,#1K

CMPR CC , ARX

CC=2=10b, IF (AR4) > (AR0), TC=1, ELSE TC=0

程序控制指令
?转

移指令

(B,BC);

?调用指令 (CALL) ?中断指令

(INTR,TRAP)

?返回指令 (RET)
?循环指令 (RPT) ?堆栈操作指令 (FRAME,POP) ?混合程序控制指令 (IDLE,NOP)

转移指令

B[D] pmad

BACC[D] src

BANZ[D] pmad,sid
If ((ARx)) not equal 0, THEN PC=pmad, ELSE PC+2

BACK

调用指令

TOS 堆栈

BACK

中断指令

C54X from FF80H to FFFFH ARE Interrupt Vector Table Per interrupt 4 words( int0 ff80h-83h,… int3 8ch-8fh)

BACK

返回指令

If the return is delayed (specified by the D suffix), the two 1word instructions or one 2-word instruction following this instruction is fetched and executed.

FRETE[D]

RC[D] cond [, cond [, cond]]

RET[D]

RETE[D]

RETF[D]

BACK

循环指令

1: RPT Smem 2: RPT # K 3: RPT # lk

RPTB[D] pmad

RPTZ dst, # lk

BACK

堆栈操作指令

MMR: Memory-mapped register

FRAME K

PSHD Smem

PSHM MMR

POPD Smem

POPM MMR

BACK

程序控制指令

IDLE

K

MAR

Smem

CMPT Compatibility mode bit in ST1

RSBX N, SBIT
N=0,1 FOR ST0,ST1

SSBX N, SBIT N=0,1 FOR ST0,ST1

BACK

装入和存储指令
? 一般的装入和存储指令
? 存储指令 ? 并行装入和乘法指令 ? 混合装入和存储指令

一般的装入指令

DLD Lmem, dst

C16 Dual 16-bit/double-precision arithmetic mode bit in ST1

LDM MMR, dst

BACK

LDR Smem, dst

LDU Smem, dst

存贮指令

DST src, Lmem

1: ST T, Smem 2: ST TRN, Smem 3: ST # lk, Smem

1: STH src, Smem 2: STH src, ASM, Smem 3: STH src, SHFT, Xmem 4: STH src [, SHIFT], Smem

1: STL src, Smem

2: STL src, ASM, Smem
3: STL src, SHFT, Xmem 4: STL src [, SHIFT], Smem

STM # lk, MMR STLM src, MMR

1K ?MMR (src(15–0)) ?MMR

;AR7的低7bit 为0010000B恰 为AR0地址 0010H

This instruction stores a 16-bit constant lk into a memory-mapped register MMR or a memory location on data page 0 without modifying the DP field in status register ST0. The nine MSBs of the effective address are cleared to 0 regardless of the current value of DP or of the upper nine bits of ARx.

STLM src, MMR

(src(15–0)) ?MMR

ST src, Ymem || SUB Xmem, dst

ST src, Ymem || ADD Xmem, dst (0200h)=1000 0100 0010 0001 0000 0000 0000 0000

1: ST src, Ymem || LD Xmem, dst 2: ST src, Ymem || LD Xmem, T

STRCD Xmem, cond

If A>=T, T save to (ar5)

If the condition is true, this instruction stores the content of T into the datamemory location Xmem. If the condition is false, the instruction reads Xmem and writes the value in Xmem back to the same address; thus, Xmem remains the same. Regardless of the condition, Xmem is always read and BACK updated.

并行装入和乘法指令

LD Xmem, dst || MAC[R] Ymem [ , dst_ ] dst_: If dst = A, then dst_ = B; if dst = B, then dst_ = A

This instruction loads the high part of dst (bits 31–16) with a 16bit dual datamemory operand Xmem shifted left 16-bits. In parallel, this instruction multiplies a dual data-memory operand Ymem by the content of T, adds the result of the multiplication to dst_, and stores the result in dst_. If you use the R suffix, this instruction optionally rounds the result of the multiply and accumulate operation by adding 215 to the result and clearing the LSBs (15–0) to 0, and stores the result in dst_.

LD Xmem, dst || MAS[R] Ymem [, dst_ ]

LTD Smem

BACK

混合装入和存储指令
BACK

数据块移动MVDD、MVDP、MVPD

在C54x系列DSP中,数据与数据存 储器、数据与程序存储器之间可以 方便的进行数据传输,结合单指令 循环可实现数据块移动。如16个系 数的移动:

MVDD Xmem, Ymem

(Xmem)

Ymem

This instruction copies the content of the data-memory location addressed by Xmem to the data-memory location addressed by Ymem.

MVDK Smem, dmad
RC Repeat counter

; assume RC=0

MVDM dmad, MMR

MVDP Smem, pmad

MVKD dmad, Smem

MVMD MMR, dmad

This instruction moves data from a memory-mapped register MMR to data memory. The data-memory destination is addressed with a 16bit immediate value dmad. Once the repeat pipeline is started, the instruction becomes as ingle-cycle instruction.

MVMM MMRx, MMRy

(MMRx)

MMRy

This instruction moves the content of memory-mapped register MMRx to the memory-mapped register MMRy. Only nine operands are allowed: AR0–AR7 and SP. The read operation from MMRx is executed in the decode phase. The write operation to MMRy is executed in the access phase.

MVPD pmad, Smem

PORTR PA, Smem

This instruction reads a 16-bit value from an external I/O port PA (16-bit immediate address) into the specified data-memory location Smem.

PORTW Smem, PA

This instruction writes a 16-bit value from the specified datamemory location Smem to an external I/O port PA.

READA Smem

WRITA Smem

BACK

FIRS指令

FIRS指令用于 线性相位滤波器 的处理。一个如 右图的8阶线性 相位滤波器的输 出表达式

FIRS

*AR2+, *AR3+, COEFFS

y = (c0*x0) + (c1*x1) + (c2*x2)
+… + (c6*x6) + (c7*x7)

= c0(x0 + x7) + c1(x1 + x6) +

c2(x2 + x5) + c3(x3 + x4)

FIRS Xmem, Ymem, pmad

0077H X1234h+(B) to B

(0100h)+(0200h) then left shift 16 to A

Viterbi译码指令 DADST、DSADT、CMPS 在信道均衡和解码中经常会使用到 Viterbi算法,C54x为此提供了专门 的硬件和指令。根据输入信号确定 分支似然概率增加量D1/D2,放在T 寄存器中,TRN存储可能信号译码 输出。

Viterbi译码指令 DADST、DSADT、CMPS

DADST Lmem, dst C16 Dual 16-bit/doubleprecision arithmetic mode bit in ST1 Lmem 32-bit single data-memory operand using long-word addressing

1534+2345 to A(39-16);; 34546-2345 TO a(15-0)

DSADT Lmem, dst

CMPS src, Smem

TRN Transition register

Viterbi译码指令 DADST、DSADT、CMPS

最小均方运算LMS

在进行自适应滤波等操作中经常会使 用LMS算法,C54x提供的LMS指令 方便了编程。如下图所示的自适应 滤波器设计中,滤波器系数修正公 式为:

LMS Xmem, Ymem

550000+8000+A=0077CD0888h stores result in A 55hxAAh+b send to B

最小均方运算LMS

y (i ) ?

N ?1 k ?0

? wk x (i ? k )

基于LMS的自适应滤波程序

数据归一化相关指令EXP、NORM

归一化一个数是先求其指数,然后 把它调整到最大精度格式。实现方 法如下:

EXP src

LEADING BIT IS 33, 33-8=25

This instruction computes the exponent value, which is a signed 2s-complement value in the –8 to 31 range, and stores the result in T. The exponent is computed by calculating the number of leading bits in src and subtracting 8 from this value. The number of leading bits is equivalent to the number of left shifts needed to eliminate the significant bits from the 40-bit src with the exception of the sign bit. The src is not modified after this instruction. The result of subtracting 8 from the number of leading bits produces a negative exponent for accumulator values that have significant bits in the guard bits (the eight MSBs of the accumulator used in error detection and correction). See the normalization instruction

NORM src [, dst]

The signed number contained in src is normalized and the value is stored in dst or src, if dst is not specified. Normalizing a fixed-point number separates the number into a mantissa and an exponent by finding the magnitude of the sign-extended number.


推荐相关:

TI公司三大系列DSP芯片指令系统比较_计算机硬件及网络_IT/计算机_专业资料。TI 公司三大系列 DSP 芯片指令系统比较摘要: DSP 技术已成为目前电子工业领域...


DSP教案_理学_高等教育_教育专区。DSP 技术与应用 技术与应用 08 电子信息本科...理论课□第三章 DSP 指令系统及特点 案月 日 (第 1 学期) 日 至 课时数...


DSP指令一览表_计算机硬件及网络_IT/计算机_专业资料。DSP指令DSP 指令一览表附录 6 TMS320C54x 指令系统一览表(按指令功能排列) 一、算术运算指令 1. 加法指令...


DSP指令一览表 8页 免费 ARM应用系统开发详解(入... 37页 免费 c54xx系列DSP汇编指令详... 98页 免费 第4章 DSP汇编语言与混合... 92页 1下载券 ...


DSP 指令一览表附录 6 TMS320C54x 指令系统一览表(按指令功能排列) 一、算术...TMS320F24x DSP指令集 4页 1下载券 第三章 DSP的指令系统 165页 1下载券...


复习大纲第一章 绪论 教学内容:DSP 芯片的特点;DSP 芯片的发展;DSP 芯片的...第三章 TMS320C54X 的指令系统 教学内容:寻址方式;指令系统;流水线。 基本...


作业、实验时 数 4 4 第三章 C54x DSP 结构指令系统及开发工具 指令系统;开发过程及开发工 2 具。 第四章汇编语言程序设计 程序的控制与转移、堆栈的使用方法...


掌握 DSP 芯片汇编语言的寻址方式、 第三章 DSP 指令 讲授、示范、 出勤、操作情 流水线操作概念,对指令系统有初步 系统及特点 操作 况、作业 了解。 第三章 ...


12 第三章 DSP 软件部分设计 ......DSP 硬件器的结构、各部件基本工作原理,在软件上掌握 DSP 的指令系统、程 序设计方法,学会 TMS320 系列中 1 至 2 种...


基于DSP 的最小应用系统设计第一章 绪论 1.1 本论文的背景随着信息技术的飞速...当前的DSP 多数基于RISC(精简指令集计算机)结构, 且进入了VLSI(超大规模集成电路...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com