Skip to content

Commit f3f839a

Browse files
committed
2 parents b1aa76e + e445fe1 commit f3f839a

File tree

16 files changed

+605
-331
lines changed

16 files changed

+605
-331
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
c5_pin_model_dump.txt
2+
greybox_tmp/*
3+
db/*
4+
incremental_db/*
5+
simulation/*
6+
output_files/*

decoder.v

Lines changed: 0 additions & 39 deletions
This file was deleted.

display.v

Lines changed: 0 additions & 34 deletions
This file was deleted.

greybox_tmp/cbx_args.txt

Lines changed: 0 additions & 17 deletions
This file was deleted.

hangman.qsf

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ set_global_assignment -name DEVICE 5CSEMA5F31C6
4242
set_global_assignment -name TOP_LEVEL_ENTITY hangman
4343
set_global_assignment -name ORIGINAL_QUARTUS_VERSION 17.0.0
4444
set_global_assignment -name PROJECT_CREATION_TIME_DATE "15:13:25 MARCH 25, 2019"
45-
set_global_assignment -name LAST_QUARTUS_VERSION "18.0.0 Standard Edition"
45+
set_global_assignment -name LAST_QUARTUS_VERSION "17.0.0 Lite Edition"
4646
set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files
4747
set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0
4848
set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85
@@ -698,18 +698,21 @@ set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HPS_USB_STP -entity
698698
set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top
699699
set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top
700700
set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top
701-
set_global_assignment -name VERILOG_FILE vga_adapter/vga_pll.v
702-
set_global_assignment -name VERILOG_FILE vga_adapter/vga_controller.v
703-
set_global_assignment -name VERILOG_FILE vga_adapter/vga_address_translator.v
704-
set_global_assignment -name VERILOG_FILE vga_adapter/vga_adapter.v
705-
set_global_assignment -name VERILOG_FILE vga.v
706-
set_global_assignment -name VERILOG_FILE keyboard_driver/keyboard_scancoderaw_driver.v
707-
set_global_assignment -name VERILOG_FILE keyboard_driver/keyboard_press_driver.v
708-
set_global_assignment -name VERILOG_FILE keyboard_driver/keyboard_inner_driver.v
709-
set_global_assignment -name QIP_FILE ram.qip
710-
set_global_assignment -name VERILOG_FILE level_select.v
711-
set_global_assignment -name VERILOG_FILE hex_decoder.v
712-
set_global_assignment -name VERILOG_FILE hangman.v
713-
set_global_assignment -name VERILOG_FILE game_state.v
714-
set_global_assignment -name VERILOG_FILE decoder.v
701+
set_global_assignment -name VERILOG_FILE keyboard_driver/keyboard_scancoderaw_driver.v
702+
set_global_assignment -name VERILOG_FILE keyboard_driver/keyboard_press_driver.v
703+
set_global_assignment -name VERILOG_FILE keyboard_driver/keyboard_inner_driver.v
704+
set_global_assignment -name VERILOG_FILE vga_adapter/vga_pll.v
705+
set_global_assignment -name VERILOG_FILE vga_adapter/vga_controller.v
706+
set_global_assignment -name VERILOG_FILE vga_adapter/vga_address_translator.v
707+
set_global_assignment -name VERILOG_FILE vga_adapter/vga_adapter.v
708+
set_global_assignment -name QIP_FILE letter_ram.qip
709+
set_global_assignment -name QIP_FILE word_ram.qip
710+
set_global_assignment -name VERILOG_FILE word_ram.v
711+
set_global_assignment -name VERILOG_FILE hangman.v
712+
set_global_assignment -name VERILOG_FILE hex_decoder.v
713+
set_global_assignment -name VERILOG_FILE vga.v
714+
set_global_assignment -name VERILOG_FILE game_state.v
715+
set_global_assignment -name VERILOG_FILE level_select.v
716+
set_global_assignment -name VERILOG_FILE keyboard_handler.v
717+
set_global_assignment -name VERILOG_FILE letter_ram.v
715718
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

hangman.qws

571 Bytes
Binary file not shown.

hangman.v

Lines changed: 28 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,33 @@ module hangman(
1010
output [9:0] VGA_R, VGA_G, VGA_B);
1111

1212
wire clk, reset;
13+
wire [3:0] word_select;
1314
assign clk = CLOCK_50;
1415
assign reset = ~KEY[0];
16+
assign word_select[3:0] = SW[3:0];
1517

16-
wire valid, makeBreak;
17-
wire [7:0] outCode;
18-
wire [4:0] outLetter;
19-
wire [29:0] word;
20-
wire [25:0] mask;
2118
wire load;
22-
reg [3:0] wrong_time;
23-
assign load = (makeBreak == 1'b1);
24-
assign LEDR[7] = load;
25-
26-
keyboard_press_driver k0(
27-
.CLOCK_50(CLOCK_50),
28-
.valid(valid),
29-
.makeBreak(makeBreak),
30-
.outCode(outCode),
31-
19+
wire [4:0] pressedLetter;
20+
keyboard_handler k0(
21+
.clk(clk),
22+
.reset(reset),
3223
.PS2_DAT(PS2_DAT),
3324
.PS2_CLK(PS2_CLK),
34-
35-
.reset(reset)
36-
);
37-
38-
assign LEDR[9] = valid;
39-
assign LEDR[8] = makeBreak;
4025

41-
decoder d0(
42-
.inCode(outCode),
43-
.outLetter(outLetter)
44-
);
26+
.pressed(load),
27+
.inputLetter(pressedLetter[4:0])
28+
);
29+
30+
wire [29:0] word;
31+
wire [25:0] mask;
32+
word_ram wr0(
33+
.address(word_select[3:0]),
34+
.clock(clk),
35+
.data(56'd0),
36+
.wren(1'b0),
37+
.q({word[29:0], mask[25:0]})
38+
);
39+
reg [3:0] wrong_time;
4540

4641
wire win_game, lost_game;
4742

@@ -51,13 +46,9 @@ module hangman(
5146
.clk(clk),
5247
.reset(reset),
5348

54-
.start_game(((outLetter == 5'd26) && load)),
49+
.start_game(((pressedLetter == 5'd26) && load)),
5550
.win_game(win_game),
5651
.lost_game((wrong_time == 1'b0)),
57-
.select(SW[3:0]),
58-
59-
.word(word),
60-
.mask(mask),
6152

6253
.current_state(level_state)
6354
);
@@ -68,7 +59,7 @@ module hangman(
6859
.clk(clk),
6960
.reset(reset),
7061
.load(((level_state == 2'd1) && load)),
71-
.load_x(outLetter),
62+
.load_x(pressedLetter),
7263

7364
.mask(mask),
7465

@@ -89,6 +80,8 @@ module hangman(
8980
.clk(clk),
9081
.reset(reset),
9182
.state(level_state[3:0]),
83+
.word(word),
84+
.mask(state),
9285

9386
.VGA_CLK(VGA_CLK),
9487
.VGA_HS(VGA_HS),
@@ -101,12 +94,12 @@ module hangman(
10194
);
10295

10396
hex_decoder h0(
104-
.hex_digit(outLetter[3:0]),
97+
.hex_digit(pressedLetter[3:0]),
10598
.segments(HEX0[6:0])
10699
);
107100

108101
hex_decoder h1(
109-
.hex_digit({3'b000, outLetter[4:4]}),
102+
.hex_digit({3'b000, pressedLetter[4]}),
110103
.segments(HEX1[6:0])
111104
);
112105

@@ -124,4 +117,6 @@ module hangman(
124117
.hex_digit(wrong_time),
125118
.segments(HEX4[6:0])
126119
);
120+
121+
assign LEDR[9] = load;
127122
endmodule

keyboard_handler.v

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
module keyboard_handler(
2+
input clk, reset,
3+
input PS2_DAT, PS2_CLK,
4+
5+
output pressed,
6+
output reg [4:0] inputLetter
7+
);
8+
9+
wire [7:0] keyboardOutCode;
10+
11+
keyboard_press_driver kDriver0(
12+
.CLOCK_50(clk),
13+
.makeBreak(pressed),
14+
.outCode(keyboardOutCode[7:0]),
15+
16+
.PS2_DAT(PS2_DAT),
17+
.PS2_CLK(PS2_CLK),
18+
19+
.reset(reset)
20+
);
21+
22+
always @(*) begin
23+
case (keyboardOutCode[7:0])
24+
8'h1C: inputLetter[4:0] = 5'd0; // A
25+
8'h32: inputLetter[4:0] = 5'd1;
26+
8'h21: inputLetter[4:0] = 5'd2;
27+
8'h23: inputLetter[4:0] = 5'd3;
28+
8'h24: inputLetter[4:0] = 5'd4;
29+
8'h2B: inputLetter[4:0] = 5'd5;
30+
8'h34: inputLetter[4:0] = 5'd6;
31+
8'h33: inputLetter[4:0] = 5'd7;
32+
8'h43: inputLetter[4:0] = 5'd8;
33+
8'h3B: inputLetter[4:0] = 5'd9;
34+
8'h42: inputLetter[4:0] = 5'd10;
35+
8'h4B: inputLetter[4:0] = 5'd11;
36+
8'h3A: inputLetter[4:0] = 5'd12;
37+
8'h31: inputLetter[4:0] = 5'd13;
38+
8'h44: inputLetter[4:0] = 5'd14;
39+
8'h4D: inputLetter[4:0] = 5'd15;
40+
8'h15: inputLetter[4:0] = 5'd16;
41+
8'h2D: inputLetter[4:0] = 5'd17;
42+
8'h1B: inputLetter[4:0] = 5'd18;
43+
8'h2C: inputLetter[4:0] = 5'd19;
44+
8'h3C: inputLetter[4:0] = 5'd20;
45+
8'h2A: inputLetter[4:0] = 5'd21;
46+
8'h1D: inputLetter[4:0] = 5'd22;
47+
8'h22: inputLetter[4:0] = 5'd23;
48+
8'h35: inputLetter[4:0] = 5'd24;
49+
8'h1A: inputLetter[4:0] = 5'd25; // Z
50+
8'h5A: inputLetter[4:0] = 5'd26; // Enter
51+
default : inputLetter [4:0] = 5'd27;
52+
endcase
53+
end
54+
55+
endmodule
File renamed without changes.

letter_ram.qip

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set_global_assignment -name IP_TOOL_NAME "RAM: 1-PORT"
2+
set_global_assignment -name IP_TOOL_VERSION "17.0"
3+
set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone V}"
4+
set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "letter_ram.v"]

0 commit comments

Comments
 (0)