NEO-ZMC: Difference between revisions
Cyberwillis (talk | contribs) |
Cyberwillis (talk | contribs) |
||
Line 243: | Line 243: | ||
|} | |} | ||
Others range sets | Others range sets may differ from the range access here.(e.g. $8000, $8001 or $8002) | ||
[[Category:Chips]] | [[Category:Chips]] |
Revision as of 23:24, 23 December 2011
Z80 memory controller. Has a hardwired 32KiB bank and switchable 16/8/4/2KiB banks arranged as a register file. To save pins the high address lines (A15-A8) are used for data input. The chip's write strobe is (port) address decoded inside the console.
Pinout
OpenOffice Draw file: File:Neo-zmc.odg
Operation
SDA10,SDA9,SDA8 are bank selector and SDA1,SDA0 range size selector or rom size selector
SDA1,SDA0 = 0,0 select bank ranges of 2Kbytes (64k M1)
SDA1,SDA0 = 0,1 select bank ranges of 4Kbytes (128k M1)
SDA1,SDA0 = 1,0 select bank ranges of 8Kbytes (256k M1)
SDA1,SDA0 = 1,1 select bank ranges of 16Kbytes (512k M1)
SDRD0 is the memory operation selector WRITE (set bank and range size) / READ (access M1 based in previous configuration)
Details:
We must put SDRD0 is in high logic level before configure any bank;
To configure a bank to be accessed (e.g. bank0):
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8003 (select bank 0 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $00000~$03FFF;
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8103 (select bank 1 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $04000~$07FFF;
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8203 (select bank 2 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $08000~$0BFFF;
Set SDRD0 from H to L (prepare for new bank configuration, let output in tri-state and accept inputs)
Set SDA[15..0] = $8303 (select bank 3 and 16k range size)
Set SDRD0 from L to H (fix bank, and ready to convert inputs in proper outputs signals)
With SDRD0 in H, send inputs SDA[15..0] from $8000~BFFF, ZMC will convert this range in M1 range from $0C000~$0FFFF;
... and so on...
DWORD
(SDA[15..0]) |
BANK
0-31 |
INPUT RANGE
(SDA[15..0]) |
OUTPUT RANGE
(A[18..0]) |
---|---|---|---|
$8003 | bank 00 | $8000~$BFFF | $00000~$03FFF |
$8103 | bank 01 | $8000~$BFFF | $04000~$07FFF |
$8203 | bank 02 | $8000~$BFFF | $08000~$0BFFF |
$8303 | bank 03 | $8000~$BFFF | $0C000~$0FFFF |
$8403 | bank 04 | $8000~$BFFF | $10000~$13FFF |
$8503 | bank 05 | $8000~$BFFF | $14000~$17FFF |
$8603 | bank 06 | $8000~$BFFF | $18000~$1BFFF |
$8703 | bank 07 | $8000~$BFFF | $1C000~$1FFFF |
$8803 | bank 08 | $8000~$BFFF | $20000~$23FFF |
$8903 | bank 09 | $8000~$BFFF | $24000~$27FFF |
$8A03 | bank 10 | $8000~$BFFF | $28000~$2BFFF |
$8B03 | bank 11 | $8000~$BFFF | $2C000~$2FFFF |
$8C03 | bank 12 | $8000~$BFFF | $30000~$33FFF |
$8D03 | bank 13 | $8000~$BFFF | $34000~$37FFF |
$8E03 | bank 14 | $8000~$BFFF | $38000~$3BFFF |
$8F03 | bank 15 | $8000~$BFFF | $3C000~$3FFFF |
$9003 | bank 16 | $8000~$BFFF | $40000~$43FFF |
$9103 | bank 17 | $8000~$BFFF | $40000~$47FFF |
$9203 | bank 18 | $8000~$BFFF | $40000~$4BFFF |
$9303 | bank 19 | $8000~$BFFF | $40000~$4FFFF |
$9403 | bank 20 | $8000~$BFFF | $50000~$53FFF |
$9503 | bank 21 | $8000~$BFFF | $54000~$57FFF |
$9603 | bank 22 | $8000~$BFFF | $58000~$5BFFF |
$9703 | bank 23 | $8000~$BFFF | $5C000~$5FFFF |
$9803 | bank 24 | $8000~$BFFF | $60000~$63FFF |
$9903 | bank 25 | $8000~$BFFF | $64000~$67FFF |
$9A03 | bank 26 | $8000~$BFFF | $68000~$6BFFF |
$9B03 | bank 27 | $8000~$BFFF | $6C000~$6FFFF |
$9C03 | bank 28 | $8000~$BFFF | $70000~$73FFF |
$9D03 | bank 29 | $8000~$BFFF | $74000~$77FFF |
$9E03 | bank 30 | $8000~$BFFF | $78000~$7BFFF |
$9F03 | bank 31 | $8000~$BFFF | $7C000~$7FFFF |
Others range sets may differ from the range access here.(e.g. $8000, $8001 or $8002)