diff --git a/TSConf.sv b/TSConf.sv index 6ea5968..c6ab95d 100644 --- a/TSConf.sv +++ b/TSConf.sv @@ -113,7 +113,7 @@ localparam CONF_STR = { "O12,Scandoubler Fx,None,HQ2x,CRT 25%,CRT 50%;", "-;", "O34,Stereo mix,None,25%,50%,100%;", - "OST,General Sound,512KB,1MB,2MB,4MB;", + "OST,General Sound,512KB,1MB,2MB;", "-;", "O67,CPU Speed,3.5MHz,7MHz,14MHz;", "O8,CPU Cache,On,Off;", @@ -288,7 +288,7 @@ tsconf tsconf assign DDRAM_CLK = clk_mem; -wire [21:0] gs_mem_addr; +wire [20:0] gs_mem_addr; wire [7:0] gs_mem_dout; wire [7:0] gs_mem_din; wire gs_mem_rd; @@ -299,10 +299,9 @@ reg [7:0] gs_mem_mask; always_comb begin gs_mem_mask = 0; case(status[29:28]) - 0: if(gs_mem_addr[21:19]) gs_mem_mask = 8'hFF; - 1: if(gs_mem_addr[21:20]) gs_mem_mask = 8'hFF; - 2: if(gs_mem_addr[21] ) gs_mem_mask = 8'hFF; - 3: gs_mem_mask = 0; + 0: if(gs_mem_addr[20:19]) gs_mem_mask = 8'hFF; + 1: if(gs_mem_addr[20]) gs_mem_mask = 8'hFF; + 2,3: gs_mem_mask = 0; endcase end diff --git a/src/sound/gs.v b/src/sound/gs.v index bced35d..52fefe5 100644 --- a/src/sound/gs.v +++ b/src/sound/gs.v @@ -79,7 +79,7 @@ module gs #(parameter ROMFILE="gs105b.mif") input WR_n, input RD_n, - output [21:0] MEM_ADDR, + output [20:0] MEM_ADDR, output [7:0] MEM_DI, input [7:0] MEM_DO, output MEM_RD, @@ -171,7 +171,7 @@ always @(posedge CLK) begin end end -reg [6:0] port_00; +reg [5:0] port_00; reg [7:0] port_03; reg signed [6:0] port_06, port_07, port_08, port_09; reg signed [7:0] ch_a, ch_b, ch_c, ch_d; @@ -184,7 +184,7 @@ always @(posedge CLK) begin else begin if (~cpu_iorq_n & ~cpu_wr_n) begin case(cpu_a_bus[3:0]) - 0: port_00 <= cpu_do_bus[6:0]; + 0: port_00 <= cpu_do_bus[5:0]; 3: port_03 <= cpu_do_bus; 6: port_06 <= cpu_do_bus[5:0]; 7: port_07 <= cpu_do_bus[5:0]; @@ -205,21 +205,21 @@ always @(posedge CLK) begin end wire [7:0] cpu_di_bus = - (~cpu_mreq_n && !page_addr[6:1]) ? mem_do : - (~cpu_mreq_n) ? MEM_DO : - (~cpu_iorq_n && cpu_a_bus[3:0] == 1) ? port_BB : - (~cpu_iorq_n && cpu_a_bus[3:0] == 2) ? port_B3 : - (~cpu_iorq_n && cpu_a_bus[3:0] == 4) ? {bit7, 6'b111111, bit0} : + (~cpu_mreq_n && ~cpu_rd_n && !page_addr[5:1]) ? mem_do : + (~cpu_mreq_n && ~cpu_rd_n) ? MEM_DO : + (~cpu_iorq_n && ~cpu_rd_n && cpu_a_bus[3:0] == 1) ? port_BB : + (~cpu_iorq_n && ~cpu_rd_n && cpu_a_bus[3:0] == 2) ? port_B3 : + (~cpu_iorq_n && ~cpu_rd_n && cpu_a_bus[3:0] == 4) ? {bit7, 6'b111111, bit0} : 8'hFF; wire mem_wr = ~cpu_wr_n & ~cpu_mreq_n & |page_addr; wire mem_rd = ~cpu_rd_n & ~cpu_mreq_n; -wire [6:0] page_addr = cpu_a_bus[15] ? port_00 : cpu_a_bus[14]; +wire [5:0] page_addr = cpu_a_bus[15] ? port_00 : cpu_a_bus[14]; assign MEM_ADDR = {page_addr, &cpu_a_bus[15:14], cpu_a_bus[13:0]}; -assign MEM_RD = mem_rd && |page_addr[6:1]; -assign MEM_WR = mem_wr && |page_addr[6:1]; +assign MEM_RD = mem_rd && |page_addr[5:1]; +assign MEM_WR = mem_wr && |page_addr[5:1]; assign MEM_DI = cpu_do_bus; wire [7:0] mem_do; @@ -227,7 +227,7 @@ dpram #(.ADDRWIDTH(16), .MEM_INIT_FILE(ROMFILE)) mem ( .clock(CLK), .address_a(MEM_ADDR[15:0]), - .wren_a(mem_wr && !page_addr[6:1]), + .wren_a(mem_wr && !page_addr[5:1]), .data_a(cpu_do_bus), .q_a(mem_do) ); diff --git a/src/tsconf.v b/src/tsconf.v index 263fd07..9ad356d 100644 --- a/src/tsconf.v +++ b/src/tsconf.v @@ -87,7 +87,7 @@ module tsconf( output SD_CS_N, // General Sound - output [21:0] GS_ADDR, + output [20:0] GS_ADDR, output [7:0] GS_DI, input [7:0] GS_DO, output GS_RD,