2011-12-18 38 views
4

我想有某事像这样:我们可以在always块内生成吗?

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 

我将不胜感激,如果任何一个可能会帮助我。

回答

3

你可以做

always @(posedge clk) 
    begin 
    L[16:1] <= #1 R[15:0] 
    R[16:1] <= #1 L[15:0]^out; 
    end 
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+1i命中15将仍然在你的巴士范围内?
+0

感谢马蒂,我刚才一个问题,是不是合成的? – Sohrab

+0

它应该是... – Marty

+1

#1不可综合,但该工具将接受它,只是给你一个警告。 – 2011-12-19 22:44:12

相关问题