在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3448|回复: 7

[求助] 补码截位的问题

[复制链接]
发表于 2014-3-10 16:05:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我需要用verilog写一个公式,
公式里乘除法比较多,
所以想采用截位和补位的方法来近似一下,
因为输入可能有负数,所以就出现一些问题..

问题1,signed数截位之后,好像就变成unsigned了,做加减法时,不会自动扩展符号位。
现在是把每一个截位的数都用$signed()扩展,写成这样:$signed(A[15:7]),
不知道有没有更好的方法。

问题2,比较小的负数截位之后,就不符合除法的计算结果了,
比如-1 截取几位之后依然还是-1。
这样公式结果就不对了
发表于 2014-3-10 16:36:41 | 显示全部楼层
有一种算法叫rounding,自己搜一下吧
发表于 2014-3-10 16:59:25 | 显示全部楼层
想法是好的。

不过为何不高层次综合?

做一个乘法器,除法器,然后复用。
发表于 2014-3-10 21:47:52 | 显示全部楼层
在定义截位结果变量时写成类似
wire signed [9:0] data_clipped;
试试看行不行
发表于 2014-3-10 21:58:57 | 显示全部楼层
你这个问题的解决不在verilog怎么写,要对整个系统做一次详细的误差分析。
 楼主| 发表于 2014-3-10 22:23:17 | 显示全部楼层
回复 3# greatwind


   我是希望这样近似能够计算的快一点
 楼主| 发表于 2014-3-10 22:24:44 | 显示全部楼层
回复 4# loecd4346


   变量定义的时候加的有signed,但是截位的时候好像系统就默认为unsigned了
 楼主| 发表于 2014-3-10 22:26:59 | 显示全部楼层
回复 5# patrick007


   我是想在程序里面避免类似-1截位之后依然是-1的这些情况
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-27 19:21 , Processed in 0.020832 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表