简体   繁体   中英

Could we have generate inside an always block?

I want to have sth like this:

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 

I would appreciate it if any one could possibly help me.

You don't need a generate here, I think. Just using a for loop within the always block will work.

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

A few questions you'd probably want to think about:

  • What size are the L and R buses? [15:0] ?
  • Where are you assigning values to L[0] and R[0] ?
  • Are you sure that i+1 when i hits 15 will be still within the bounds of your bus?

You could do

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM