打印
[DSP编程]

刚学DSP的菜鸟对NORM指令用法的疑问

[复制链接]
4067|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#crazy#|  楼主 | 2015-5-19 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
累加器A里的值为1110 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx,可知冗余的符号位数为2,那么用NORM指令后,A里的值左移-6位,变成了0000 0011 10xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx,可这不就变成正数了?而且书上给出的例子又没有先设置符号位扩展。

相关帖子

沙发
#crazy#|  楼主 | 2015-5-19 19:18 | 只看该作者
或者这么说,如果按Q15定义一个负的浮点数,然后左移16位后加载至A累加器。在没有设置符号扩展的情况下,A累加器的保护位应该都为零。那么显然这时候对A里的浮点数进行规格化,就会出错。可我的书里给出的恰恰就是这样的例子。我不知道我到底哪里想错了。

使用特权

评论回复
板凳
海中水| | 2015-5-19 19:40 | 只看该作者
没注意的这么细过,不过帮你顶一下吧!希望有高手可以帮你解答。

使用特权

评论回复
地板
aresc| | 2015-5-19 19:53 | 只看该作者
一般移位指令都有两种:算术移位和逻辑移位。算术移位就会自动进行符号扩展,绝对不会出现正的变成负的,或者相反。逻辑移位就是你说的那种,总是用0填充空出的比特。

使用特权

评论回复
5
#crazy#|  楼主 | 2015-5-19 21:31 | 只看该作者
aresc 发表于 2015-5-19 19:53
一般移位指令都有两种:算术移位和逻辑移位。算术移位就会自动进行符号扩展,绝对不会出现正的变成负的,或 ...

NORM应该是逻辑移位,因为书上给的程序是先把两个定点数转成浮点数,接着才设置符号位扩展,然后算两个浮点数相乘,再把结果用NORM指令转成定点数。因为两个定点数一个是正数,一个是负数,所以乘积为负数。设置符号位扩展显然是为了乘积结果的正确性。但前面的哪一个负的定点数转浮点数可没设置符号位扩展啊。

使用特权

评论回复
6
zhangmangui| | 2015-5-19 22:45 | 只看该作者

句法:NORM  src[,dst]

表达式:dst=src<<TS,dst=norm(src,TS)

说明:归一化

使用特权

评论回复
7
zhangmangui| | 2015-5-19 22:46 | 只看该作者
不知道是不是上面这种句法

使用特权

评论回复
8
#crazy#|  楼主 | 2015-5-20 18:17 | 只看该作者
zhangmangui 发表于 2015-5-19 22:46
不知道是不是上面这种句法

是这种用法,纯粹的逻辑移位

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝