4

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.

nick_g
  • 489
  • 1
  • 7
  • 15
Sohrab
  • 125
  • 1
  • 2
  • 7

2 Answers2

4

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?
Marty
  • 6,494
  • 3
  • 37
  • 40
3

You could do

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