For loop 如何在Verilog中向for循环内的寄存器添加值?

For loop 如何在Verilog中向for循环内的寄存器添加值?,for-loop,verilog,counter,For Loop,Verilog,Counter,我目前正在尝试在Verilog内部制作一个简单的up计数器,每当我在8位流中遇到“1”时,计数器就会增加1。例如,对于8位输入8'b11001100,输出寄存器将为4'b0100。 我创建了一个for循环来通过8位流,以便在遇到“1”时查看,但每当我尝试将1添加到寄存器时,我都会遇到以前从未见过的非常奇怪的赋值错误。任何帮助都将不胜感激!这是我的消息来源 module stream_counter(stream); input[7:0] stream; output[3:0] stream_c

我目前正在尝试在Verilog内部制作一个简单的up计数器,每当我在8位流中遇到“1”时,计数器就会增加1。例如,对于8位输入8'b11001100,输出寄存器将为4'b0100。 我创建了一个for循环来通过8位流,以便在遇到“1”时查看,但每当我尝试将1添加到寄存器时,我都会遇到以前从未见过的非常奇怪的赋值错误。任何帮助都将不胜感激!这是我的消息来源

module stream_counter(stream);

input[7:0] stream;
output[3:0] stream_counter;

reg[3:0] stream_counter;
genvar index;
genvar counter;

always @ (stream)
counter = 0;

for(index = 0; index < 8; index = index +1) begin
    if(stream[index]) begin
        counter = counter + 1;
    end
end 
end 

assign stream_counter = counter;
endmodule
模块流\计数器(流);
输入[7:0]流;
输出[3:0]流_计数器;
reg[3:0]流_计数器;
genvar指数;
genvar计数器;
始终@(流)
计数器=0;
对于(索引=0;索引<8;索引=index+1)开始
如果(流[索引])开始
计数器=计数器+1;
终止
终止
终止
分配流_计数器=计数器;
端模
我在编译时遇到的错误有:

**错误:(vlog-13069)流_计数器.v(15):靠近“=”:语法错误,意外“=”


**错误:stream_counter.v(15):(vlog-13205)在“counter”后面的作用域中发现语法错误。是否缺少“::”?

乍一看,在第一个always块声明之后缺少begin。 我会使用星号让工具管理敏感度列表。 例如:

always @ (*) begin
...

代码中有几个错误的概念。所以,请阅读有关模块、始终块、敏感度列表和生成块的内容。原始帖子中有许多错误。这个答案没有任何帮助,只是增加了更多的矛盾