如何在Verilog中向4位导线添加1

如何在Verilog中向4位导线添加1,verilog,Verilog,这似乎很简单,但我找不到在任何地方如何做到这一点。。。我所要做的就是在4位导线上加1 总的来说,我想计算8位变量中1的数量。让我们把这个输入称为inA。输出将是outA。两者都定义为导线;inA是8位,其中outA是4位 wire[0:7] inA; wire[0:3] outA; 我可以做一个for循环来遍历数组: for (i = 0; i <= 7; i = i + 1) begin if (inA[i] == 1) begin outA <= outA

这似乎很简单,但我找不到在任何地方如何做到这一点。。。我所要做的就是在4位导线上加1

总的来说,我想计算8位变量中1的数量。让我们把这个输入称为inA。输出将是outA。两者都定义为导线;inA是8位,其中outA是4位

wire[0:7] inA;
wire[0:3] outA;
我可以做一个for循环来遍历数组:

for (i = 0; i <= 7; i = i + 1) begin
    if (inA[i] == 1) begin
       outA <= outA + 1;
    end
end

对于(i=0;i有几种方法可以做到这一点,这里有一个选项:

  reg [0:3] ones;
  integer i;
  always @ (inA) begin
    ones = 0;
    for (i = 0; i < 8; i = i + 1) begin
      ones = ones + inA[i];
    end
  end
  assign outA = ones;
reg[0:3]个;
整数i;
总是@(inA)开始
一=0;
对于(i=0;i<8;i=i+1)开始
一=一+inA[i];
终止
终止
分配outA=个;
由于您没有提供完整的源代码(例如
for
循环的
上下文),我们只能猜测问题出在哪里


请记住,像
outA这样的非阻塞赋值非常完美,谢谢!我假设添加了1,然后将输出赋值为1,这是我所缺少的。再次感谢你!@Apolymoxic!为什么你需要作为
导线的值呢?@Morgan我认为这不是绝对需要的…这只是我需要的地方开始。它应该模拟一个输出,在一个真正运行的硬件程序中,它不是一个连线吗?不,reg vs wire是语言语法,与硬件无关,reg并不意味着一个触发器寄存器。