我们可以在一个始终阻止内部生成吗?

时间:2011-12-18 16:32:21

标签: verilog system-verilog

我想要这样:

generate  
   for( i=0 ; i<16 ; i=i+1 ) begin:  
      always @(posedge clk) begin  
         L[i+1] <= #1 R[i];  
         R[i+1] <= #1 L[i] ^ out[i];  
      end  
   end  
endgenerate 

如果有人能帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:4)

我认为你不需要generate。只需在for块中使用always循环即可。

always @(posedge clk) begin    
   for( int i=0 ; i<16 ; i=i+1 ) begin  
         L[i+1] <= #1 R[i];  
         R[i+1] <= #1 L[i] ^ out[i];  
   end  
end

您可能想要考虑几个问题:

  • LR公交车的尺寸是多少? [15:0]
  • 您在哪里为L[0]R[0]分配值?
  • 您确定当i+1点击15时i仍然在公交车的范围内吗?

答案 1 :(得分:3)

你可以做到

always @(posedge clk)
  begin
  L[16:1] <= #1 R[15:0]
  R[16:1] <= #1 L[15:0] ^ out;
  end