如何在Verilog中向4位导线添加1
这似乎很简单,但我找不到在任何地方如何做到这一点。。。我所要做的就是在4位导线上加1 总的来说,我想计算8位变量中1的数量。让我们把这个输入称为inA。输出将是outA。两者都定义为导线;inA是8位,其中outA是4位如何在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
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并不意味着一个触发器寄存器。