

Z280-S100
16-bit Zilog Z280 CPU card for the IEEE-696 S-100 backplane; glue logic in two ATF1508AS CPLDs
- Size
- 254 × 134.6 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 61
- Nets
- 277
- Pads
- 1,080
- Tracks, vias
- 3,179, 319
- Pours
- 3
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 5 Sep 2026
- Updated
- 8 Sep 2026
Overview
Z280-S100 is an open-source printed circuit board by cm68, from the cm68/Z280-S100 repository on GitHub, published under the CERN-OHL-P-2.0 licence. It is a 4-layer board of 254 × 134.6 mm with 61 parts on 277 nets, routed with 3,179 tracks and 319 vias.
It is built around the 74F245D, 74HCT244D and MAX232N, with the 74F521PC, 74F573D and 74F138D among its other parts. Its parts include 27 ICs, 23 capacitors, 4 resistors, 4 connectors and 1 crystal. It belongs with the fPGA and programmable logic and retro computing and games boards and the FPGA and CPLD boards of this library.
Main components
774F245D
SOIC-20-300mil0℃~+70℃ 15mA 4.5V~5.5V 4ns@5V,50pF 64mA 74F Bidirectional Tri-State SOIC-20-300mil Buffers, Drivers, Receivers, Transceivers ROHSNXP SemiconductorsBuffers, Drivers, Receivers, Transceivers74HCT244D
SO-20-300mil-40℃~+125℃ 13ns@4.5V,50pF 160uA 2 4 4.5V~5.5V 6mA 6mA 74HCT Tri-State Unidirectional SOIC-20-300mil Buffers, Drivers, Receivers, Transceivers ROHSNexperiaBuffers, Drivers, Receivers, TransceiversMAX232N
PDIP-160℃~+70℃ 120Kbps 2 2 4.5V~5.5V Transceiver PDIP-16 RS232 ICs ROHSTexas InstrumentsRS232 ICs74F521PC
PDIP-200℃~+70℃ 10ns@5V,50pF 1mA 20mA 4.5V~5.5V 8 A=B Active Low Multi-device cascading PDIP-20 Digital Comparators ROHSonsemiDigital Comparators74F573D
SOIC-20-300milSOIC-20-300mil Specialty Logic ROHSPhilips SemiconsSpecialty Logic74F138D
SOIC-16SOIC-16 Signal Switches, Multiplexers, Decoders ROHSNXP SemiconductorsSignal Switches, Multiplexers, DecodersDS1813-5+
TO-92-3-40℃~+85℃@(Ta) 1 1.2V~5.5V 150ms 4.75V Active Low No Open Drain Voltage Monitor Yes TO-92-3 Supervisor and Reset ICs ROHSAnalog DevicesSupervisor And Reset ICs
README
README.mdZ280 S-100 CPU Card
A 16-bit Zilog Z280 CPU card for the IEEE-696 S-100 backplane. All the
glue logic lives in two Atmel ATF1508AS CPLDs, and the entire schematic +
PCB are Python-generated (gen_kicad.py, gen_pcb.py).
Key characteristics
| CPU | Zilog Z280, 16-bit, Z-BUS @ 12 MHz |
| Bus | IEEE-696 S-100, 100-pin edge connector |
| Glue logic | 2× Atmel ATF1508AS (128 macrocells each) |
| RAM | 2 MB SRAM — 4× IS61C5128AS-25 (512K×8, 25 ns), word-addressed as 1M×16 |
| Boot ROM | 64 KB EEPROM — 2× AT28C256 (32K×8) |
| Console | RS-232 via MAX232, 2×5 IDC header (J7) |
| Data-bus drive | 74F245 — meets the IEEE-696 24 mA sink spec |
The board is a bus master by default: it drives address, status, control and data onto the backplane. The CPLDs split the work cleanly:
- Control CPLD (
U4,z280-s100-ctl.pld) — "the decider". Arbitration, the master-bridge state machine, local-memory control, and the pre-qualified steering terms (MST_RD/MST_WR/SLV_RD/SLV_WR,XFR16,SPLIT,SLAVE). - Data CPLD (
U5,z280-s100-ad.pld) — "everything that moves bits". The AD0-15 byte mux to the S-100 DO/DI lanes, the burst address counter, and the byte lane.
Address decode is external: a 74F138 (SRAM window) + two 74F521 comparators (flash window, slave window). The A3–A15 address lines are latched out through two 74F573s, and the 16-bit data bus runs through two 74F245 transceivers.
Memory map (24-bit address space)
| Range | Size | Decode | Device |
|---|---|---|---|
000000–1FFFFF | 2 MB | 74F138 (SRAM_WIN) / 74F521 (SLAVE_WIN) | SRAM — board + temporary-master access |
F00000–F0FFFF | 64 KB | 74F521, A23:A16 = F0 | Boot EEPROM |
The boot EEPROM pair is word-addressed (flash A_n = byte A_{n+1}), so the two
parts span 64 KB. They are not socket-interchangeable with 27C256s (pin 27 is
WE# here, not A14).
Local-memory DMA (temporary-master access)
Another S-100 master can take the bus and read/write this card's local SRAM directly — DMA-style, without the Z280:
- The temporary master (TMA) asserts HOLD; the control CPLD forwards the
request to the Z280 (
Z_BUSREQ) and waits forZ_BUSACK. - With
Z_BUSACKlow the board is a slave (SLAVE = !Z_BUSACK # SLAVE_ONLY): the address/status/control 74F245s reverse direction, the data 74F245s float (S100_DODSB), and the 74F573 address latches float their outputs. - The TMA reaches this card's RAM through the slave window — a
74F521 comparator (
SLAVE_WIN, hardwired to000000–1FFFFF) that maps the TMA's address space onto the local SRAM.
The SLAVE_ONLY strap (J11) forces this state permanently, turning the card into a plain memory-only card for bring-up and debug.
Burst mode
The Z280's memory burst mode (consecutive accesses without re-presenting the address) is handled in the data CPLD:
- a 2-bit burst address counter (A1/A2) increments during a burst;
- the byte lane (A0) is derived from the low-address bit and the 16→8 SPLIT flag, so byte and word cycles share one data path;
- 16-bit transfers are detected from WORD and the S-100 SIXTN
(16-bit-acknowledge) line:
SPLIT16 = WORD & !SIXTN.
SIXTN is open-collector (wired-OR) and pulled up via R4, like the ready lines.
Clock options
Two 24 MHz time-base footprints are laid out; populate exactly one:
- Y1 — parallel-resonant crystal (HC49) across
XTALI/XTALO, or - Y2 — a DIP-can oscillator (DIP-8 or DIP-14) driving
XTALI.
The Z280 auto-detects the source: a crystal enables the on-chip oscillator, while
an external clock into XTALI bypasses it (leave XTALO open). There is no
strap for this. Either way the CPU clock is half the XTAL1 frequency, so
24 MHz → 12 MHz processor clock.
Configuration jumpers
J10 — BTI register straps (3×8 header)
The Z280 samples AD0-7 on the rising edge of reset to load its Bus Timing & Initialization (BTI) register — the wait-state field, clock divider, bootstrap and multiprocessor bits. J10 is a 3×8 header, one row per bit: the centre pin selects +5V (logic 1) or GND (logic 0); a 74HCT244 (U21) drives the value onto AD0-7 for the whole reset window.
Default = 0b10001110 (AD7…AD0): direct clock, no bootstrap, no
multiprocessor, 3 wait states, bus clock = CPU clock.
J11 — SLAVE_ONLY
2-pin header. Open (default) = normal bus master. Jumper to +5V = permanent slave (memory-only card). R3 (1 kΩ) holds the line low when open.
SLAVE_WIN — temporary-master window
A 74F521 comparator hardwired to 000000–1FFFFF (the same 2 MB window as
SRAM) selects where a temporary master sees this card's SRAM. Not user-
configurable on this rev.
FLASH_WE — boot-ROM write protection
The 28C256 WE# line is normally driven by the control CPLD (in-system EEPROM
programming). Strap it to +5V to hard-write-protect the boot ROM.
Repository layout
| Path | Purpose |
|---|---|
gen_kicad.py | Generates the schematic (.kicad_sch, .kicad_sym, NOTES.md) |
gen_pcb.py | Generates the board (.kicad_pcb) — components, nets, power planes |
sync_pcb.py | Reads hand-tweaked PCB placement back into gen_pcb.py |
z280-s100-ctl.pld | Control CPLD (U4) logic — arbitration, FSM, memory control |
z280-s100-ad.pld | Data CPLD (U5) logic — byte mux, burst counter, byte lane |
z280-s100-*.jed | Compiled CPLD fuse maps (fit with WinCUPL + ProChip, flashed over JTAG) |
CPLDs are flashed over the JTAG header (TDI/TMS/TCK/TDO on pins 14/23/62/71).
License
CERN Open Hardware Licence Version 2 - Permissive (CERN-OHL-P-2.0). Fork, modify and build it freely — just don't claim you designed it: keep the attribution.
Parts
61| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | 0.1uF | CAP-2 | C6, C7, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +2 |
| 8 | 74F245 | Package_DIP:DIP-20_W7.62mm | U15, U16, U17, U18, U19, U20, U25, U26 |
| 5 | 0.1uF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C1, C2, C3, C4, C5 |
| 2 | 74F521 | Package_DIP:DIP-20_W7.62mm | U23, U24 |
| 2 | 74F573 | Package_DIP:DIP-20_W7.62mm | U2, U3 |
| 1 | PATCH | ||
| 1 | 1k SIXTN | HDR-2 | R4 |
| 1 | 1k SLAVE_ONLY | HDR-2 | R3 |
| 1 | 1k XRDY | HDR-2 | R2 |
| 1 | 1k pRDY | HDR-2 | R1 |
| 1 | 24 MHz crystal | HDR-2 | Y1 |
| 1 | 28C256 even | Package_DIP:DIP-28_W15.24mm | U10 |
| 1 | 28C256 odd | Package_DIP:DIP-28_W15.24mm | U11 |
| 1 | 74F138 | Package_DIP:DIP-16_W7.62mm | U22 |
| 1 | 74HCT244 | Package_DIP:DIP-20_W7.62mm | U21 |
| 1 | 7805 | HDR-3 | U12 |
| 1 | ATF1508 control | Package_LCC:PLCC-84_THT-Socket | U4 |
| 1 | ATF1508 data | Package_LCC:PLCC-84_THT-Socket | U5 |
| 1 | Config | HDR-3x8 | J10 |
| 1 | DS1813 | HDR-3 | U13 |
| 1 | JTAG | HDR-6 | J9 |
| 1 | LM323K | Package_TO_SOT_THT:TO-3 | U27 |
| 1 | MAX232 | Package_DIP:DIP-16_W7.62mm | U14 |
| 1 | SLAVE_ONLY | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J11 |
| 1 | SRAM0 even | Package_DIP:DIP-32_W15.24mm | U6 |
| 1 | SRAM0 odd | Package_DIP:DIP-32_W15.24mm | U7 |
| 1 | SRAM1 even | Package_DIP:DIP-32_W15.24mm | U8 |
| 1 | SRAM1 odd | Package_DIP:DIP-32_W15.24mm | U9 |
| 1 | Serial (2x5) | Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical | J7 |
| 1 | Z280 (ZBUS) | Package_LCC:PLCC-68_THT-Socket | U1 |
| 1 | Z280 16 Bit Master | S100_MALE | V 0.1 curt@zen-room.org |
Similar boards
- 6 layers304.8 × 243.8 mm

- 4 layers184.9 × 243.8 mm

Project NuXT
monotech/NuXT
MicroATX Turbo XT Motherboard, with VGA, Floppy, CF, Serial
223 parts121GPL-3.0 - 2 layers152.4 × 101.6 mm

8088-FE2010A SBC
skiselev/micro_8088
Micro 8088 - IBM XT Compatible Processor Board based on Faraday FE2010 chipset
72 parts412GPL-3.0 - 2 layers110.1 × 101.6 mm

Nano8088
monotech/Nano8088
Smaller SMD version of Sergey Kiselev's Micro 8088 SBC, with XT-CF added
78 parts17GPL-3.0 - 2 layers209 × 175 mm

Excalibur64
Cptscorcher/Excallibur-64
A reimagining of the seminal Excalibur 64 Computer
126 partsGPL-3.0 - 2 layers416.8 × 346.1 mm

- 4 layers113 × 69 mm

VideoMacPac
apmcpherson/VideoMacPacHack
Clone of the Video Mac Pac PDS video card for the Macintosh Portable
30 parts27 - 2 layers150 × 150 mm

Questions
How big is the Z280-S100 PCB?
It measures 254 × 134.6 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Z280-S100 use?
61 parts, built around the 74F245D, 74HCT244D, MAX232N and 74F521PC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Z280-S100 KiCad files?
From the cm68/Z280-S100 repository on GitHub, at the commit this page was made from: the board is z280-s100.kicad_pcb and its schematic z280-s100.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Z280-S100 design in my own project?
Its repository publishes it under the CERN-OHL-P-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).