打印

DSP寻址概念简介

[复制链接]
1898|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sqcumt123|  楼主 | 2012-2-23 14:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
寻址:
  大多数出现在指令中以#开始的常数都是代表数据。但块传送指令(BLDD、BLPD)代表的是地址,SST指令代表的是状态寄存器ST0、ST1。
  ADD、SUB、LAR允许长立即数和短立即数。
  ADSK、SBRK、LDP、LACL、RPT允许8位短立即数寻址,MPY允许13位短立即数寻址。
  ADD、SUB、AND、OR、XOR、LACC、LAR、SPLK允许长立即数寻址。
  ADD、SUB、AND、OR、XOR是算术逻辑指令,隐含目的操作数为ACC,立即数通常来自16位程序读总线,都要经过输入定标移位器,所以在进入CALU前可进行0~16位的移位;LACC可进行0~15位的移位;而LAR、SPLK源和目的都是16位,则不需要移位。
  因为立即数放在程序存储区,所以LT、LTS、LTD、LTA、LPH等目标寄存器没有程序读总线的指令没有立即数寻址。
  程序地址一般是程序的跳转目的地址,如:CALL、CC、B、BCND、BANZ。只有三条不是:BLPD、MAC、MACD,后两条应用在滤波器的系数设计好的后置于程序空间,利用MAC、MACD作滤波运算。
  除了隐含寻址外,大多数的指令可同时具备直接和间接两种寻址方式。但NORM只有间接寻址而无直接寻址方式。另外,ADD、SUB的直接间接寻址还允许左移0~16位,SACL、SACH指令允许左移0~7位。
  输入移位:
  ADD、SUB、LACC可以指令中规定输入移位的位数。
  ADDT、SUBT、LACT用TREG中的低四位来指定移位的位数。
  而ADDC、ADDS、SUBB、SUBS等这些稍复杂的指令则不进行移位和符号扩展。
  逻辑指令XOR、AND、OR也可以移位,但其不受SXM影响,高低位均填0。
  输出移位:
  从PREG输出,移位方式由PM决定。指令有:APAC、LTA、LTD、LTP、MAC、MACD、MPYA、MPYS、MPYU、PAC、SPAC、SPH、SPL、SQRS、SQRA。
  从ACC输出,可在指令中指定移位的位数0~7,这样的指令只有两条:SACL、SACH。
  符号扩展:
  指令中包含了移位和符号扩展,其操作理解顺序为先符号扩展再移位。
  ADD、ADDT、SUB、SUBT、LACC、LACT这些指令能进行移位,也根据SXM进行符号位扩展。
  ADDC、ADDS、SUBB、SUBS则抑制符号扩展。
  MPY        #k的13位立即数无论SXM为何值都进行符号位扩展。
  PM=3,PREG左移输出时也不论SXM为何值都要进行符号扩展。
  逻辑指令不存在符号扩展问题。
  符号数:
  加减运算不用区分是有符号数还是无符号数,乘法除了MPYU是无符号数外,其他都是符号数相乘。另外指令中出现的8位立即数及涉及到AR的运算都被认为是无符号数。

相关帖子

沙发
明天我还来| | 2012-2-23 16:24 | 只看该作者
多谢楼主分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

2107

帖子

1

粉丝