2022-03-29 08:23:54 +00:00
|
|
|
module WarpSE(
|
2021-10-29 10:04:59 +00:00
|
|
|
input [23:1] A_FSB,
|
2024-09-06 10:05:06 +00:00
|
|
|
output [23:22] GA,
|
2021-10-29 10:04:59 +00:00
|
|
|
input nAS_FSB,
|
|
|
|
input nLDS_FSB,
|
|
|
|
input nUDS_FSB,
|
|
|
|
input nWE_FSB,
|
|
|
|
output nDTACK_FSB,
|
|
|
|
output nVPA_FSB,
|
|
|
|
output nBERR_FSB,
|
2023-03-22 01:11:58 +00:00
|
|
|
input FCLK,
|
|
|
|
input C16M,
|
|
|
|
input C8M,
|
|
|
|
input E,
|
2021-10-29 10:04:59 +00:00
|
|
|
input nDTACK_IOB,
|
|
|
|
input nVPA_IOB,
|
|
|
|
output nVMA_IOB,
|
|
|
|
output nAS_IOB,
|
|
|
|
output nUDS_IOB,
|
|
|
|
output nLDS_IOB,
|
2022-03-28 03:45:53 +00:00
|
|
|
output nBR_IOB,
|
|
|
|
input nBG_IOB,
|
2021-10-29 10:04:59 +00:00
|
|
|
input nBERR_IOB,
|
2022-09-04 01:32:05 +00:00
|
|
|
inout nRES,
|
2022-03-28 03:45:53 +00:00
|
|
|
input nIPL2,
|
2024-03-29 08:02:32 +00:00
|
|
|
output nROMOE,
|
2021-10-29 10:04:59 +00:00
|
|
|
output nRAMLWE,
|
|
|
|
output nRAMUWE,
|
|
|
|
output nROMWE,
|
|
|
|
output nRAS,
|
|
|
|
output nCAS,
|
|
|
|
output [11:0] RA,
|
|
|
|
output nOE,
|
|
|
|
output nADoutLE0,
|
|
|
|
output nADoutLE1,
|
|
|
|
output nAoutOE,
|
|
|
|
output nDoutOE,
|
|
|
|
output nDinOE,
|
2022-03-28 03:45:53 +00:00
|
|
|
output nDinLE,
|
2024-09-06 10:05:06 +00:00
|
|
|
output MCKE,
|
2024-09-22 01:52:03 +00:00
|
|
|
input [5:0] DBG);
|
2023-03-26 08:33:59 +00:00
|
|
|
|
2024-10-03 09:51:10 +00:00
|
|
|
/* MC68k clock enable */
|
|
|
|
assign MCKE = 1;
|
|
|
|
|
2024-09-06 10:05:06 +00:00
|
|
|
/* GA gated (translated) address output */
|
2024-10-03 09:51:10 +00:00
|
|
|
//assign GA[23:22] = A_FSB[23:22];
|
|
|
|
assign GA[23:22] = (
|
2024-09-06 10:05:06 +00:00
|
|
|
// $800000-$8FFFFF to $000000-$0FFFFF (1 MB)
|
|
|
|
(A_FSB[23:20]==4'h8) ||
|
|
|
|
// $700000-$7EFFFF to $300000-$3EFFFF (960 kB)
|
|
|
|
(A_FSB[23:20]==4'h7 && A_FSB[19:16]!=4'hF) ||
|
|
|
|
// $600000-$6FFFFF to $200000-$2FFFFF (1 MB)
|
2024-10-03 09:51:10 +00:00
|
|
|
(A_FSB[23:20]==4'h6)) ? 2'b00 : A_FSB[23:22];
|
2022-03-28 03:45:53 +00:00
|
|
|
|
2022-09-04 01:32:05 +00:00
|
|
|
/* Reset input and open-drain output */
|
|
|
|
wire nRESin = nRES;
|
|
|
|
wire nRESout;
|
|
|
|
assign nRES = !nRESout ? 1'b0 : 1'bZ;
|
2021-10-29 10:04:59 +00:00
|
|
|
|
|
|
|
/* AS cycle detection */
|
2024-10-03 09:51:10 +00:00
|
|
|
wire BACT;
|
|
|
|
wire BACTr;
|
2021-10-29 10:04:59 +00:00
|
|
|
|
2023-07-16 03:21:44 +00:00
|
|
|
/* Refresh request/ack signals */
|
|
|
|
wire RefReq, RefUrg;
|
2021-10-29 10:04:59 +00:00
|
|
|
|
2024-09-22 12:13:18 +00:00
|
|
|
/* QoS enable */
|
2024-10-03 09:51:10 +00:00
|
|
|
wire QoSEN;
|
2024-09-22 12:13:18 +00:00
|
|
|
|
2023-03-22 01:11:58 +00:00
|
|
|
/* FSB chip select signals */
|
2024-10-03 09:51:10 +00:00
|
|
|
wire IOCS, IORealCS, IOPWCS, IACS;
|
2024-09-06 10:05:06 +00:00
|
|
|
wire ROMCS, ROMCS4X;
|
2024-10-03 09:51:10 +00:00
|
|
|
wire RAMCS, RAMCS0X, QoSCS;
|
2021-10-29 10:04:59 +00:00
|
|
|
CS cs(
|
|
|
|
/* MC68HC000 interface */
|
2023-03-22 01:11:58 +00:00
|
|
|
A_FSB[23:08], FCLK, nRESin, nWE_FSB,
|
2023-07-16 06:25:27 +00:00
|
|
|
/* /AS cycle detection */
|
2021-10-29 10:04:59 +00:00
|
|
|
BACT,
|
2024-09-22 12:13:18 +00:00
|
|
|
/* QoS enable input */
|
2024-10-03 09:51:10 +00:00
|
|
|
QoSEN,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* Device select outputs */
|
2024-10-03 09:51:10 +00:00
|
|
|
IOCS, IORealCS, IOPWCS, IACS,
|
2023-07-16 06:25:27 +00:00
|
|
|
ROMCS, ROMCS4X,
|
2024-10-03 09:51:10 +00:00
|
|
|
RAMCS, RAMCS0X, QoSCS);
|
2021-10-29 10:04:59 +00:00
|
|
|
|
2023-04-07 03:11:11 +00:00
|
|
|
wire RAMReady;
|
2021-10-29 10:04:59 +00:00
|
|
|
RAM ram(
|
|
|
|
/* MC68HC000 interface */
|
2023-04-10 23:28:13 +00:00
|
|
|
FCLK, A_FSB[21:1], nWE_FSB,
|
|
|
|
nAS_FSB, nLDS_FSB, nUDS_FSB, nDTACK_FSB,
|
2024-09-22 01:52:46 +00:00
|
|
|
/* AS cycle detection inputs */
|
2023-07-16 06:25:27 +00:00
|
|
|
BACT, BACTr,
|
2024-09-22 01:52:46 +00:00
|
|
|
/* RAM and ROM select inputs */
|
|
|
|
RAMCS, RAMCS0X, ROMCS, ROMCS4X,
|
|
|
|
/* RAM ready output */
|
|
|
|
RAMReady,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* Refresh Counter Interface */
|
2023-07-16 03:21:44 +00:00
|
|
|
RefReq, RefUrg,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* DRAM and NOR flash interface */
|
|
|
|
RA[11:0], nRAS, nCAS,
|
2024-03-29 08:02:32 +00:00
|
|
|
nRAMLWE, nRAMUWE, nOE, nROMOE, nROMWE);
|
2021-10-29 10:04:59 +00:00
|
|
|
|
2023-07-16 03:21:44 +00:00
|
|
|
wire IONPReady, IOPWReady;
|
2024-10-03 09:51:10 +00:00
|
|
|
wire IORDREQ, IOWRREQ;
|
2023-04-07 03:11:11 +00:00
|
|
|
wire IOL0, IOU0;
|
2021-10-29 10:04:59 +00:00
|
|
|
wire ALE0S, ALE0M, ALE1;
|
|
|
|
assign nADoutLE0 = ~(ALE0S || ALE0M);
|
|
|
|
assign nADoutLE1 = ~ALE1;
|
2023-04-07 03:11:11 +00:00
|
|
|
wire IOACT, IODONE, IOBERR;
|
2021-10-29 10:04:59 +00:00
|
|
|
IOBS iobs(
|
|
|
|
/* MC68HC000 interface */
|
2023-03-22 01:11:58 +00:00
|
|
|
FCLK, nWE_FSB, nAS_FSB, nLDS_FSB, nUDS_FSB,
|
2023-04-07 03:11:11 +00:00
|
|
|
/* AS cycle detection */
|
2021-10-29 10:04:59 +00:00
|
|
|
BACT,
|
2023-03-30 15:50:05 +00:00
|
|
|
/* Select signals */
|
2024-09-22 12:13:18 +00:00
|
|
|
IOCS, IORealCS, IOPWCS,
|
2023-03-30 15:50:05 +00:00
|
|
|
/* FSB cycle termination outputs */
|
2023-07-16 03:21:44 +00:00
|
|
|
IONPReady, IOPWReady, nBERR_FSB,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* Read data OE control */
|
|
|
|
nDinOE,
|
|
|
|
/* IOB Master Controller Interface */
|
2024-10-03 09:51:10 +00:00
|
|
|
IORDREQ, IOWRREQ,
|
2023-04-07 03:11:11 +00:00
|
|
|
IOACT, IODONE, IOBERR,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* FIFO primary level control */
|
2023-04-07 03:11:11 +00:00
|
|
|
ALE0S, IOL0, IOU0,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* FIFO secondary level control */
|
|
|
|
ALE1);
|
2022-03-28 03:45:53 +00:00
|
|
|
|
2023-03-20 05:13:11 +00:00
|
|
|
wire AoutOE;
|
2023-03-25 07:49:44 +00:00
|
|
|
assign nAoutOE = !AoutOE;
|
2024-10-03 09:51:10 +00:00
|
|
|
wire nAS_IOBout, nLDS_IOBout, nUDS_IOBout, nVMA_IOBout;
|
2023-03-25 07:49:44 +00:00
|
|
|
assign nAS_IOB = AoutOE ? nAS_IOBout : 1'bZ;
|
|
|
|
assign nLDS_IOB = AoutOE ? nLDS_IOBout : 1'bZ;
|
|
|
|
assign nUDS_IOB = AoutOE ? nUDS_IOBout : 1'bZ;
|
|
|
|
assign nVMA_IOB = AoutOE ? nVMA_IOBout : 1'bZ;
|
2021-10-29 10:04:59 +00:00
|
|
|
IOBM iobm(
|
|
|
|
/* PDS interface */
|
2023-03-26 08:33:59 +00:00
|
|
|
C16M, C8M, E,
|
2024-10-03 09:51:10 +00:00
|
|
|
nAS_IOBout, nLDS_IOBout, nUDS_IOBout, nVMA_IOBout,
|
2023-03-25 07:49:44 +00:00
|
|
|
nDTACK_IOB, nVPA_IOB, nBERR_IOB, nRESin,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* PDS address and data latch control */
|
2023-03-20 04:53:10 +00:00
|
|
|
AoutOE, nDoutOE, ALE0M, nDinLE,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* IO bus slave port interface */
|
2024-10-03 09:51:10 +00:00
|
|
|
IORDREQ, IOWRREQ, IOL0, IOU0,
|
2023-04-07 03:11:11 +00:00
|
|
|
IOACT, IODONE, IOBERR);
|
2021-10-29 10:04:59 +00:00
|
|
|
|
|
|
|
CNT cnt(
|
2023-07-16 03:21:44 +00:00
|
|
|
/* FSB clock and E clock inputs */
|
2024-10-03 09:51:10 +00:00
|
|
|
FCLK, E,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* Refresh request */
|
2023-07-16 03:21:44 +00:00
|
|
|
RefReq, RefUrg,
|
2023-03-26 08:33:59 +00:00
|
|
|
/* Reset, button */
|
2024-09-22 12:13:18 +00:00
|
|
|
nRESout, nRESin, nIPL2,
|
2023-03-20 04:53:10 +00:00
|
|
|
/* Mac PDS bus master control outputs */
|
2023-04-08 09:46:13 +00:00
|
|
|
AoutOE, nBR_IOB,
|
2024-09-22 01:53:14 +00:00
|
|
|
/* QoS control */
|
2024-10-03 09:51:10 +00:00
|
|
|
BACT, QoSCS, QoSEN);
|
2021-10-29 10:04:59 +00:00
|
|
|
|
|
|
|
FSB fsb(
|
|
|
|
/* MC68HC000 interface */
|
2023-03-22 01:11:58 +00:00
|
|
|
FCLK, nAS_FSB, nDTACK_FSB, nVPA_FSB,
|
|
|
|
/* FSB cycle detection */
|
2024-09-06 10:05:06 +00:00
|
|
|
BACT, BACTr,
|
2023-03-22 01:11:58 +00:00
|
|
|
/* Ready inputs */
|
2023-04-07 03:11:11 +00:00
|
|
|
ROMCS4X,
|
|
|
|
RAMCS0X, RAMReady,
|
2023-07-16 03:21:44 +00:00
|
|
|
IOPWCS, IOPWReady, IONPReady,
|
2024-10-03 09:51:10 +00:00
|
|
|
QoSEN,
|
2021-10-29 10:04:59 +00:00
|
|
|
/* Interrupt acknowledge select */
|
2024-10-03 09:51:10 +00:00
|
|
|
IACS);
|
2021-10-29 10:04:59 +00:00
|
|
|
|
|
|
|
endmodule
|