Files
SlugCross_MiSTer/rtl/TopStateMachine.v
2022-03-13 16:28:43 -06:00

56 lines
1.6 KiB
Verilog

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 12/01/2018 06:21:50 PM
// Design Name:
// Module Name: TopStateMachine
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module TopStateMachine(
input clk,
input btnUDLR,
input btnC,
input WinDetect,
input LossDetect,
output reset,
output btnCenable,
output btnUDLRenable,
output TimerEnable,
output flashSlug,
output flashBorder,
output [3:0] state
);
wire [3:0] Q;
wire [3:0] D;
TopStateMachineLogic TopStateMachineLogic (.clk(clk), .btnUDLR(btnUDLR), .btnC(btnC), .WinDetect(WinDetect), .LossDetect(LossDetect), .Q(Q), .reset(reset),
.btnCenable(btnCenable), .btnUDLRenable(btnUDLRenable), .TimerEnable(TimerEnable), .flashSlug(flashSlug),
.flashBorder(flashBorder), .D(D));
FDRE #(.INIT(1'b1)) Q0_FF (.C(clk), .CE(1'b1), .D(D[0]), .Q(Q[0]));
FDRE #(.INIT(1'b0)) Q1_FF (.C(clk), .CE(1'b1), .D(D[1]), .Q(Q[1]));
FDRE #(.INIT(1'b0)) Q2_FF (.C(clk), .CE(1'b1), .D(D[2]), .Q(Q[2]));
FDRE #(.INIT(1'b0)) Q3_FF (.C(clk), .CE(1'b1), .D(D[3]), .Q(Q[3]));
assign state[0] = Q[0];
assign state[1] = Q[1];
assign state[2] = Q[2];
assign state[3] = Q[3];
endmodule