我们能在always块内使用generate吗?(这是一个关于IT技术的问题)

4
我希望能有类似这样的东西:

我想要像这样的东西:

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个回答

4

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

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 到达 15 时,你确定 i+1 仍然在总线范围内吗?

谢谢,Marty。我只有一个问题,它可以进行综合吗? - Sohrab
1
#1 不可综合,但工具会接受它并简单地给出警告。 - user597225

3
你可以这样做
always @(posedge clk)
  begin
  L[16:1] <= #1 R[15:0]
  R[16:1] <= #1 L[15:0] ^ out;
  end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接