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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3999|回复: 3

求教一个verilog的问题

[复制链接]
发表于 2007-11-11 02:26:47 | 显示全部楼层 |阅读模式

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

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

x
a,b 是两个 6bit 有符号的整数
c 是一个 6bit 无符号的整数

现在我想实现一个 c = a/2 + b/8 的等式
我在想具体实现的方法。 a/2 和 b/8可以用比特的右移动完成,但是因为最高位是符号位,所以右移的时候肯定会出问题。所我在想,要不要这样写
assign a[4:0] = a[4:0]  >>  1;
assign b[4:0] = b[4:0] >> 3;
assign temp = a + b;

if ( temp[5] == 0 )
assign c = temp;
else
assign c = ~temp -1; // 取绝对值

不知道这个思路对不对? 谢了
发表于 2007-11-11 15:05:10 | 显示全部楼层
不打对哟~~
发表于 2007-12-14 13:48:34 | 显示全部楼层
上面的代码不对吧
语法就有问题
有符号数移位 只要将最高位用符号位填充不就行了吗?
发表于 2007-12-14 17:17:35 | 显示全部楼层
思路对,但这样写:
reg [5:0]a,b;

wire [5:0]c;

wire [5:0]temp;

assign temp = {a[5],a[5:1]} + {b[5],b[5],b[5],b[5:3]};

assign c = temp[5] ? ( ~temp + 1 ): temp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-18 22:58 , Processed in 0.017476 second(s), 9 queries , Gzip On, Redis On.

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