4.28335 DSP指令测试总结

更新时间:2023-10-22 22:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

符号说明

dma 数据存储器地址的低七位(7LSB) shift 左移位数(0~15)位 shift2 左移位数(0~7)位 n(x) 指定下一次辅助寄存器的(0~7)位的数值 k 8位短立即数 lk 16位短立即数 m 选择如下数据之一 0 表示对ST0操作 1 表示对ST1操作 PA 16位的IO端口或IO映射的寄存器 pma 16位的程序地地址空间 ind 是一个间接寻址变量,可以把它担供如下7种符号之一: * *+ *- *0+ *0- *BR0+ *BR0- 不变 增1 减1 加/减变址量 反向进位加/减变址量 加/减变址量其实就是基址变址寻址方式,可以很方便的实现常数数组的查找。 (反向进位方式是指加或减是从最高位开始运算,并将进位或借位送给低位,

此种方法特别适合于FFT运算。后面的四种操作符都是与AR0中的内容进行加减)

ST0

ARP OV OVM INTM

ST0<13-15> 辅助寄存器指针,加载ARP,则原ARP值送ARB.只有当执行LST #1 时,ARB与ARP加载相同的值,执行LST #0时只改变ARP,不改变ARB。 ST0<12> 溢出标志位,当OV=1时,复位,溢出条件转移指令,无溢出条件转 指令,LST指令发生时才可以被清0。 ST0<11> 溢出方式位,OVM=0时,累加器结果正常溢出;OVM=1时,正溢出,ACC=7FFF FFFFH,负溢出,ACC=8000 0000H。 ST0<9> 中断屏蔽位,INTM=0,允许响应所有的可屏蔽中断;INTM=1时则禁止。对不可屏蔽中断 RS、NMI没有影响。INTM不受LST指令影响。复位时该位为1,响应可屏蔽中断时,该位被自动置1。 退出中断时是否要手动开中断?

RS中断、SETC INTM、CLRC INTM可对INTM进行设置。

ST0<0-8>数据存储器页指针,9位的DP与一个指令的低七位一起形成一个16位的直接寻址地址。LST、LDP可以对其修改。

DP

ST1

ARB CNF TC SXM

ST1<13-15> 辅助寄存器指针缓冲器,说明同ARP。 ST1<12> 片内DARAM配置位,CNF=0,可配置的双口RAM单元区被映射到数据存储空间,CNF=1,则映射到程序存储空间。

SETC CNF、CLRC CNF、LST可对其进行修改,复位时CNF=0。 ST1<11> 测试/控制标志位,BIT、BITT、CMPR、LST、NORM影响TC位。 ST1<10> 符号扩展位,SXM=0,抑制符号扩展;SXM=1,数据通过输入定标移位器传送到累加器时将产生符号扩展。CLRC SXM、SETC SXM、LST #1可对其进行修改,复位时SXM为1。 ST1<9> 进位位,加法时进位置1,否则清0;减法时借位清0,否则置1。但在移16位的ADD或SUB指令时例外,其有进位或借位时结果一样,否则不影响C。SETC C、CLRC C、LST可对其修改。复位时C被置1。 ST1<4> XF引脚状态位,该位决定XF引脚的状态。SETC XF、CLRC XF、LST可对其修改。复位时被置1。 ST1<1:0> 乘积移位方式,当把PREG中的内容传送到CALU单元时进行移位操作,但PREG本身内容不变。SPM、LST 指令可以对其修改。复位时清0。 00 不移 01 左移1位,移去二进制补码乘法产生的额外符号位,产生Q31格式的乘积。

低位补0。

10 左移4位,移去16位×13位(常数)二进制补码乘法产生的额外符号位,

产生Q31格式的乘积。低位补0。

11 右移6位,将乘积定标,使最多作128次乘法累加不使累加器溢出,无

论ST1中SXM为何值,右移总是要进行符号扩展。

C

XF PM

一. 辅助寄存器指令。

1.MAR 修改当前辅助寄存器 MAR dma 相当于 NOP MAR ind[,ARn] 修改当前AR寄存器的值,[ARP->ARB, 修改ARP] 影响到:ARP、ARB 任何支持间接寻址的指令都可以实现MAR的操作。 MAR *+ , AR3 (ARP=0) 当前AR加1,ARB=0 , ARP=3 ;

2.SBRK #k 辅助寄存器减立即数 当前AR - k -> 当前AR

3.ADRK #k 短立即数加至辅助寄存器

当前AR + k ->当前AR

4.LAR 装载辅助寄存器 LAR ARx, dma LAR ARx, ind[, ARn] LAR ARx, #k LAR ARx, #lk 数据 -> ARx

5.SAR 存辅助寄存器 SAR ARx, dma SAR ARx, ind[, ARn] ARx -> 数据

特殊用法:与LAR一起使用,可以不通过ACC而实数据存储器间的数据交换 如:LAR AR2, 20H LAR AR3, 30H SAR AR2, 30H SAR AR3, 20H

6.BANZ AR非零跳转 BANZ pma[, ind[, ARn]] (ind默认为当前AR减1) 例如: MAR *, AR0

LAR AR1, #3 ;循环次数 = 3 + 1

PGM ADD *+, AR1 BANZ PGM, AR0 ;循环结束后,AR1 = 0FFFFH

7.CMPR 辅助寄存器比较 CMPR CM (不是#CM) 影响TC CM: = 0 测试是否 (当前AR)= (AR0) 1 < 2 > 3 !=

如果条件为真,则TC = 1,如果条件为假,则TC = 0.

二. 控制指命令

1.NOP 空操作,在建立流水线和执行延时的情况下有用。

2.CLRC control bit 清控制位 3.SETC control bit 置控制位

control bit可以是:C、CNF、INTM、OVM、SXM、TC、XF。

4.IDLE 等机 受INTM位的影响 PC+1 -> PC 进入空闲模式,片内内设保持激活状态 未被屏蔽中断激活 (这里的屏蔽是指中断控制寄存器里的屏蔽位(0004H)) INTM=0,程序转移到它所影响的中断服务程序 INTM=1,程序返回IDLE的下一条指令继续执行。如时是不可蔽屏中断MNI或RESET,进中断服务程序。

5.BIT 位测试 BIT dma, bit code (不是# bit code) BIT ind, bit code[, ARn] 影响TC, 数据被指定的位复制到TC,测试的位号=15 – bit code,所以要测试第6位的,那么bit code = 9。 我们可以在头文件中定义:BIT0 .set 15 BIT1 .set 14 …… 则在写BIT指令时就符合我们的习惯用法,如:BIT *, BIT0

6.BITT 按TREG进行位测试 BITT dma BITT ind[, ARn] 参考BIT指令,相当于的TREG低四位赋值给bit code后执行。

7.LDP 装载页面指针 LDP dma LDP ind[, ARn] LDP #k (k如果超过9位,编译时会发出警告并丢弃高7位) 影响DP位,LST #0也可以修改DP。

8.LST 装载状态寄存器 LST #m, dma m=0加载到ST0,m=1加载到ST1 LST #m, ind[, ARn] 影响ST0、ST1中除INTM外所有的标志位 指令可用来中断或程序调用后来恢复状态寄存器 LST #0改变ST0的ARP,ST1的ARB不受影响(原本是ARP改变时,原ARP值存入ARB)

LST #m, ind, ARn对ARP、ARB的影响同上,但乎略了ARn的影响。原指令等同于LST #m, ind (不写ARn可读性更好),即对ARP、ARB的影响来自间接寻址的数据。

状态寄存器的保留位总是读1,写操作对这些位无影响。

测试时数据一直不对,原来是间接寻址时,误认为是把当前AR的值装入STm,其实当前AR的值只是一个地址,装入的是AR值所指向的地址单元。修改程序后结果正确。

9.SST 保存状态寄存器 SST #m, dma 不论DP为何值,直接寻址总是保存在第0页 SST #m,ind[, ARn]

10.SPM 设定乘积输出方式 SPM constant(0~3) (不是# constant) constant->PM 参考PM说明

当constant超出范围时编译时不是警告后取低两位,而是错误提示。

11.RPT 重复下一条指令 RPT dma RPT ind[, ARn] RPT #k

重复执行下条指令N次,N为RPTC(16位重复计数器)的初始值加1。 在上下文转换时不能保存PRTC,PRTC被清0。器件复位PRTC清0。 重复循环可看作是可中断多期指令。

对于块移动,相乘/累加和规格化等操作,RPT特别有用。 重复指令本身不能被重复。如:RPT #1

RPT #3

编译可以通过,但运行时执行第二条RPT后,RPTC != 3,PRTC = 0。

12.POP 弹出栈至累加器 TOP(堆栈顶) -> ACC (硬件堆栈是FIFO 的8个单元) 堆栈中的每个值都复制到地址加1的堆栈单元。 要注意没有检查下溢的方法。

13.PUSH 累加器低位入栈 ACC -> TOP 堆栈中的每个值者复制到地址减一单元,最后一个数据丢失。

14.POPD 弹出堆栈至数据存储器 POPD dma POPD ind[, ARn]

15.PSHD 数据入栈 PSHD dma PSHD ind[, ARn]

本文来源:https://www.bwwdw.com/article/5z3f.html

Top