FPGA: prepare new SNES command interface for future use (SNES side)
This commit is contained in:
parent
0d02bfded7
commit
3530613349
@ -38,6 +38,8 @@ module address(
|
||||
output dspx_dp_enable,
|
||||
output dspx_a0,
|
||||
output r213f_enable,
|
||||
output snescmd_rd_enable,
|
||||
output snescmd_wr_enable,
|
||||
input [8:0] bs_page_offset,
|
||||
input [9:0] bs_page,
|
||||
input bs_page_enable
|
||||
@ -244,4 +246,16 @@ initial r213f_enable_r = 6'b000000;
|
||||
always @(posedge CLK) r213f_enable_r <= {r213f_enable_r[4:0], r213f_enable_w};
|
||||
assign r213f_enable = &r213f_enable_r[5:2] & featurebits[FEAT_213F];
|
||||
|
||||
wire snescmd_rd_enable_w = (SNES_PA[7:4] == 4'b1111);
|
||||
//reg [5:0] snescmd_rd_enable_r;
|
||||
//initial snescmd_rd_enable_r = 6'b000000;
|
||||
//always @(posedge CLK) snescmd_rd_enable_r <= {snescmd_rd_enable_r[4:0], snescmd_rd_enable_w};
|
||||
assign snescmd_rd_enable = snescmd_rd_enable_w /*&snescmd_rd_enable_r[5:1]*/;
|
||||
|
||||
assign snescmd_wr_enable_w = (SNES_ADDR[23:4] == 20'hccccc);
|
||||
//reg [5:0] snescmd_wr_enable_r;
|
||||
//initial snescmd_wr_enable_r = 6'b000000;
|
||||
//always @(posedge CLK) snescmd_wr_enable_r <= {snescmd_wr_enable_r[4:0], snescmd_wr_enable_w};
|
||||
assign snescmd_wr_enable = snescmd_wr_enable_w /*&snescmd_wr_enable_r[5:1]*/;
|
||||
|
||||
endmodule
|
||||
|
||||
@ -407,7 +407,9 @@ address snes_addr(
|
||||
.dspx_enable(dspx_enable),
|
||||
.dspx_dp_enable(dspx_dp_enable),
|
||||
.dspx_a0(DSPX_A0),
|
||||
.r213f_enable(r213f_enable)
|
||||
.r213f_enable(r213f_enable),
|
||||
.snescmd_rd_enable(snescmd_rd_enable),
|
||||
.snescmd_wr_enable(snescmd_wr_enable)
|
||||
);
|
||||
|
||||
parameter MODE_SNES = 1'b0;
|
||||
@ -457,9 +459,11 @@ initial r213f_forceread = 0;
|
||||
initial r213f_state = 2'b01;
|
||||
initial r213f_delay = 3'b011;
|
||||
|
||||
reg[7:0] snescmd_regs[15:0];
|
||||
|
||||
assign SNES_DATA = (r213f_enable & (!SNES_PARD ^ r213f_forceread)) ? r213fr
|
||||
:(!SNES_READ ^ r213f_forceread)
|
||||
assign SNES_DATA = (snescmd_rd_enable & ~SNES_PARD) ? snescmd_regs[SNES_ADDR[3:0]]
|
||||
:(r213f_enable & ~SNES_PARD & ~r213f_forceread) ? r213fr
|
||||
:(~SNES_READ ^ (r213f_forceread & r213f_enable & ~SNES_PARD))
|
||||
? (srtc_enable ? SRTC_SNES_DATA_OUT
|
||||
:dspx_enable ? DSPX_SNES_DATA_OUT
|
||||
:dspx_dp_enable ? DSPX_SNES_DATA_OUT
|
||||
@ -629,6 +633,12 @@ always @(posedge SYSCLK2) begin
|
||||
end
|
||||
end
|
||||
|
||||
always @(posedge CLK2) begin
|
||||
if(SNES_WR_end & snescmd_wr_enable) begin
|
||||
snescmd_regs[SNES_ADDR[3:0]] <= SNES_DATA;
|
||||
end
|
||||
end
|
||||
|
||||
assign ROM_DATA[7:0] = ROM_ADDR0
|
||||
?(SD_DMA_TO_ROM ? (!MCU_WRITE ? MCU_DOUT : 8'bZ)
|
||||
: (!ROM_WE ? ROM_DOUTr : 8'bZ)
|
||||
|
||||
@ -34,7 +34,9 @@ module address(
|
||||
output msu_enable,
|
||||
output cx4_enable,
|
||||
output cx4_vect_enable,
|
||||
output r213f_enable
|
||||
output r213f_enable,
|
||||
output snescmd_rd_enable,
|
||||
output snescmd_wr_enable
|
||||
);
|
||||
|
||||
wire [23:0] SRAM_SNES_ADDR;
|
||||
@ -68,9 +70,12 @@ assign cx4_enable = &cx4_enable_r[5:2];
|
||||
assign cx4_vect_enable = &SNES_ADDR[15:5];
|
||||
|
||||
wire r213f_enable_w = (SNES_PA == 8'h3f);
|
||||
reg [5:0] r213f_enable_r;
|
||||
initial r213f_enable_r = 6'b000000;
|
||||
always @(posedge CLK) r213f_enable_r <= {r213f_enable_r[4:0], r213f_enable_w};
|
||||
assign r213f_enable = &r213f_enable_r[5:2];
|
||||
assign r213f_enable = r213f_enable_w;
|
||||
|
||||
wire snescmd_rd_enable_w = (SNES_PA[7:4] == 4'b1111);
|
||||
assign snescmd_rd_enable = snescmd_rd_enable_w;
|
||||
|
||||
wire snescmd_wr_enable_w = (SNES_ADDR[23:4] == 20'hccccc);
|
||||
assign snescmd_wr_enable = snescmd_wr_enable_w;
|
||||
|
||||
endmodule
|
||||
|
||||
@ -304,7 +304,11 @@ address snes_addr(
|
||||
//CX4
|
||||
.cx4_enable(cx4_enable),
|
||||
.cx4_vect_enable(cx4_vect_enable),
|
||||
.r213f_enable(r213f_enable)
|
||||
//region
|
||||
.r213f_enable(r213f_enable),
|
||||
//CMD Interface
|
||||
.snescmd_rd_enable(snescmd_rd_enable),
|
||||
.snescmd_wr_enable(snescmd_wr_enable)
|
||||
);
|
||||
|
||||
reg [7:0] CX4_DINr;
|
||||
@ -379,13 +383,15 @@ initial r213f_forceread = 0;
|
||||
initial r213f_state = 2'b01;
|
||||
initial r213f_delay = 3'b011;
|
||||
|
||||
assign SNES_DATA = (r213f_enable & (!SNES_PARD ^ r213f_forceread)) ? r213fr
|
||||
:(!SNES_READ ^ r213f_forceread)
|
||||
? (msu_enable ? MSU_SNES_DATA_OUT
|
||||
:cx4_enable ? CX4_SNES_DATA_OUT
|
||||
:(cx4_active & cx4_vect_enable) ? CX4_SNES_DATA_OUT
|
||||
:SNES_DINr)
|
||||
: 8'bZ;
|
||||
reg[7:0] snescmd_regs[15:0];
|
||||
|
||||
assign SNES_DATA = (snescmd_rd_enable & ~SNES_PARD) ? snescmd_regs[SNES_ADDR[3:0]]
|
||||
:(r213f_enable & ~SNES_PARD & ~r213f_forceread) ? r213fr
|
||||
:(~SNES_READ ^ (r213f_forceread & r213f_enable & ~SNES_PARD))
|
||||
? (msu_enable ? MSU_SNES_DATA_OUT
|
||||
:cx4_enable ? CX4_SNES_DATA_OUT
|
||||
:(cx4_active & cx4_vect_enable) ? CX4_SNES_DATA_OUT
|
||||
:SNES_DOUTr /*(ROM_ADDR0 ? ROM_DATA[7:0] : ROM_DATA[15:8])*/) : 8'bZ;
|
||||
|
||||
reg [3:0] ST_MEM_DELAYr;
|
||||
reg MCU_RD_PENDr;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user