我正在学习HDL,而且我对如何在System Verilog中实现for循环感兴趣。
使用以下代码......
always_ff(posedge clk)
begin
for(int i = 0; i < 32; i++) s[i] = a[i] + b[i];
end
我最终会在逻辑中使用32个加法器并且它们都会同时执行吗?或者以某种方式顺序执行添加?
由于 博斯科
答案 0 :(得分:3)
可以合成可以静态展开的循环(根据您的示例)。
你给出的例子必须在一个时钟周期内执行,所产生的硬件没有任何顺序:
你的例子:
always_ff(posedge clk) begin
for(int i = 0; i < 32; i++) begin
s[i] <= a[i] + b[i];
end
end
只是(32个并行加法器):
always_ff(posedge clk) begin
s[0] <= a[0] + b[0];
s[1] <= a[1] + b[1];
s[2] <= a[2] + b[2];
//...
end