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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
楼主: abonic

[求助] Verilog如何判别一个多bit数中含有1的个数

[复制链接]
发表于 2013-6-30 19:11:30 | 显示全部楼层
本帖最后由 39123811 于 2013-6-30 19:13 编辑

我来深化一下:
1>在verilog层面用loop, 在硬件层面就是用shift逐位比较,为一就用个counter计数
for (i = size; i > 0; i = i - 1) begin
        cnt < = cnt + in(i);
end骚年把这个记住吧,在电路实现层面verilog能用到loop的地方屈指可数。
用这个的好处是输入数据位width未知,当lsb被shift out后cnt的数值就是输入数据1的个数
缺点是比较慢,多少width就要多少个时钟cycle。
2>用FA来实现,前提是已知width。优点是整个电路是pure combination,所以运算速度会很快,但是这是牺牲面积的前提下。
从这点出发上面两种选择很好的体现了面积和速度的trade off。

这是个很常规的面试问题,如果我是面试官上面讲的是一定要说到的。
回复 支持 1 反对 0

使用道具 举报

发表于 2013-7-4 09:51:04 | 显示全部楼层
for循环一下,直接加不就搞定了?
回复 支持 反对

使用道具 举报

发表于 2016-12-18 12:36:57 | 显示全部楼层
回复 21# 39123811


   那综合的问题?怎么解决
回复 支持 反对

使用道具 举报

发表于 2016-12-18 13:48:37 | 显示全部楼层
逐次移位比较
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2025-9-12 15:51 , Processed in 0.012465 second(s), 3 queries , Gzip On, Redis On.

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