86 lines
1.4 KiB
Systemverilog
86 lines
1.4 KiB
Systemverilog
module chip8 (
|
|
input wire fpga_clk,
|
|
input wire rst_in,
|
|
output logic lcd_clk,
|
|
output logic lcd_data,
|
|
output logic [5:0] led,
|
|
input wire [3:0] row,
|
|
output logic [3:0] col
|
|
);
|
|
logic debug_overlay;
|
|
logic slow_clk;
|
|
`ifdef FAST_CLK
|
|
assign slow_clk = fpga_clk;
|
|
`endif
|
|
|
|
`ifndef FAST_CLK
|
|
downclocker #(12) dc (
|
|
fpga_clk,
|
|
slow_clk
|
|
);
|
|
`endif
|
|
|
|
logic key_clk;
|
|
`ifdef FAST_CLK
|
|
downclocker #(1) dck (
|
|
`endif
|
|
`ifndef FAST_CLK
|
|
downclocker #(12) dck (
|
|
`endif
|
|
fpga_clk,
|
|
key_clk
|
|
);
|
|
|
|
logic [7:0] rd_memory_data;
|
|
logic [11:0] rd_memory_address;
|
|
logic [11:0] wr_memory_address;
|
|
logic [7:0] wr_memory_data;
|
|
logic wr_go;
|
|
memory #(4096) mem (
|
|
slow_clk,
|
|
wr_go,
|
|
wr_memory_address,
|
|
wr_memory_data,
|
|
rd_memory_address,
|
|
rd_memory_data
|
|
);
|
|
|
|
logic [15:0] keymap;
|
|
|
|
keypad keypad (
|
|
`ifndef DUMMY_KEYPAD
|
|
key_clk,
|
|
`endif
|
|
`ifdef DUMMY_KEYPAD
|
|
slow_clk,
|
|
`endif
|
|
row,
|
|
col,
|
|
keymap
|
|
);
|
|
|
|
assign led = { key_clk, 1'b0, slow_clk, 1'b0, fpga_clk, 1'b0};
|
|
|
|
int cycle_counter;
|
|
logic [5:0] nc;
|
|
cpu cpu (
|
|
slow_clk,
|
|
fpga_clk,
|
|
rd_memory_data,
|
|
keymap,
|
|
cycle_counter,
|
|
rd_memory_address,
|
|
wr_memory_address,
|
|
wr_memory_data,
|
|
wr_go,
|
|
lcd_clk,
|
|
lcd_data,
|
|
nc,
|
|
row,
|
|
col,
|
|
debug_overlay
|
|
);
|
|
|
|
endmodule
|
|
|