集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2339|回复: 0

while(tmp_var)怎么开始循环?

[复制链接]
yealien 发表于 2010-5-31 16:06:56 | 显示全部楼层 |阅读模式
在一本教材上看到下面一个计数的例子,但总感觉while(tmp_var)没法循环,不知有没有高人,可否帮小弟一把,多谢了!

例:计算一个变量中含有值为1的个数。
module demo_count(var,count);
parameter varsize=8,cntsize=4;
input [varsize:0] var;
output[cntsize:0] count;
reg[cntsize:0] count;
reg[varsize:0] tmp_var;
[email=always@(var]always@(var[/email])
begin
count=0;
tmp_var=var; //假如我var里面的值是101010010
while(tmp_var)  //tmp_var的值不为0
begin
if(tmp_var[0])  //如果tmp_var[0]为1开始循环,但是这样没法循环了。
count=count+1;
tmp_var=tmp_var<<1;
end
end
endmodule

另外我输入1-1111-1111到var中,但是用modulesim仿真,发现count始终是0001,而tmp_var始终是0-0000-0000,不知是怎么回事?求大家帮一手解释一下。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-23 15:44 , Processed in 0.077344 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表