

Backplane
Homebrew TTL ISA-compatible PDP-9 clone
- Size
- 200 × 321.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 137
- Nets
- 343
- Pads
- 1,664
- Tracks, vias
- 7,382, 175
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 18 Apr 2025
- Updated
- 6 Oct 2026
Overview
Backplane is an open-source printed circuit board by tergav17, from the tergav17/RDP-9 repository on GitHub. It is a 2-layer board of 200 × 321.3 mm with 137 parts on 343 nets, routed with 7,382 tracks and 175 vias.
It is built around the 74LS245SC, 74LS377PC and 74LS32SC, with the 74LS74PC, 74LS04PC and 74LS139PC among its other parts. Its parts include 54 resistors, 26 capacitors, 25 ICs, 23 connectors and 1 crystal.
Main components
874LS245SC
-0℃~+70℃ 12ns@5V,45pF 15mA 24mA 4.75V~5.25V 74LS 8 Bidirectional Output enable Schmitt trigger Tri-State - Buffers, Drivers, Receivers, Transceivers ROHSTexas InstrumentsBuffers, Drivers, Receivers, Transceivers74LS377PC
PDIP-200℃~+70℃ 1 10ns 25ns@5V,15pF 28mA 30MHz 4.75V~5.25V 400uA 5ns 74LS Series 8 8mA D-Type Rising Edge Synchronous PDIP-20 Flip Flops ROHSTexas InstrumentsFlip Flops74LS32SC
-- Logic Gates ROHSTexas InstrumentsLogic Gates74LS74PC
DIP-140ns 0℃~+70℃ 1 2 20MHz 3.5pF 35ns@5V,50pF 4.5ns 4.75V~5.25V 400uA 74LS Series 8mA 8mA Asynchronous Complementary D-Type Rising Edge Set and Reset DIP-14 Flip FlopsTexas InstrumentsFlip Flops74LS04PC
PDIP-140℃~+70℃ 4.75V~5.25V 6 6.6mA 74LS PDIP-14 InvertersonsemiInverters74LS139PC
PDIP-1622ns 74LS 8mA Decoder Single Supply PDIP-16 Signal Switches, Multiplexers, DecodersonsemiSignal Switches, Multiplexers, Decoders74LS148P-E
DIP-16-20℃~+75℃ 10mA 15ns@5V,15pF 4.75V~5.25V 400uA 74LS 8mA Decoder DIP-16 Signal Switches, Multiplexers, Decoders ROHSRenesas ElectronicsSignal Switches, Multiplexers, Decoders74LS253DC
CDIP-160℃~+70℃ 35ns 35ns 35ns 4.75V~5.25V 4:1 CDIP-16 Analog Switches, Multiplexers ROHSTexas InstrumentsAnalog Switches, Multiplexers
README
README.mdRDP-9
Project Description
This project aims to build an ISA-compatible clone of the DEC PDP-9 system using primarily technology from the late 1970s - early 1980s period. I did this to ensure my design followed the same constraints that later genuine minicomputer systems were built with, while being able to significantly reduce the size and complexity compared to an actual PDP-9. The specifics are as follows
- Use only 74-series logic and other similar TTL logic level parts that would be available around the later 1970s timeframe. The exception to this is RAM, which I plan to use more “modern” SRAM chips instead of torturing myself with dynamic RAM.
- No FPGAs, PALs, GALs, microcontrollers, etc in the main processor path. The only exception to this is using standard 27C style ROM chips to hold the microcode.
- Usage of a period correct microcontroller or microprocessor for the disk / drum subsystem. Using another simpler processor to control complex devices like disks was done frequently on other minicomputer designs, so I’ll be doing it here too.
My end goal is to build a system that is capable of running most of the interesting software of the period. This includes DECsys, ADSS, DOS-15, and UNIX V0. To do this, the system will need:
- Full compatibility with the PDP-9 instruction set. This includes EAE instructions and extended memory
- The ability to hook up to a real or emulated paper tape punch / reader.
- The ability to hook up to a real or emulated ASR-33 teletype or similar serial terminal
- 8" floppy drive interface in place of DECtape. Software will require patching but it's better than trying to emulate DECtape
- IDE hard drive support using RB09/RF09 interface
Theory of Operation
Due to the complexity involved with the architecture of the DEC PDP-9, the system is split into two subsystems:
The first subsystem is the processor itself. It has a full 18-bit datapath with 15-bit address bus, and is implemented entirely using TTL logic.
The second subsystem is the I/O bus. This is directly controlled by the processor itself and is capable of servicing the following operations:
- Device interrupts
- IOT transactions
- Add-to-memory operations
- Data channel transfers
- DMA transfers
- READ-IN operation
Device Interrupts
Device interrupts simply tell the processor to begin an interrupt operation. When an interrupt is accepted, the I/O bus will be notified of the action and is responsible for turning off the "Program Interrupt" flag. If this does not happen, interrupts will continuously loop.
Steps:
-
Interrupt is accepted. MA is completely zeroed and the "INTERRUPT_DETECT" pulse is asserted for this clock cycle.
-
PC is stored in MB, OB
-
The logical OR of MB and OB is place in CORE at MA. The crossbar will add the LINK and MEMM flags
-
MA + 1 is placed in the PC. Extend is enabled to ensure that bank 0 is selected. The next fetch will ignore device requests
IOT Transactions
IOT transactions allow data to be transferred to or from the accumulator. IOTs also allow for skips to be requested. Every IOT is treated by the CPU as a Read-Modify-Write operation. By using the "EXTRN" signal, devices can notify the processor to read from the I/O bus instead of the writeback register. When the I/O bus is being sampled, the "IOT_SKIP" signal can be asserted to tell the processor to perform an addition increment of the program counter.
A wait signal is sampled at the beginning of the IOT as well. This can be used to add cycles to the writeback phase of the IOT if the device needs it.
Steps:
-
IOT transaction begins. Device address is placed on the I/O address bus. AC (or 0 if the flag is set) is written to the WRTBK register.
-
Signal "IOT_PULSE" is asserted.
-
Signal "IOT_PULSE" remains asserted. External input is sampled into MB. Signal "EXTRN" must be asserted to take value from device bus.
-
IF "IOT_WAIT" is asserted, goto step 3 in place. No IOT signals are asserted. Interally, the CPU is performing the logical OR and writeback of potential provided data.
-
No IOT signals are asserted. Internally, the CPU will perform the skip here if it has been requested. The next fetch cycle will ignore interrupts and device requests.
Device Requests
The final three transaction types (Add-to-memory, data-channels, and DMA transfers all share the "device request" pathway.
Steps:
-
Signal "REQ_ADDR_PHASE" and "DEV_REQ_GRANT" asserted and held. External value written to MA.
-
If DMA is selected, core is read at MA and written to WRTBK with next as step 8. Otherwise core is read at MA and written to MB, OB. "REQ_ADDR_PHASE" held
-
Value in MB, OB incremented and written back to core at MA and OB. "REQ_ADDR_PHASE" held
-
Value in MA incremented. If add to memory selected, Jump to fetch without device request logic. "INCREMENT_ZERO_PUSLE" will be generated if needed. "REQ_ADDR_PHASE" held
-
Core is read at MA and written to MB, OB.
-
Value in MB, OB incremented and written back to core at MA and MA
-
Core is read at MA and written to WRTBK
-
External value written to core at MA. "DEV_REQ_GRANT" reset. Jump to fetch without device request logic
READ-IN Operation
The read-in is used to transfer a set series of words into memory from one of the I/O devices. Only one I/O device can be be allowed to respond to READ-IN at any one time. When a READ-IN transaction is active, the CPU will stall until the designated device signals that it is ready. The device will either signal the CPU to commence another READ-IN cycle, or to terminate the READ-IN after any given transfer.
Steps:
-
SWR is moved into PC
-
"READ_IN_PULSE" is asserted, step will loop till either "IOT_WAIT" or "IOT_SKIP" are asserted.
-
"READ_IN_PULSE" remains asserted. EXTRN is moved into core at PC. Continue having the constant value asserted.
-
"READ_IN_PULSE" reset. If "IOT_SKIP" is asserted, jump to CONT logic. Otherwise move PC + 1 into PC
-
Null phase, "READ_IN_PULSE" remains reset.
-
Null phase, "READ_IN_PULSE" remains reset. Jump to step 2 on completion
Parts
137| Qty | Value | Footprint | References |
|---|---|---|---|
| 53 | 4.7K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R2, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23 +37 |
| 25 | 0.1uF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C1, C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +9 |
| 9 | 74LS244 | Package_DIP:DIP-20_W7.62mm | U1, U2, U13, U14, U15, U17, U18, U19, U24 |
| 8 | MountingHole | MountingHole:MountingHole_2.2mm_M2_Pad | H1, H2, H3, H4, H5, H6, H7, H8 |
| 6 | I/O Connector | Connector_DIN:DIN41612_B_2x32_Female_Vertical_THT | J9, J10, J11, J12, J13, J14 |
| 4 | 74LS377 | Package_DIP:DIP-20_W7.62mm | U10, U11, U12, U20 |
| 4 | Control Connector | Connector_DIN:DIN41612_B_2x32_Female_Vertical_THT | J1, J3, J5, J7 |
| 4 | Data Connector | Connector_DIN:DIN41612_B_2x32_Female_Vertical_THT | J2, J4, J6, J8 |
| 3 | 74LS245 | Package_DIP:DIP-20_W7.62mm | U7, U8, U9 |
| 2 | 74LS32 | Package_DIP:DIP-14_W7.62mm | U5, U25 |
| 2 | 74LS74 | Package_DIP:DIP-14_W7.62mm | U3, U4 |
| 2 | Front Panel Connector | Connector_IDC:IDC-Header_2x25_P2.54mm_Vertical | J15, J16 |
| 1 | 100 uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C26 |
| 1 | 330R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R54 |
| 1 | 4 Mhz Oscillator | Oscillator:Oscillator_DIP-14 | X1 |
| 1 | 74LS04 | Package_DIP:DIP-14_W7.62mm | U16 |
| 1 | 74LS08 | Package_DIP:DIP-14_W7.62mm | U6 |
| 1 | 74LS139 | Package_DIP:DIP-16_W7.62mm | U23 |
| 1 | 74LS148 | Package_DIP:DIP-16_W7.62mm | U21 |
| 1 | 74LS253 | Package_DIP:DIP-16_W7.62mm | U22 |
| 1 | Clock | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J18 |
| 1 | I/O Reset | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J21 |
| 1 | Power | Connector_TE-Connectivity:TE_MATE-N-LOK_350211-1_1x04_P5.08mm_Vertical | J22 |
| 1 | Power LED | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J23 |
| 1 | Rept | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J19 |
| 1 | Reset | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J20 |
| 1 | Run | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J17 |
More from tergav17/RDP-9
7- 2 layers204.5 × 107.3 mm

- 2 layers235 × 137.5 mm

- 2 layers170.2 × 107.3 mm

- 2 layers206.4 × 137.5 mm

- 2 layers206.4 × 137.5 mm

- 2 layers206.4 × 137.5 mm

- 2 layers206.4 × 137.5 mm

Similar boards
- 2 layers364 × 203 mm

- 4 layers236.8 × 240.9 mm

DIY Video
jimbro1000/DIY-Video
General purpose video system for 8-bit computers using 74LS logic
315 parts1 - 2 layers236.8 × 169.8 mm

TK2000
clemarfolly/Microdigital-TK2000
Reprodução da PCB do TK-2000 da Microdigital, clone do Micro-Professor MPF-II
212 parts17 - 2 layers400.9 × 280.5 mm

- 2 layers295 × 195 mm

- 4 layers340 × 210 mm

- 2 layers100 × 100 mm

- 2 layers

Vortex f1-d clone
hanshuebner/cpc-floppy-controllers
MOVED to code.netzhansa.com/hanshuebner/cpc-floppy-controllers. This GitHub mirror is archived.
60 parts7
Questions
How big is the Backplane PCB?
It measures 200 × 321.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Backplane use?
137 parts, built around the 74LS245SC, 74LS377PC, 74LS32SC and 74LS74PC. 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 Backplane KiCad files?
From the tergav17/RDP-9 repository on GitHub, at the commit this page was made from: the board is kicad/Backplane/Backplane.kicad_pcb and its schematic kicad/ALU/ALU.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Backplane design in my own project?
Its repository states no licence, so its author keeps all rights: ask tergav17 before reusing the design.