计算输入

Jam*_*red 0 verilog

我想在8位输入中计算1的数量,并输出其中有多少个.我发现这种方式非常粗糙和冗余.我想知道是否有任何简单而好的方法可以找到它们.我的代码看起来像:

module 8to4bit(in,out);

input [7:0]in;
output [3:0]out;


assign out=(input == 1 || input == 2 || input == 4 || input == 8 || input == 16 || input == 32 || input == 64 || input == 128)?1:
(input == 3 || input == 5 || input == 6 || input == 9 || input == 10 || input == 12 || input == 24 || input == 128)?2:0;
Run Code Online (Sandbox Code Playgroud)

... 8位输入中的所有1都相同.

找到它们有简单的方法吗?

问候

Tim*_*Tim 5

怎么样

always @* begin
  out = 0;
  for(i=0;i<8;i=i+1) begin
    out = out + input[i];
  end
end
Run Code Online (Sandbox Code Playgroud)

应该只合成8个加法器,每个位一个.