Add chip selects to rom/ram
Slightly easier to work with ppu and cart memory spaces this way
This commit is contained in:
26
rtl/gb.sv
26
rtl/gb.sv
@@ -26,11 +26,9 @@ logic rom_sel;
|
||||
logic [ 7:0] rom_rdata;
|
||||
|
||||
logic hiram_sel;
|
||||
logic hiram_we;
|
||||
logic [ 7:0] hiram_rdata;
|
||||
|
||||
logic vram_sel;
|
||||
logic vram_we;
|
||||
logic [ 7:0] vram_rdata;
|
||||
|
||||
cpu cpu_inst (
|
||||
@@ -50,8 +48,7 @@ ppu ppu_inst (
|
||||
.cpu_addr_i (cpu_addr),
|
||||
.cpu_rdata_o(cpu_ppu_rdata),
|
||||
.cpu_we_i (cpu_we),
|
||||
.cpu_wdata_i(cpu_wdata),
|
||||
.cpu_addr_sel_o(ppu_sel)
|
||||
.cpu_wdata_i(cpu_wdata)
|
||||
);
|
||||
|
||||
assign rom_enable_r = '1;
|
||||
@@ -60,13 +57,10 @@ assign rom_sel = rom_enable_r & ~(|cpu_addr[15:8]);
|
||||
assign vram_sel = (cpu_addr[15:13] == 3'b100);
|
||||
assign hiram_sel = (&cpu_addr[15:7]) & ~(&cpu_addr[6:0]);
|
||||
|
||||
assign vram_we = vram_sel & cpu_we;
|
||||
assign hiram_we = hiram_sel & cpu_we;
|
||||
|
||||
assign cpu_rdata = ({8{ rom_sel}} & rom_rdata) |
|
||||
({8{ vram_sel}} & vram_rdata) |
|
||||
({8{hiram_sel}} & hiram_rdata)|
|
||||
({8{ ppu_sel}} & cpu_ppu_rdata);
|
||||
assign cpu_rdata = rom_rdata |
|
||||
vram_rdata |
|
||||
hiram_rdata |
|
||||
cpu_ppu_rdata;
|
||||
|
||||
rom #(
|
||||
.FILE_NAME("DMG_ROM.bin"),
|
||||
@@ -74,6 +68,8 @@ rom #(
|
||||
.DATA_W (8)
|
||||
) rom_inst (
|
||||
.clk (clk),
|
||||
.nreset (nreset),
|
||||
.cs_i (rom_sel),
|
||||
.address_i(cpu_addr[7:0]),
|
||||
.rdata_o (rom_rdata)
|
||||
);
|
||||
@@ -83,9 +79,11 @@ ram #(
|
||||
.DATA_W (8)
|
||||
) vram_inst (
|
||||
.clk (clk),
|
||||
.nreset (nreset),
|
||||
.cs_i (vram_sel),
|
||||
.address_i (cpu_addr[12:0]),
|
||||
.rdata_o (vram_rdata),
|
||||
.we_i (vram_we),
|
||||
.we_i (cpu_we),
|
||||
.wdata_i (cpu_wdata)
|
||||
);
|
||||
|
||||
@@ -94,9 +92,11 @@ ram #(
|
||||
.DATA_W (8)
|
||||
) hiram_inst (
|
||||
.clk (clk),
|
||||
.nreset (nreset),
|
||||
.cs_i (hiram_sel),
|
||||
.address_i (cpu_addr[6:0]),
|
||||
.rdata_o (hiram_rdata),
|
||||
.we_i (hiram_we),
|
||||
.we_i (cpu_we),
|
||||
.wdata_i (cpu_wdata)
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user