Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- localparam [4 : 0] STATE_START = 4'd0;
- localparam [4 : 0] STATE_DECREMENT_WAIT = 4'd1;
- localparam [4 : 0] STATE_DECREMENT_0 = 4'd2;
- localparam [4 : 0] STATE_DECREMENT_1 = 4'd3;
- localparam [4 : 0] STATE_DECREMENT_2 = 4'd4;
- localparam [4 : 0] STATE_INCREMENT_WAIT = 4'd5;
- localparam [4 : 0] STATE_INCREMENT_0 = 4'd6;
- localparam [4 : 0] STATE_INCREMENT_1 = 4'd7;
- localparam [4 : 0] STATE_INCREMENT_2 = 4'd8;
- localparam [4 : 0] STATE_STOP = 4'd9;
- reg [4 : 0] state_int;
- assign state_out = state_int;
- always @(posedge gtwiz_userclk_tx_usrclk_in)
- begin
- if(hb_gtwiz_reset_all_sync == 1'b1)
- begin
- state_int <= STATE_START;
- end
- else
- begin
- case(state_int)
- STATE_START:
- begin
- if(init_done_in == 1'b1)
- state_int <= STATE_DECREMENT_WAIT;
- else
- state_int <= STATE_START;
- end
- STATE_DECREMENT_WAIT:
- begin
- // TX FIFO is less than half full
- if(txbufstatus_in[0] == 1'b0)
- state_int <= STATE_INCREMENT_WAIT;
- // TX FIFO is at least half full
- else
- state_int <= STATE_DECREMENT_0;
- end
- STATE_DECREMENT_0:
- begin
- state_int <= STATE_DECREMENT_1;
- end
- STATE_DECREMENT_1:
- begin
- state_int <= STATE_INCREMENT_2;
- end
- STATE_DECREMENT_2:
- begin
- state_int <= STATE_DECREMENT_WAIT;
- end
- STATE_INCREMENT_WAIT:
- begin
- // TX FIFO is less than half full
- if(txbufstatus_in[0] == 1'b0)
- state_int <= STATE_INCREMENT_0;
- // TX FIFO is at least half full
- else
- state_int <= STATE_STOP;
- end
- STATE_INCREMENT_0:
- begin
- state_int <= STATE_INCREMENT_1;
- end
- STATE_INCREMENT_1:
- begin
- state_int <= STATE_INCREMENT_2;
- end
- STATE_INCREMENT_2:
- begin
- state_int <= STATE_INCREMENT_WAIT;
- end
- STATE_STOP:
- begin
- state_int <= STATE_STOP;
- end
- default:
- begin
- state_int <= STATE_START;
- end
- endcase
- end
- end
- always @(state_int)
- begin
- case(state_int)
- STATE_START:
- begin
- txpippmen_out <= 1'b0;
- txpippmstepsize_out <= 5'b00000;
- init_done_out <= 1'b0;
- end
- STATE_DECREMENT_WAIT:
- begin
- txpippmen_out <= 1'b0;
- txpippmstepsize_out <= 5'b00001;
- init_done_out <= 1'b0;
- end
- STATE_DECREMENT_0:
- begin
- txpippmen_out <= 1'b1;
- txpippmstepsize_out <= 5'b00001;
- init_done_out <= 1'b0;
- end
- STATE_DECREMENT_1:
- begin
- txpippmen_out <= 1'b1;
- txpippmstepsize_out <= 5'b00001;
- init_done_out <= 1'b0;
- end
- STATE_DECREMENT_2:
- begin
- txpippmen_out <= 1'b0;
- txpippmstepsize_out <= 5'b00001;
- init_done_out <= 1'b0;
- end
- STATE_INCREMENT_WAIT:
- begin
- txpippmen_out <= 1'b0;
- txpippmstepsize_out <= 5'b10001;
- init_done_out <= 1'b0;
- end
- STATE_INCREMENT_0:
- begin
- txpippmen_out <= 1'b1;
- txpippmstepsize_out <= 5'b10001;
- init_done_out <= 1'b0;
- end
- STATE_INCREMENT_1:
- begin
- txpippmen_out <= 1'b1;
- txpippmstepsize_out <= 5'b10001;
- init_done_out <= 1'b0;
- end
- STATE_INCREMENT_2:
- begin
- txpippmen_out <= 1'b0;
- txpippmstepsize_out <= 5'b10001;
- init_done_out <= 1'b0;
- end
- STATE_STOP:
- begin
- txpippmen_out <= 1'b0;
- txpippmstepsize_out <= 5'b00000;
- init_done_out <= 1'b1;
- end
- endcase
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement