2.4 KiB
64 KB SRAM — pinout reference for ram-64k.c
The closest real-world part to the 64 KB byte-wide SRAM we want is the HM628512 / HM6264 family from Hitachi (later Renesas), or the Cypress CY62256 (which is 32 KB) scaled up. For the velxio model we use an idealised 64 KB part: 16 address pins, 8 data pins, three control signals.
Package: 32-pin DIP-equivalent (logical model)
| Group | Pins | Direction | Notes |
|---|---|---|---|
| Power | VCC, GND | power | +5 V |
| Address | A0..A15 (16) | input | Selects byte at offset addr |
| Data | D0..D7 (8) | bidirectional | Output during read, input during write |
| Chip enable | CE̅ | input | Active-low |
| Output enable | OE̅ | input | Active-low |
| Write enable | WE̅ | input | Active-low |
Read / write logic
| CE̅ | WE̅ | OE̅ | Mode | Action |
|---|---|---|---|---|
| H | x | x | Not selected | D pins high-Z; mem unchanged |
| L | H | L | Read | Drive mem[addr] onto D pins |
| L | H | H | Output disable | D pins high-Z; mem unchanged |
| L | L | x | Write | Latch mem[addr] := data on WE̅ rising edge |
The "rising-edge latches" convention matches every common SRAM
datasheet and is what ram-64k.test.js's writeCycle() helper
asserts: drop WE̅ low, hold for a setup time, raise WE̅ → cell is
written. Real SRAMs latch at end-of-WE per the part's t_DH (data
hold) timing; we model that as instantaneous on the rising edge.
Power-on state
Real SRAM is volatile and powers up with indeterminate contents.
The ram-64k.test.js blank-state assertion (reads 0x00 from never-written addresses) relies on our model zero-initialising mem at
chip_setup. This is a deliberate simplification — easier to test
against, and matches what most simulators do (Wokwi, ASIC Verilog
sims, etc.).
Why no PCB-realistic 28-pin layout
The HM62256 (32 KB, 28-pin) was the real-world workhorse and a faithful "32-pin equivalent of 62256" doesn't exist as a single chip historically. For 64 KB on a single chip, the practical options are the HM628128 (16 KB? no — 128 Kbit = 16 KB) family up through HM628512 (512 Kbit = 64 KB, 32-pin DIP). We adopt the HM628512 pin philosophy without modelling its precise pin ordering, since velxio doesn't enforce DIP-package physical layout.