用于System Verilog中的逻辑实现

时间:2015-03-24 14:41:12

标签: for-loop logic fpga system-verilog hdl

我正在学习HDL,而且我对如何在System Verilog中实现for循环感兴趣。

使用以下代码......

always_ff(posedge clk)

begin

for(int i = 0; i < 32; i++) s[i] = a[i] + b[i];

end

我最终会在逻辑中使用32个加法器并且它们都会同时执行吗?或者以某种方式顺序执行添加?

由于 博斯科

1 个答案:

答案 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