3

Verilog で 4 ビット 2 進数の 1 の数をカウントしようとしていますが、予期しない出力が表示されます。いくつかのアプローチを試しました。これはうまくいくはずだと思いますが、うまくいきません。

module ones(one,in);
input [3:0]in;
output [1:0]one;

assign one = 2'b00; 
assign one = one+in[3]+in[2]+in[1]+in[0] ;

endmodule
4

2 に答える 2

3

$countonesこの目的に使用できます (IEEE Std 1800-2012、20.9 Bit vector system functionsを参照):

module tb;

reg [3:0] in;
wire [2:0] one = $countones(in);
initial begin
    $monitor("in=%b one=%d", in, one);
    #1 in = 4'b0000;
    #1 in = 4'b0001;
    #1 in = 4'b1101;
end

endmodule

出力:

in=xxxx one=0
in=0000 one=0
in=0001 one=1
in=1101 one=3
于 2013-10-30T23:52:05.993 に答える