Memory Module w/ Battery Backup

The module provides the CPU with 2 megabytes of volatile memory and 32k of persistent EEPROM memory.

Note: The lower 32k of address space is not available to RAM, it is unreachable.

EEPROM (32k)

$0000:$7fff

This is the memory that is used on startup to start running the program.

Reserved Address Space

  • $0:0: Initial program code instruction called after reset/boot
Interrupt Vector Table (IVT)
  • $0:f0: IRQ0
  • $0:f1: IRQ1
  • $0:f2: IRQ2
  • $0:f3: IRQ3
  • $0:f4: IRQ4
  • $0:f5: IRQ5
  • $0:f6: IRQ6
  • $0:f7: IRQ7
  • $0:ff: Interrupt Service Routine (ISR)
  • $0:fe: Reset

RAM (2Mb)

$8000:$20000

Segments / Paged

Each segment register is 5-bits wide and allows the user to access the entire range of space in memory. 16-bits from address bus and the additional 3-bits (+2 bits for decoding chip enables) to make a 19-bit address.

Each segment can latch data from the lower 5-bits of the data bus as well as assert its contents out.

Code Segment (CS)

This is active when fetching the next instruction. It is only changed by a far jmp instruction and cannot be manipulated by mov

Data Segment (DS)

This is active during any read‘s or write‘s to Memory (excluding program code). This can be set using mov ds, 0xf

Stack Segment (SS)

This is active when executing a PUSH or POP instruction to and from the stack. This can be set using mov ss, 0xf

Read/Write Memory Control Truth Table

AddressSegment[0..4]ReadWriteUse CodeUse DataUse StackDescription
n.c.n.c.11111NOP
<= 0x7ffff0x00n.c.011Read Code EEPROM
<= 0x7ffff0x00n.c.101Read Data EEPROM
0x0…0x200000x1…0x1f01011Read Code RAM
0x0…0x200000x1…0x1f01101Read Data RAM
0x0…0x200000x1…0x1f01110Read Stack RAM
>= 0x8000n.c.01011Read Code RAM
>= 0x8000n.c.01101Read Data RAM
>= 0x8000n.c.01110Read Stack RAM
0x0…0x200000x1…0x1f10101Write Data RAM
>= 0x8000n.c.10101Write Data RAM
0x0…0x200000x1…0x1f10110Write Stack RAM
>= 0x8000n.c.10110Write Stack RAM

Memory Segment & Address Control Truth Table

CS InCS OutDS InDS OutSS InSS OutMAR InClockDescription
1111111_/ NOP
0111111_/ Latches Code Segment
1101111_/ Latches Data Segment
1111011_/ Latches Stack Segment
1011111_/ Assert Code Segment
1110111_/ Assert Data Segment
1111101_/ Assert Stack Segment
1111110_/ Latch Memory Address Register

Schematics

Memory Module

Data Segment’s Schematic

PCB Gerber/Traces

Parts & Components List

PART #DESCRIPTIONQTYSHEETLINK
IS61C5128AS-25TLI512K x 8 HIGH-SPEED CMOS STATIC RAM4DATAMouser
AT28C256256K (32K x 8) Paged Parallel EEPROM1DATAMouser
74HC5748-Bit, Edge-Triggered, flip-flop’s2DATAMouser
74HC173Quad D-Type Flip-Flop2DATAMouser
74HC2458-bit, Tri-State Transceiver7DATAMouser
CD4072Dual 4-Input OR gates1DATAMouser
74HC1394 to 16 line, decoder1DATAMouser
74HC00Dual 4-input NAND gates1DATAMouser
Ceramic Capacitor8
Resistor (LED)49
Light Emitting Diodes (LED)49
PLCC Socket, 32 pin – MOUSER1
Header Pins