Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module controller_fsm(clock, player_x, player_y, player_color, player_writeEn, player_finished,
- player_laser_x, player_laser_y, player_laser_color, player_laser_writeEn, player_laser_finished,
- x, y, color, writeEn, player_enable, laser_enable, reset_n);
- input clock;
- input reset_n;
- input wire [7:0] player_x;
- input wire [6:0] player_y;
- input wire [2:0] player_color;
- input wire player_writeEn;
- input wire player_finished;
- input wire [7:0] player_laser_x;
- input wire [6:0] player_laser_y;
- input wire [2:0] player_laser_color;
- input wire player_laser_writeEn;
- input wire player_laser_finished;
- output reg [7:0] x;
- output reg [6:0] y;
- output reg [2:0] color;
- output reg writeEn;
- output reg player_enable;
- output reg laser_enable;
- localparam S_PLAYER = 0, S_LASER = 1;
- reg [1:0] state_next, state_reg;
- reg players_turn, lasers_turn;
- always @(posedge clock) begin
- if (reset_n)begin
- state_reg <= S_PLAYER;
- end
- else begin
- state_reg <= state_next;
- end
- end
- always @(posedge clock) begin
- if (reset_n) begin
- players_turn <= 1'b1;
- lasers_turn <= 1'b0;
- end
- case (state_reg)
- S_PLAYER: begin
- if (player_finished == 1 && players_turn == 1) begin
- state_next <= S_LASER;
- player_enable <= 0;
- //player_laser_finished <= 0;
- players_turn <= 0;
- lasers_turn <= 1;
- end
- else if (player_finished == 0 && players_turn == 1) begin
- x <= player_x;
- y <= player_y;
- color <= player_color;
- writeEn <= player_writeEn;
- player_enable <= 1;
- end
- end
- S_LASER: begin
- if (player_laser_finished == 1 && lasers_turn == 1) begin
- state_next <= S_PLAYER;
- laser_enable <= 0;
- players_turn <= 1;
- lasers_turn <= 0;
- end
- else if (player_laser_finished == 0 && lasers_turn == 1) begin
- x <= player_laser_x;
- y <= player_laser_y;
- color <= player_laser_color;
- writeEn <= player_laser_writeEn;
- laser_enable <= 1;
- end
- end
- endcase
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement