61 lines
1 KiB
Systemverilog
61 lines
1 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 slow_clk;
|
|
`ifdef FAST_CLK
|
|
assign slow_clk = fpga_clk;
|
|
`endif
|
|
|
|
`ifndef FAST_CLK
|
|
downclocker #(10) dc(fpga_clk, slow_clk);
|
|
`endif
|
|
|
|
logic key_clk;
|
|
downclocker #(24) dck(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
|
|
);
|
|
|
|
keypad keypad(
|
|
key_clk,
|
|
row,
|
|
col,
|
|
led
|
|
);
|
|
|
|
int cycle_counter;
|
|
logic [5:0] nc;
|
|
cpu cpu (
|
|
slow_clk,
|
|
fpga_clk,
|
|
rd_memory_data,
|
|
cycle_counter,
|
|
rd_memory_address,
|
|
wr_memory_address,
|
|
wr_memory_data,
|
|
wr_go,
|
|
lcd_clk,
|
|
lcd_data,
|
|
nc
|
|
);
|
|
|
|
endmodule
|
|
|