Можем ли мы генерировать внутри всегда блока? - PullRequest
4 голосов
/ 18 декабря 2011

Я хочу, чтобы это было так:

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 голосов
/ 18 декабря 2011

Вам не нужно 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

Несколько вопросов, о которых вы, возможно, захотите подумать:

  • Какого размераL и R автобусы?[15:0]?
  • Где вы присваиваете значения L[0] и R[0]?
  • Вы уверены, что i+1 при i попадании 15 все еще будет в пределахтвой автобус?
3 голосов
/ 20 декабря 2011

Вы могли бы сделать

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