2
我試圖瞭解我們如何生成Verilog代碼出鑿子「for」循環。 通常verilog代碼用於展開循環進度的許多時間,但在這裏鑿子它只展開一次。For循環不展開鑿
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
這將是非常有益的,如果有人能告訴如何for循環工作。
在塊中,不使用循環計數器變量「j」,因此for循環只是反覆執行「io.output:= io_a」。結果,verilog提取block的第一次執行,即「io.output:= io_a」。 – 2014-09-30 04:36:40
這意味着我必須始終使用「j」才能使循環正常工作? – 2014-09-30 04:41:24
您一次又一次執行相同的代碼「io.output:= io.a」。 Verilog認爲重複執行沒有意義,執行一次就足夠了。我不知道在循環計數器永遠不會被使用的塊的每次執行中執行不同的方式。 – 2014-09-30 04:46:24