Add Quartus project
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
|
||||
module PS2_Demo (
|
||||
// Inputs
|
||||
CLOCK_50,
|
||||
KEY,
|
||||
|
||||
// Bidirectionals
|
||||
PS2_CLK,
|
||||
PS2_DAT,
|
||||
|
||||
// Outputs
|
||||
HEX0,
|
||||
HEX1,
|
||||
HEX2,
|
||||
HEX3,
|
||||
HEX4,
|
||||
HEX5,
|
||||
HEX6,
|
||||
HEX7
|
||||
);
|
||||
|
||||
/*****************************************************************************
|
||||
* Parameter Declarations *
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Port Declarations *
|
||||
*****************************************************************************/
|
||||
|
||||
// Inputs
|
||||
input CLOCK_50;
|
||||
input [3:0] KEY;
|
||||
|
||||
// Bidirectionals
|
||||
inout PS2_CLK;
|
||||
inout PS2_DAT;
|
||||
|
||||
// Outputs
|
||||
output [6:0] HEX0;
|
||||
output [6:0] HEX1;
|
||||
output [6:0] HEX2;
|
||||
output [6:0] HEX3;
|
||||
output [6:0] HEX4;
|
||||
output [6:0] HEX5;
|
||||
output [6:0] HEX6;
|
||||
output [6:0] HEX7;
|
||||
|
||||
/*****************************************************************************
|
||||
* Internal Wires and Registers Declarations *
|
||||
*****************************************************************************/
|
||||
|
||||
// Internal Wires
|
||||
wire [7:0] ps2_key_data;
|
||||
wire ps2_key_pressed;
|
||||
|
||||
// Internal Registers
|
||||
reg [7:0] last_data_received;
|
||||
|
||||
// State Machine Registers
|
||||
|
||||
/*****************************************************************************
|
||||
* Finite State Machine(s) *
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Sequential Logic *
|
||||
*****************************************************************************/
|
||||
|
||||
always @(posedge CLOCK_50)
|
||||
begin
|
||||
if (KEY[0] == 1'b0)
|
||||
last_data_received <= 8'h00;
|
||||
else if (ps2_key_pressed == 1'b1)
|
||||
last_data_received <= ps2_key_data;
|
||||
end
|
||||
|
||||
/*****************************************************************************
|
||||
* Combinational Logic *
|
||||
*****************************************************************************/
|
||||
|
||||
assign HEX2 = 7'h7F;
|
||||
assign HEX3 = 7'h7F;
|
||||
assign HEX4 = 7'h7F;
|
||||
assign HEX5 = 7'h7F;
|
||||
assign HEX6 = 7'h7F;
|
||||
assign HEX7 = 7'h7F;
|
||||
|
||||
/*****************************************************************************
|
||||
* Internal Modules *
|
||||
*****************************************************************************/
|
||||
|
||||
PS2_Controller PS2 (
|
||||
// Inputs
|
||||
.CLOCK_50 (CLOCK_50),
|
||||
.reset (~KEY[0]),
|
||||
|
||||
// Bidirectionals
|
||||
.PS2_CLK (PS2_CLK),
|
||||
.PS2_DAT (PS2_DAT),
|
||||
|
||||
// Outputs
|
||||
.received_data (ps2_key_data),
|
||||
.received_data_en (ps2_key_pressed)
|
||||
);
|
||||
|
||||
Hexadecimal_To_Seven_Segment Segment0 (
|
||||
// Inputs
|
||||
.hex_number (last_data_received[3:0]),
|
||||
|
||||
// Bidirectional
|
||||
|
||||
// Outputs
|
||||
.seven_seg_display (HEX0)
|
||||
);
|
||||
|
||||
Hexadecimal_To_Seven_Segment Segment1 (
|
||||
// Inputs
|
||||
.hex_number (last_data_received[7:4]),
|
||||
|
||||
// Bidirectional
|
||||
|
||||
// Outputs
|
||||
.seven_seg_display (HEX1)
|
||||
);
|
||||
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user