Parts ReferenceMemory & EEPROM

Memory & EEPROM

de:volt ships two parallel EEPROMs for non-volatile storage and lookup tables: the 28C16 (2K×8, 24-pin DIP) and the 28C256 (32K×8, 28-pin DIP). Both support supply-aware tri-state reads and edge-latched in-circuit writes with a finite write-cycle delay.

A third memory part, the 74LS189 64-bit static RAM, is a logic-family chip and lives on the Logic ICs page rather than here.

How a parallel EEPROM reads

A parallel EEPROM exposes three groups of pins:

  • Address lines (A0An): the binary index of the byte you want.
  • Data lines (I/O0I/O7): the eight bits of that byte, on the bus.
  • Control lines: /CE (chip enable), /OE (output enable), and /WE (write enable). All three are active-low: the leading slash marks the inversion.

To read a byte: put the address on A0An, hold /WE high, then pull /CE low and /OE low. The chip places the stored byte onto I/O0I/O7. The read is combinational in this model, with no access-time delay. Deassert /OE or /CE and the I/O pins return to high impedance, releasing the bus.

Both parts read at the supply levels you’d expect from a CMOS-EEPROM family:

PropertyValue
Logic familyCMOS-EEPROM
VCC range (min / nom / max)4.5 / 5 / 5.5 V
Input low max (v_il_max)0.8 V
Input high min (v_ih_min)2 V
Output current max (io_max)4 mA

Use Load .bin in the Inspector to seed the contents image. An erased or empty image reads as 0xFF. Runtime bus writes update an in-memory byte array, and that live image is included when the project is serialized or saved. Loading a different .bin image reseeds the device.

How an in-circuit write works

Set the address and data bus with /OE high. The model accepts either of the common write-latch forms:

  • Pulse /WE low while /CE stays low; address and data latch on /WE rising.
  • Hold /WE low and pulse /CE; address and data latch on /CE rising.

An accepted byte takes 10 ms of simulated time to commit. While that address is busy, I/O7 presents the inverse of the pending bit 7 and I/O6 toggles on successive reads, providing the supported data-polling behaviour. Unrelated addresses remain readable. Write state, including a pending cycle, participates in simulation snapshot/rollback so a rejected solver step cannot commit memory early.

The 28C16 accepts ordinary writes. The 28C256 enables software data protection by default: an unsequenced write is ignored until the standard 0x5555/AA, 0x2AAA/55, 0x5555/A0 unlock sequence is completed. Advanced circuits can set sdpBypass = 1 to bypass this teaching model of protection.

28C16: 2K×8 EEPROM (ic-28c16)

2,048 bytes addressed by 11 lines (A0A10), eight data lines, in a 24-pin DIP. The classic use is a lookup table: for example a binary-to-7-segment decoder when a CD4511 isn’t on hand, or any small combinational function you’d rather store than build from gates.

Pinout

24-pin DIP. Pin 1 is at the notch end; count counter-clockwise.

PinLabelFunctionPinLabelFunction
1A7Address24VCC+5 V supply
2A6Address23A8Address
3A5Address22A9Address
4A4Address21/WEWrite enable (active-low)
5A3Address20/OEOutput enable (active-low)
6A2Address19A10Address
7A1Address18/CEChip enable (active-low)
8A0Address17I/O7Data
9I/O0Data16I/O6Data
10I/O1Data15I/O5Data
11I/O2Data14I/O4Data
12GNDGround13I/O3Data

Read sequence

Address  A0–A10 ──── (set the byte index)
/CE  ── LOW ──┐
/OE  ── LOW ──┴──→ I/O0–I/O7 drive the stored byte
/WE  ── HIGH ──── (read mode; not writing)

Hold /WE high during reads. With /CE or /OE released, the I/O bus floats so several devices can share it.

28C256: 32K×8 EEPROM (ic-28c256)

The same read/write model with 16× the storage: 32,768 bytes addressed by 15 lines (A0A14), in a 28-pin DIP. Use it when a 28C16’s 2K is not enough for larger character tables, microcode, or a sizeable memory image.

Pinout

28-pin DIP. The extra four pins over the 28C16 carry the higher address lines (A11A14).

PinLabelFunctionPinLabelFunction
1A14Address28VCC+5 V supply
2A12Address27/WEWrite enable (active-low)
3A7Address26A13Address
4A6Address25A8Address
5A5Address24A9Address
6A4Address23A11Address
7A3Address22/OEOutput enable (active-low)
8A2Address21A10Address
9A1Address20/CEChip enable (active-low)
10A0Address19I/O7Data
11I/O0Data18I/O6Data
12I/O1Data17I/O5Data
13I/O2Data16I/O4Data
14GNDGround15I/O3Data

Reads work exactly as on the 28C16: assert /CE and /OE low, hold /WE high, and the byte at A0A14 appears on I/O0I/O7.

Simulator behaviour

  • Reads are combinational: the data bus reflects the addressed byte directly, with no access-time delay and no clock.
  • The control lines are active-low. A read needs /CE low and /OE low; releasing either tristates the I/O bus.
  • Writes latch on the supported /WE or /CE edge, commit after 10 ms, and expose I/O7/I/O6 data polling while busy.
  • The 28C256 models its three-write software-protection unlock; the 28C16 does not require it.
  • Runtime bytes persist across ordinary engine reloads and are included in project serialization. Loading another .bin deliberately replaces the live image.
  • Cell programming physics, endurance, retention aging, partial-write corruption, supply-ramp sensitivity, access-time and pin-timing margins, temperature effects, and package timing skew are not modelled.
  • For a small read/write scratchpad instead of a fixed table, see the 74LS189 on the Logic ICs page.

Select an EEPROM to see the Included / Not included model disclosure. A successful simulated write proves the supported bus sequence and timing model, not long-term memory reliability.