【发布时间】:2017-09-21 15:28:09
【问题描述】:
我目前正在尝试在 Verilog 中创建一个简单的向上计数器,每当我在 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
我在编译时遇到的错误是:
** 错误:(vlog-13069) stream_counter.v(15): near "=": 语法错误,意外的 '='。
** 错误:stream_counter.v(15): (vlog-13205) 在“计数器”之后的范围内发现语法错误。是否缺少'::'?
【问题讨论】:
-
您在代码中有几个误解。因此,请阅读有关模块、始终阻止、敏感度列表和生成阻止的信息。