The memory decoder described here was design to replace the logic circuits needed to interface RAM,
ROM, and up to 4 IO devices to a simple 6502-based computer.
The device chips selects, OE, and WE are all controlled from the microprocessor's address and control signals.
I have named this device - "DEC-1". This is a pinout for the GAL22V10 24-pin DIP package:
--------
PHI2 |1 24| Vcc
RW |2 23| /OE
A15 |3 22| /WE
A14 |4 21| /RAM
A13 |5 20| /ROM
A12 |6 19| /IO1
A11 |7 18| /IO2
A10 |8 17| /IO3
A9 |9 16| /IO4
A8 |10 15| A4
A7 |11 14| A5
Gnd |12 13| A6
--------
Using this package, the system memory map would look like this:
$0000-$01FF - RAM (zero page and stack space) $0200-$020F - IO Device #1 (16 bytes) $0210-$021F - IO Device #2 (16 bytes) $0220-$022F - IO Device #3 (16 bytes) $0230-$023F - IO Device #4 (16 bytes) $0240-$02FF - unassigned (can be externally decoded for use) $0300-$7FFF - RAM $8000-$FFFF - ROM
Here is a schematic of a simple 6502 Computer using the DEC-1:

Pretty simple, and easy to use.
The source code looks like this:
Name Memory Map Decoder;
Partno DEC-1;
Revision 01;
Date 10/19/10;
Designer Daryl Rictor;
Company ;
Location USA;
Assembly None;
Device p22v10;
/*********************************************************************************/
/* */
/* This program and its associated documentation are provided for your personal */
/* use only and appear here exclusively by permission of the copyright holder. */
/* Please contact the copyright holder before re-distributing, re-publishing */
/* or disseminating this copyrighted work. This code is not GPL or in the */
/* public domain. Please respect the author's copyright. */
/* */
/* No waranty, either expressed or implied, are given. I assume no liability */
/* for its use in any project or device. */
/* */
/* Your use of this program indicates your acceptance of all license terms. */
/* This particular version is freeware as long as the copyright messages are */
/* left intact. */
/* */
/*********************************************************************************/
/* Pin Map
--------
PHI2 |1 24| Vcc
RW |2 23| /OE
A15 |3 22| /WE
A14 |4 21| /RAM
A13 |5 20| /ROM
A12 |6 19| /IO1
A11 |7 18| /IO2
A10 |8 17| /IO3
A9 |9 16| /IO4
A8 |10 15| A4
A7 |11 14| A5
Gnd |12 13| A6
--------
*/
/*
* Inputs: All are signals from the 6502, 65C02, 65816
*/
Pin 1 = PHI2;
Pin 2 = RW;
Pin 3 = A15;
Pin 4 = A14;
Pin 5 = A13;
Pin 6 = A12;
Pin 7 = A11;
Pin 8 = A10;
Pin 9 = A9;
Pin 10 = A8;
Pin 11 = A7;
Pin 13 = A6;
Pin 14 = A5;
Pin 15 = A4;
/*
* Outputs: define outputs - all are simple combinatorial
*/
Pin 23 = OE; /* to RAM and ROM chips */
Pin 22 = WE; /* to RAM and ROM chips */
Pin 21 = RAM; /* to RAM /CS pin */
Pin 20 = ROM; /* to ROM /CS pin */
Pin 19 = CS1; /* to IO Device #1 /CS */
Pin 18 = CS2; /* to IO Device #2 /CS */
Pin 17 = CS3; /* to IO Device #3 /CS */
Pin 16 = CS4; /* to IO Device #4 /CS */
/*
* Logic: All outputs are active low signals in the target system.
*/
ROM = !A15;
RAM = A15 # (!A14 & !A13 & !A12 & !A11 & !A10 & A9 & !A8);
CS1 = !(!A15 & !A14 & !A13 & !A12 & !A11 & !A10 & A9 & !A8 & !A7 & !A6 & !A5 & !A4);
CS2 = !(!A15 & !A14 & !A13 & !A12 & !A11 & !A10 & A9 & !A8 & !A7 & !A6 & !A5 & A4);
CS3 = !(!A15 & !A14 & !A13 & !A12 & !A11 & !A10 & A9 & !A8 & !A7 & !A6 & A5 & !A4);
CS4 = !(!A15 & !A14 & !A13 & !A12 & !A11 & !A10 & A9 & !A8 & !A7 & !A6 & A5 & A4);
WE = !(PHI2 & !RW);
OE = !(PHI2 & RW);
The interesting fact here is that you could easily change the memory map without a single midification to the board.
For example, changing the IO area to $D000-D0FF would look like this:
ROM = !A15 # (A14 & !A13 & A12 & !A11 & !A10 & !A9 & !A8); RAM = A15; CS1 = !(A15 & A14 & !A13 & A12 & !A11 & !A10 & !A9 & !A8 & !A7 & !A6 & !A5 & !A4); CS2 = !(A15 & A14 & !A13 & A12 & !A11 & !A10 & !A9 & !A8 & !A7 & !A6 & !A5 & A4); CS3 = !(A15 & A14 & !A13 & A12 & !A11 & !A10 & !A9 & !A8 & !A7 & !A6 & A5 & !A4); CS4 = !(A15 & A14 & !A13 & A12 & !A11 & !A10 & !A9 & !A8 & !A7 & !A6 & A5 & A4); WE = !(PHI2 & !RW); OE = !(PHI2 & RW);
You can download the source and compiled JED files for this project here -> dec1.zip
| Home |