ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:28.18KB ,
资源ID:28514950      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28514950.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(428335 DSP指令测试总结要点.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

428335 DSP指令测试总结要点.docx

1、428335 DSP指令测试总结要点符号说明 dma 数据存储器地址的低七位(7LSB) shift 左移位数(015)位 shift2 左移位数(07)位 n(x) 指定下一次辅助寄存器的(07)位的数值 k 8位短立即数 lk 16位短立即数 m 选择如下数据之一 0 表示对ST0操作 1 表示对ST1操作PA 16位的IO端口或IO映射的寄存器 pma 16位的程序地地址空间 ind 是一个间接寻址变量,可以把它担供如下7种符号之一: * *+ *- *0+ *0- *BR0+ *BR0- 不变增1减1 加/减变址量 反向进位加/减变址量 加/减变址量其实就是基址变址寻址方式,可以很方便

2、的实现常数数组的查找。 (反向进位方式是指加或减是从最高位开始运算,并将进位或借位送给低位,此种方法特别适合于FFT运算。后面的四种操作符都是与AR0中的内容进行加减)ST0ARP ST0 辅助寄存器指针,加载ARP,则原ARP值送ARB.只有当执行LST #1 时,ARB与ARP加载相同的值,执行LST #0时只改变ARP,不改变ARB。OV ST0 溢出标志位,当OV=1时,复位,溢出条件转移指令,无溢出条件转 指令,LST指令发生时才可以被清0。OVM ST0 溢出方式位,OVM=0时,累加器结果正常溢出;OVM=1时,正溢出,ACC=7FFF FFFFH,负溢出,ACC=8000 00

3、00H。INTM ST0 中断屏蔽位,INTM=0,允许响应所有的可屏蔽中断;INTM=1时则禁止。对不可屏蔽中断RS、NMI没有影响。INTM不受LST指令影响。复位时该位为1,响应可屏蔽中断时,该位被自动置1。 退出中断时是否要手动开中断? RS中断、SETC INTM、CLRC INTM可对INTM进行设置。DP ST0数据存储器页指针,9位的DP与一个指令的低七位一起形成一个16位的直接寻址地址。LST、LDP可以对其修改。ST1ARB ST1 辅助寄存器指针缓冲器,说明同ARP。CNF ST1 片内DARAM配置位,CNF=0,可配置的双口RAM单元区被映射到数据存储空间,CNF=1

4、,则映射到程序存储空间。 SETC CNF、CLRC CNF、LST可对其进行修改,复位时CNF=0。TC ST1 测试/控制标志位,BIT、BITT、CMPR、LST、NORM影响TC位。SXM ST1 符号扩展位,SXM=0,抑制符号扩展;SXM=1,数据通过输入定标移位器传送到累加器时将产生符号扩展。CLRC SXM、SETC SXM、LST #1可对其进行修改,复位时SXM为1。C ST1 进位位,加法时进位置1,否则清0;减法时借位清0,否则置1。但在移16位的ADD或SUB指令时例外,其有进位或借位时结果一样,否则不影响C。SETC C、CLRC C、LST可对其修改。复位时C被置

5、1。XF ST1 XF引脚状态位,该位决定XF引脚的状态。SETC XF、CLRC XF、LST可对其修改。复位时被置1。PM ST1 乘积移位方式,当把PREG中的内容传送到CALU单元时进行移位操作,但PREG本身内容不变。SPM、LST 指令可以对其修改。复位时清0。00不移01 左移位,移去二进制补码乘法产生的额外符号位,产生Q31格式的乘积。低位补0。10左移位,移去16位13位(常数)二进制补码乘法产生的额外符号位,产生Q31格式的乘积。低位补。11右移位,将乘积定标,使最多作128次乘法累加不使累加器溢出,无论ST1中SXM为何值,右移总是要进行符号扩展。一 辅助寄存器指令。MA

6、R 修改当前辅助寄存器 MAR dma 相当于 NOP MAR ind,ARn 修改当前AR寄存器的值,ARP-ARB, 修改ARP 影响到:ARP、ARB 任何支持间接寻址的指令都可以实现MAR的操作。 MAR *+ , AR3(ARP=0) 当前AR加,ARB=0 , ARP=3 ;SBRK #k 辅助寄存器减立即数 当前AR - k - 当前ARADRK #k 短立即数加至辅助寄存器当前AR + k -当前ARLAR 装载辅助寄存器 LAR ARx, dma LAR ARx, ind, ARn LAR ARx, #k LAR ARx, #lk 数据 - ARxSAR 存辅助寄存器 SAR

7、 ARx, dma SAR ARx, ind, ARn ARx - 数据特殊用法:与LAR一起使用,可以不通过ACC而实数据存储器间的数据交换如:LAR AR2, 20H LAR AR3, 30H SAR AR2, 30H SAR AR3, 20HBANZ AR非零跳转 BANZ pma, ind, ARn (ind默认为当前AR减1)例如: MAR *, AR0LAR AR1, #3 ;循环次数 = 3 + 1PGM ADD *+, AR1 BANZ PGM, AR0 ;循环结束后,AR1 = 0FFFFH CMPR 辅助寄存器比较 CMPR CM (不是#CM) 影响TC CM: = 0

8、测试是否(当前AR)= (AR0) 1 3 !=如果条件为真,则TC = 1,如果条件为假,则TC = 0.二 控制指命令NOP 空操作,在建立流水线和执行延时的情况下有用。CLRC control bit 清控制位SETC control bit 置控制位control bit可以是:C、CNF、INTM、OVM、SXM、TC、XF。IDLE 等机 受INTM位的影响 PC+1 - PC 进入空闲模式,片内内设保持激活状态 未被屏蔽中断激活(这里的屏蔽是指中断控制寄存器里的屏蔽位(0004H) INTM=0,程序转移到它所影响的中断服务程序 INTM=1,程序返回IDLE的下一条指令继续执行

9、。如时是不可蔽屏中断MNI或RESET,进中断服务程序。BIT 位测试 BIT dma, bit code (不是# bit code) BIT ind, bit code, ARn 影响TC, 数据被指定的位复制到TC,测试的位号15 bit code,所以要测试第位的,那么bit code = 9。 我们可以在头文件中定义:BIT0 .set 15 BIT1 .set 14 则在写BIT指令时就符合我们的习惯用法,如:BIT *, BIT0BITT 按TREG进行位测试 BITT dma BITT ind, ARn 参考BIT指令,相当于的TREG低四位赋值给bit code后执行。LDP

10、 装载页面指针 LDP dma LDP ind, ARn LDP #k (k如果超过9位,编译时会发出警告并丢弃高7位) 影响DP位,LST #0也可以修改DP。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 (不写AR

11、n可读性更好),即对ARP、ARB的影响来自间接寻址的数据。状态寄存器的保留位总是读1,写操作对这些位无影响。测试时数据一直不对,原来是间接寻址时,误认为是把当前AR的值装入STm,其实当前AR的值只是一个地址,装入的是AR值所指向的地址单元。修改程序后结果正确。SST 保存状态寄存器 SST #m, dma 不论DP为何值,直接寻址总是保存在第0页 SST #m,ind, ARn10SPM 设定乘积输出方式 SPM constant(03) (不是# constant) constant-PM 参考PM说明当constant超出范围时编译时不是警告后取低两位,而是错误提示。11RPT 重复下

12、一条指令 RPT dma RPT ind, ARn RPT #k重复执行下条指令N次,N为RPTC(16位重复计数器)的初始值加1。在上下文转换时不能保存PRTC,PRTC被清0。器件复位PRTC清0。重复循环可看作是可中断多期指令。对于块移动,相乘/累加和规格化等操作,RPT特别有用。重复指令本身不能被重复。如:RPT #1RPT #3编译可以通过,但运行时执行第二条RPT后,RPTC != 3,PRTC = 0。12POP 弹出栈至累加器 TOP(堆栈顶) - ACC (硬件堆栈是FIFO 的个单元) 堆栈中的每个值都复制到地址加的堆栈单元。 要注意没有检查下溢的方法。13PUSH 累加器

13、低位入栈 ACC - TOP 堆栈中的每个值者复制到地址减一单元,最后一个数据丢失。14POPD 弹出堆栈至数据存储器 POPD dma POPD ind, ARn15PSHD 数据入栈 PSHD dma PSHD ind, ARn堆栈操作和POP、PUSH一样。三 分支跳转指令B pma, ind, ARn 分支跳转 Pma - PCBACC 按ACC跳转 ACCL - PCBANZ pma, ind, ARn AR非零跳转 当前AR = 0, PC+2 - PC 当前AR != 0, pma - PC 注意:当前AR默认修改为减;如BANZ PGM 等同于 BANZ PGM, *-。故可以

14、用一个AR做循环计数,如:PGM: NOP (循环次数为当前AR值+) BANZ PGM BCND 条件跳转 BCND pma,cond1, cond2, 如果指定条件都满足,则跳转 Cond 条件 EQ ACC=0 并不是所有的条件的组合都有意义 NEQ ACC!=0 多条件跳转时要注意冲突 LT ACC0 LEQ ACC0 LT和GT GEQ ACC=0 UNC和所有的条件 NC C=0 EQ和NEQ 和LEQ和GEQ任意两个 C C=1 C和NC、OV和NOV、NTC和TC和BIO任意两个 NOV OV=0 (除N外,其它有字母相同的条件就冲突) OV OV=1 BIO BIO引脚为低电

15、平 NTC TC=0 TC TC=1 UNC 无条件CC pma, cond1, cond2, 条件调用 它同BCND的区别只在于BCND不保存断点CALA 根据ACC的程序调用 PC+1 - TOS ACCL - PC 它同BACC的区别只在于BACC不保存断点CALL pma, ind, ARn 无条件跳转 它同B的区别只在于B不保存断点RET 返回 TOS - PC 子程序和中断服务程序以RET指令结束 复位中断将不用返回,直接跳转到程序的开始地址里。RETC 条件返回 RETC cond1,cond2, 指定条件都满足,就执行一个标准返回。 条件同BCND说明。10INTR 软中断 I

16、NTR k 031 ( 非 #k ) 不受INTM和中断屏蔽位影响。 PC+1 - TOS K*2 - PC INTM=111NMI 不可屏蔽中断指令 等于 INTR 18 程序的非法地址访问也会导致NMI中断。12TRAP 软件陷阱中断 相当于INTR 17;但不受INTM影响,也不影响INTM(唯一不置INTM的中断)。 2008-3-1四 I/O和存储器命令BLDD 数据存储空间的块传送 BLDD #lk(源), dma(目标) (长立即数#lk表示的是源地址或目标地址) BLDD #lk, ind, ARn BLDD dma, #lk BLDD ind, #lk, ARn 一般与RPT

17、指令一起使用。如果没有加RPT指令,则仅仅是单条数据传送。 一旦RPT流水线被启动,BLDD就变成了单周期指令,即在单步运行时一步就可以实现块传送。 PC+1 - MSTACK(微堆栈) Lk - PC (源) - 目的 修改当前AR和ARP(循环复制时,对ARP的修改相同,故可以认为是不再修改) PC+1 - PC (即地址自加) RPTC!=0 (源) - 目的 RPTC-1 - RPTC PC+1 - PC MSTACK - PC RPT #15BLDD *+, #lk, AR1 (ARP=0) 指令执行时,AR0中地址对应的数据复制一个到目标地址,其它的数据源数据地址由AR1提供。BL

18、PD 程序至数据区的块传送 BLPD #pma, dma BLPD #pma, ind, ARn 除数据源数据地址为程序存储空间地址外,其它操作和BLDD一样。 LDP #12H RPT #0FH BLPD #8043H, 40H RPT #0FH BLPD #start,*+ 间接寻址的可以实现块传送,直接寻址的只改变块的第一个值,而且还是错误的,其它值不变,为什么? RPT #0FH时,960H地址的值为地址(8043H+0FH)的值, RPT #7 时, 值为地址(8043H+7)的值 原来是程序到数据的块移动,因为是直接寻址,其地址不变,故只保存最后一次的值。 即块移动直接寻址地址不自

19、加,所以也没有跨段传送的问题。BLDD也一样。DMOV 片内数据传送 DMOV dma DMOV ind, ARn 指令将数据存储地址的内容复制到该地址加1的单元,复制后原来的地址内容保持不变。DMOV指令只能用于片内被配置为数据空间的RAM块,可跨边界移动。不能用于外部数据存储器。如果指定外部存储地址,DMOV指令读取指定的存储单元但不进行其他操作。(2406无外部存储器扩展)数据移动功能对于实现数字信号处理中的1/Z延时非常有用。(不懂)与RPT一起使用可以达到单周期初始化存储器的效果。如: RPT #0FFH DMOV *+程序存储空间的8000H87FFH与数据存储空间的800HFFF

20、H映射的是同一个SARAM,在仿真时,没有设置DON与PON,不管CMD文件把SARAM映射到什么空间,程序LOAD到8000H开始的区域,DMOV也可以在数据空间的SARAM里进行数据传送,改变程序空间的值。如果DON与PON设置后是否就有没这个问题了?2008-3-7 没有设置DON、PON,其默认都为,即SARAM同时被映射到片内程序和数据空间。 当设置好后,如PON=1,DON=0,则在数据空间里就无法改变SARAM中的值了。其读值全为0。2008-3-3IN 输入 IN dma, PA IN ind, PA, ARn PA:I/O空间地址 IN指令从I/O单元读入16位的值,将其送到

21、指定的数据存储单元。IS引脚变成低电平(IS引脚一般做为外部器件的片选线)。 与RPT一起使用,可以从I/O空间读入连续的字并送到数据空间。 PA是否和BLDD、BLPD一样,在RPT循环里执行一次操作可自加1?否则如何可实现连续读连续写?OUT 输入 OUT dma, PA OUT ind, PA, ARnOUT对I/O端口写数据,其它同IN操作。IN、OUT未测试,有没扩展,不知如何测试?SPLK 存长立即数到数据存储区 SPLK #lk, dma SPLK #lk, ind, ARn 指令把16位立即数写到任何数据存储器单元。与RPT指令一起使用没有作用。 用来设置外设寄存器很方便。TB

22、LR 读表 TBLR dma TBLR ind, ARn 把程序存储单元中的一个字传送到数据存储单元。 PC+1 - MSTACK ACC(15:0) - PC (pma) - 数据存储器地址间接寻址还按指定修改当前AR与ARP PC+1 - PC RPTC!=0 (pma) - 数据存储器地址间接寻址还按指定修改当前AR与ARP PC+1 - PC MSTACK - PC 如果是重复的直接址,则只有最后一个数据没有被覆盖。TBLW 写表 TBLW dma TBLW ind, ARn 把数据存储单元的一个字传送到程序存储单元。其它操作同TBLR。程序存储单元如果被指定为ROM区会如何?参考TB

23、LR,除了重复的直接寻址,则是用同数据写入到几个单元。五 累加器算术、逻辑命令LACC 左移后装载累加器 LACC dma, shift LACC dma, 16 LACC ind ,shift, ARn LACC ind, 16,ARn LACC #lk 受SXM影响;当SXM=1时,是先扩展后再移位。 如LACC #8123H,4 ACC=0FFF8 1230H而非0008 1230H 如LACC #7841H,4 ACC=0007 8410H而非 0FFFF 8410HLACT 按TREG规定的移位装载累加器 LACT dma LACT ind, ARn 参考LACC,只是用TREG的低

24、四位来替代LACC中的shift。LACL 装载累加器低位并清高位 LACL dma LACL ind, ARn LACL #k 8位短立即数 数据 - ACC(15:0) 0000H - ACC(31:16)指令描述是:加载的数据被看作无符号数,而不是作为的补码数。且指令不受SXM影响。但实测结果指令受SXM影响。并且K可以是16位立即数。LACL #1234H ACC = 0000 1234HLACL #0f1ffh SXM=1 ACC = 0FFFF F1FFH ; SXM=0 ACC = 0000 F1FFHLACL #0ffh ACC = 0000 00FFHZALR 清累加器低位且

25、装载累加器高位 ZALR dma ZALR ind, ARn PC+1 - PC 数据 - ACC(31:16) 8000H - ACC(15:0) 对数据进行圆整(什么是圆整?)SACL 存累加器高位 SACL dma, shift2 SACL ind, shift2, ARn 将整个32位左移shift2位后,再将移位后数值高位复制到数据存储单元。 移位时低位补0,高位丢失,累加器本身保持不变。SACH 存累加器低位 SACH dma, shift2 SACH ind, shift2, ARN 参考SACL。ABS 取绝对值 受OVM 影响 影响:C、OV (C总是为) ACC = 0,其

26、内容不变ACC ACC ACC = 0时,C = 1;ACC != 0时,C = 0。 ACC = 8000 0000H参考ABS。10AND 逻辑与 (等同于C中的&,而非&) AND dma AND ind, ARn AND #lk, shift AND #lk, 16 没被移位填满的高位和低位均填,移位结果和累加器的内容逻辑与。11OR 逻辑或 (等同于C中的 | ,而非 | )语法同AND 没被移位填满的高位和低位均填,移位结果和累加器的内容逻辑或。12XOR 异或语法同AND 没被移位填满的高位和低位均填,移位结果和累加器的内容逻辑异或。13ROL 累加器循环左移 ACC(31) -

27、 C ACC(30:0) - ACC(31:1) C - ACC(0) 所有的移位指令都可以与RPT指令一起使用,实现多位移动。14ROR 累加器循环右移 ACC(0) - C ACC(31:1) - ACC(30:0) C - ACC(31) 15SFL 累加器逻辑左移 ACC(31) - C ACC(30:0) - ACC(31:1) 0 - ACC(0) 左移指令的逻辑左移与算术左移的结果是一样,不受SXM影响。16SFR 累加器右移 当SXM=0时,相当于逻辑右移 ACC(0) - C ACC(31:1) - ACC(30:0) 0 - ACC(31) 当SXM=1时,相当于算术左移

28、ACC(0) - C ACC(31:1) - ACC(30:0) ACC(31) - ACC(31) 17ADD 加至累加器 ADD dma, shift ADD dma,16 ADD ind, shift, ARn ADD ind, 16, ARn ADD #k ADD #lk, shift 两个立即数的区别就是指令的长度,如果用短立即数又移位的 话,指令长度就两个字。如ADD #1占一字,ADD #1,1就占两字空间。 除了短立即数寻址只受OVM影响,其它都受SXM、OVM影响。 用8位短立即数,是不可重复的,什么是可重复? 影响C和OV 一般情况下,相加结果产生进位C = 1,否则C = 0。 当左移16位时,相加结果产生进位C = 1,否则C不改变。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1