我试图理解我们是如何从"中生成verilog代码的?#34;在凿子循环。 通常verilog代码用于展开循环进度的时间,但是在凿子中它只展开一次。
val io = new Bundle {
val a = UInt(INPUT, 2)
val output = UInt(OUTPUT, 2)
}
io.output := UInt(0)
for(j <- 0 to 4){
io.output := io.a
}
上述程序的相应verilog代码是:
module LutSimpleALU(
input [1:0] io_a,
output[1:0] io_output
);
assign io_output = io_a;
endmodule
如果有人能说出循环是如何工作的话会非常有用。
答案 0 :(得分:2)
你的for循环对每次迭代都做同样的事情。你没有使用&#34; j&#34;迭代器变量在任何地方,所以这就是它扩展到:
io.output := io.a
io.output := io.a
io.output := io.a
io.output := io.a
这里的语义是最后一位作家获胜,所以&#34; io.output = io.a&#34;将是最终价值。实际上,前三个语句没有任何意义,因此它们将从图中删除。