HDLbits--Popcount

该文讨论了一个Verilog模块中的错误,原始代码包含一个未初始化的变量和不正确的计数逻辑。修改后的代码解决了这两个问题,但引入了新的错误:未在一开始给输出变量out赋值,以及在initial块中的行为不符合预期。修复这些错误是关键。
摘要由CSDN通过智能技术生成

错误代码:

module top_module( 
    input [2:0] in,
    output [1:0] out );
    
    
    integer count = 0;
     integer i ;
    
    always@(*)
        begin
 
            for(i=0;i<3;i=i+1)
                begin
                    if(in[i]=='b1)
                        count=count+1;
                end
            
        end
    assign out = count;

endmodule

why???

修改后:

module top_module( 
    input [2:0] in,
    output [1:0] out );
    
    always
        begin
            out = 'b0;
            for(int i=0;i<3;i=i+1)
                begin
                    if(in[i])
                        out=out+in[i];
                end
        end

endmodule

修改后 错误1 没有对out开始赋值

错误2 在initial块中结果输出为0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值