Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     localparam [4 : 0] STATE_START          = 4'd0;
  2.     localparam [4 : 0] STATE_DECREMENT_WAIT = 4'd1;
  3.     localparam [4 : 0] STATE_DECREMENT_0    = 4'd2;
  4.     localparam [4 : 0] STATE_DECREMENT_1    = 4'd3;
  5.     localparam [4 : 0] STATE_DECREMENT_2    = 4'd4;
  6.     localparam [4 : 0] STATE_INCREMENT_WAIT = 4'd5;
  7.     localparam [4 : 0] STATE_INCREMENT_0    = 4'd6;
  8.     localparam [4 : 0] STATE_INCREMENT_1    = 4'd7;
  9.     localparam [4 : 0] STATE_INCREMENT_2    = 4'd8;
  10.     localparam [4 : 0] STATE_STOP           = 4'd9;
  11.  
  12.     reg [4 : 0] state_int;
  13.     assign state_out = state_int;
  14.  
  15.     always @(posedge gtwiz_userclk_tx_usrclk_in)
  16.     begin
  17.         if(hb_gtwiz_reset_all_sync == 1'b1)
  18.         begin
  19.             state_int <= STATE_START;
  20.         end
  21.         else
  22.         begin
  23.             case(state_int)
  24.                 STATE_START:
  25.                     begin
  26.                         if(init_done_in == 1'b1)
  27.                             state_int <= STATE_DECREMENT_WAIT;
  28.                         else
  29.                             state_int <= STATE_START;
  30.                     end
  31.                 STATE_DECREMENT_WAIT:
  32.                     begin
  33.                         // TX FIFO is less than half full
  34.                         if(txbufstatus_in[0] == 1'b0)
  35.                             state_int <= STATE_INCREMENT_WAIT;
  36.                         // TX FIFO is at least half full
  37.                         else
  38.                             state_int <= STATE_DECREMENT_0;
  39.                     end
  40.                 STATE_DECREMENT_0:
  41.                     begin
  42.                         state_int <= STATE_DECREMENT_1;
  43.                     end
  44.                 STATE_DECREMENT_1:
  45.                     begin
  46.                         state_int <= STATE_INCREMENT_2;
  47.                     end
  48.                 STATE_DECREMENT_2:
  49.                     begin
  50.                         state_int <= STATE_DECREMENT_WAIT;
  51.                     end
  52.                 STATE_INCREMENT_WAIT:
  53.                     begin
  54.                         // TX FIFO is less than half full
  55.                         if(txbufstatus_in[0] == 1'b0)
  56.                             state_int <= STATE_INCREMENT_0;
  57.                         // TX FIFO is at least half full
  58.                         else
  59.                             state_int <= STATE_STOP;
  60.                     end
  61.                 STATE_INCREMENT_0:
  62.                     begin
  63.                         state_int <= STATE_INCREMENT_1;
  64.                     end
  65.                 STATE_INCREMENT_1:
  66.                     begin
  67.                         state_int <= STATE_INCREMENT_2;
  68.                     end
  69.                 STATE_INCREMENT_2:
  70.                     begin
  71.                         state_int <= STATE_INCREMENT_WAIT;
  72.                     end
  73.                 STATE_STOP:
  74.                     begin
  75.                         state_int <= STATE_STOP;
  76.                     end
  77.                 default:
  78.                     begin
  79.                         state_int <= STATE_START;
  80.                     end
  81.             endcase
  82.         end
  83.     end
  84.  
  85.     always @(state_int)
  86.     begin
  87.         case(state_int)
  88.             STATE_START:
  89.                 begin
  90.                     txpippmen_out       <= 1'b0;
  91.                     txpippmstepsize_out <= 5'b00000;
  92.                     init_done_out       <= 1'b0;
  93.                 end
  94.             STATE_DECREMENT_WAIT:
  95.                 begin
  96.                     txpippmen_out       <= 1'b0;
  97.                     txpippmstepsize_out <= 5'b00001;
  98.                     init_done_out       <= 1'b0;
  99.                 end
  100.             STATE_DECREMENT_0:
  101.                 begin
  102.                     txpippmen_out       <= 1'b1;
  103.                     txpippmstepsize_out <= 5'b00001;
  104.                     init_done_out       <= 1'b0;
  105.                 end
  106.             STATE_DECREMENT_1:
  107.                 begin
  108.                     txpippmen_out       <= 1'b1;
  109.                     txpippmstepsize_out <= 5'b00001;
  110.                     init_done_out       <= 1'b0;
  111.                 end
  112.             STATE_DECREMENT_2:
  113.                 begin
  114.                     txpippmen_out       <= 1'b0;
  115.                     txpippmstepsize_out <= 5'b00001;
  116.                     init_done_out       <= 1'b0;
  117.                 end
  118.             STATE_INCREMENT_WAIT:
  119.                 begin
  120.                     txpippmen_out       <= 1'b0;
  121.                     txpippmstepsize_out <= 5'b10001;
  122.                     init_done_out       <= 1'b0;
  123.                 end
  124.             STATE_INCREMENT_0:
  125.                 begin
  126.                     txpippmen_out       <= 1'b1;
  127.                     txpippmstepsize_out <= 5'b10001;
  128.                     init_done_out       <= 1'b0;
  129.                 end
  130.             STATE_INCREMENT_1:
  131.                 begin
  132.                     txpippmen_out       <= 1'b1;
  133.                     txpippmstepsize_out <= 5'b10001;
  134.                     init_done_out       <= 1'b0;
  135.                 end
  136.             STATE_INCREMENT_2:
  137.                 begin
  138.                     txpippmen_out       <= 1'b0;
  139.                     txpippmstepsize_out <= 5'b10001;
  140.                     init_done_out       <= 1'b0;
  141.                 end
  142.             STATE_STOP:
  143.                 begin
  144.                     txpippmen_out       <= 1'b0;
  145.                     txpippmstepsize_out <= 5'b00000;
  146.                     init_done_out       <= 1'b1;
  147.                 end
  148.         endcase
  149.     end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement