NEO-ZMC: Difference between revisions
Cyberwillis (talk | contribs) No edit summary |
Cyberwillis (talk | contribs) |
||
Line 74: | Line 74: | ||
{|class="wikitable" | {|class="wikitable" | ||
! | !DWORD | ||
!BANK | |||
!RANGE | |||
|- | |- | ||
|8003 | |$8003 | ||
|bank 00 | |||
|$00000~$03FFF | |||
|- | |- | ||
|8103 | |$8103 | ||
|bank 01 | |||
|$04000~$07FFF | |||
|- | |- | ||
|8203 | |$8203 | ||
|bank 02 | |||
|$08000~$0BFFF | |||
|- | |- | ||
|8303 | |$8303 | ||
|bank 03 | |||
|$0C000~$0FFFF | |||
|- | |- | ||
|8403 | |$8403 | ||
|bank 04 | |||
|$10000~$13FFF | |||
|- | |- | ||
|8503 | |$8503 | ||
|bank 05 | |||
|$14000~$17FFF | |||
|- | |- | ||
|8603 | |$8603 | ||
|bank 06 | |||
|$18000~$1BFFF | |||
|- | |- | ||
|8703 | |$8703 | ||
|bank 07 | |||
|$1C000~$1FFFF | |||
|- | |- | ||
|8803 | |$8803 | ||
|bank 08 | |||
|$20000~$23FFF | |||
|- | |- | ||
|8903 | |$8903 | ||
|bank 09 | |||
|$24000~$27FFF | |||
|- | |- | ||
|8A03 | |$8A03 | ||
|bank 10 | |||
|$28000~$2BFFF | |||
|- | |- | ||
|8B03 | |$8B03 | ||
|bank 11 | |||
|$2C000~$2FFFF | |||
|- | |- | ||
|8C03 | |$8C03 | ||
|bank 12 | |||
|$30000~$33FFF | |||
|- | |- | ||
|8D03 | |$8D03 | ||
|bank 13 | |||
|$34000~$37FFF | |||
|- | |- | ||
|8E03 | |$8E03 | ||
|bank 14 | |||
|$38000~$3BFFF | |||
|- | |- | ||
|8F03 | |$8F03 | ||
|bank 15 | |||
|$3C000~$3FFFF | |||
|- | |- | ||
|9003 | |$9003 | ||
|bank 16 | |||
|$40000~$43FFF | |||
|- | |- | ||
|9103 | |$9103 | ||
|bank 17 | |||
|$40000~$47FFF | |||
|- | |- | ||
|9203 | |$9203 | ||
|bank 18 | |||
|$40000~$4BFFF | |||
|- | |- | ||
|9303 | |$9303 | ||
|bank 19 | |||
|$40000~$4FFFF | |||
|- | |- | ||
|9403 | |$9403 | ||
|bank 20 | |||
|$50000~$53FFF | |||
|- | |- | ||
|9503 | |$9503 | ||
|bank 21 | |||
|$54000~$57FFF | |||
|- | |- | ||
|9603 | |$9603 | ||
|bank 22 | |||
|$58000~$5BFFF | |||
|- | |- | ||
|9703 | |$9703 | ||
|bank 23 | |||
|$5C000~$5FFFF | |||
|- | |- | ||
|9803 | |$9803 | ||
|bank 24 | |||
|$60000~$63FFF | |||
|- | |- | ||
|9903 | |$9903 | ||
|bank 25 | |||
|$64000~$67FFF | |||
|- | |- | ||
|9A03 | |$9A03 | ||
|bank 26 | |||
|$68000~$6BFFF | |||
|- | |- | ||
|9B03 | |$9B03 | ||
|bank 27 | |||
|$6C000~$6FFFF | |||
|- | |- | ||
|9C03 | |$9C03 | ||
|bank 28 | |||
|$70000~$73FFF | |||
|- | |- | ||
|9D03 | |$9D03 | ||
|bank 29 | |||
|$74000~$77FFF | |||
|- | |- | ||
|9E03 | |$9E03 | ||
|bank 30 | |||
|$78000~$7BFFF | |||
|- | |- | ||
|9F03 | |$9F03 | ||
|bank 31 | |||
|$7C000~$7FFFF | |||
|} | |} | ||
[[Category:Chips]] | [[Category:Chips]] |
Revision as of 20:08, 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 the bank selector and SDA1,SDA0 is the bank 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 | BANK | RANGE |
---|---|---|
$8003 | bank 00 | $00000~$03FFF |
$8103 | bank 01 | $04000~$07FFF |
$8203 | bank 02 | $08000~$0BFFF |
$8303 | bank 03 | $0C000~$0FFFF |
$8403 | bank 04 | $10000~$13FFF |
$8503 | bank 05 | $14000~$17FFF |
$8603 | bank 06 | $18000~$1BFFF |
$8703 | bank 07 | $1C000~$1FFFF |
$8803 | bank 08 | $20000~$23FFF |
$8903 | bank 09 | $24000~$27FFF |
$8A03 | bank 10 | $28000~$2BFFF |
$8B03 | bank 11 | $2C000~$2FFFF |
$8C03 | bank 12 | $30000~$33FFF |
$8D03 | bank 13 | $34000~$37FFF |
$8E03 | bank 14 | $38000~$3BFFF |
$8F03 | bank 15 | $3C000~$3FFFF |
$9003 | bank 16 | $40000~$43FFF |
$9103 | bank 17 | $40000~$47FFF |
$9203 | bank 18 | $40000~$4BFFF |
$9303 | bank 19 | $40000~$4FFFF |
$9403 | bank 20 | $50000~$53FFF |
$9503 | bank 21 | $54000~$57FFF |
$9603 | bank 22 | $58000~$5BFFF |
$9703 | bank 23 | $5C000~$5FFFF |
$9803 | bank 24 | $60000~$63FFF |
$9903 | bank 25 | $64000~$67FFF |
$9A03 | bank 26 | $68000~$6BFFF |
$9B03 | bank 27 | $6C000~$6FFFF |
$9C03 | bank 28 | $70000~$73FFF |
$9D03 | bank 29 | $74000~$77FFF |
$9E03 | bank 30 | $78000~$7BFFF |
$9F03 | bank 31 | $7C000~$7FFFF |