

Cft ctl
The CFT homebrew minicomputer
- Size
- 622.7 × 375.7 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 215
- Nets
- 339
- Pads
- 1,257
- Tracks, vias
- 4,027, 1,318
- Pours
- 7
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 15 Aug 2019
- Updated
- 5 Mar 2022
Overview
Cft ctl is an open-source printed circuit board by alexiosc, from the alexiosc/cft repository on GitHub, published under the GPL-3.0 licence. It is a 4-layer board of 622.7 × 375.7 mm with 215 parts on 339 nets, routed with 4,027 tracks and 1,318 vias.
It is built around the 74HC541D, 74LVC1G17Z and 74HC574D, with the 74LVC1G74GT, 74HC138 and 74HC251D among its other parts. Its parts include 66 capacitors, 63 resistors, 56 ICs, 7 diodes and 2 connectors.
Main components
1274HC541D
SO-20-300mil-40℃~+125℃ 1 12ns@4.5V,50pF 160uA 2V~6V 7.8mA 7.8mA 74HC 8 Output enable Tri-State Unidirectional SO-20-300mil Buffers, Drivers, Receivers, Transceivers ROHSNexperiaBuffers, Drivers, Receivers, Transceivers74LVC1G17Z
SOT-553-40℃~+125℃ 1 1 1.65V~5.5V 10uA 32mA 32mA 4.4ns@5V,15pF 74LVC Push-pull Schmitt trigger Unidirectional SOT-553 Buffers, Drivers, Receivers, Transceivers ROHSDiodes IncorporatedBuffers, Drivers, Receivers, Transceivers74HC574D
SOP-20L-40℃~+125℃ 1 13ns 15ns@6V,50pF 2.7V~6V 20uA 28MHz 5ns 6.5pF 7.8mA 7.8mA 74HC Series 8 D-Type Enable Rising Edge Tri-State SOP-20L Flip Flops ROHSMDDFlip Flops74LVC1G74GT
XSON-8(1x2)-40℃~+125℃ 1 1 1.1ns 1.65V~5.5V 1ns 200MHz 32mA 32mA 4.1ns@5V,50pF 40uA 4pF 74LVC Series Asynchronous Complementary type D-Type Rising Edge Set and Reset XSON-8(1x2) Flip Flops ROHSNexperiaFlip Flops74HC138
SOP-160℃~+70℃ 24ns@5.0V,16pF 2V~6V 3/8 5.2mA 5.2mA 5uA 74HC Decoder Reverse function Single Supply SOP-16 Signal Switches, Multiplexers, Decoders ROHSGRSignal Switches, Multiplexers, Decoders74HC251D
SOIC-16-40℃~+125℃ 14ns@6.0V,50pF 160uA 2V~6V 5.2mA 5.2mA 74HC 8/2 Multiplexer Output enable high-impedance、Tri-state output Single Supply SOIC-16 Signal Switches, Multiplexers, Decoders ROHSNexperiaSignal Switches, Multiplexers, Decoders74LVC1G32Z
SOT-553-5-40℃~+125℃ 1 1.65V~5.5V 1.7V~2V 1.7ns@5V,50pF 32mA 32mA 74LVC Series OR Gate SOT-553-5 Logic Gates ROHSDiodes IncorporatedLogic Gates74LVC1G373DCK
SC-70-6-40℃~+125℃ 1 1.65V~5.5V 10uA 24mA 24mA 4ns 74LVC D Latch Tri-State SC-70-6 Latches ROHSTexas InstrumentsLatches74HC139D
SO-16-40℃~+125℃ 11ns@6.0V,50pF 160uA 2/4 2V~6V 74HC Decoder Single Supply SOIC-16 Signal Switches, Multiplexers, Decoders ROHSNexperiaSignal Switches / Encoders & Decoders / Multiplexers74LVC1G08Z
SOT-553-5-40℃~+125℃ 1 1.65V~5.5V 1.7V、2V 2 2.4V、3.8V 32mA 32mA 4ns@5V,50pF 550mV、800mV 700mV、800mV 74LVC Series AND Gate SOT-553-5 Logic Gates ROHSDiodes IncorporatedLogic Gates74LVC1G11GW
SC-88-40℃~+125℃ 1 1.2V~1.54V、1.9V~2.15V、2.2V~2.5V、2.3V~2.62V、3.8V~4.11V 1.65V~5.5V 1.7V~2V 3 3.5ns@5V,50pF 300mV~450mV、450mV~700mV、550mV~800mV 32mA 32mA 4uA 74LVC Series AND Gate SC-88 Logic Gates ROHSNexperiaLogic Gates74AC08PC
DIP-14-40℃~+85℃ 100mV、360mV、440mV 2 2.1V~3.85V 2.56V、2.9V、3.86V、4.4V、4.86V、5.4V 24mA 24mA 2V~6V 2uA 4 7.5ns@5V,50pF 74AC Series 900mV~1.65V AND Gate DIP-14 Logic Gates ROHSonsemiLogic Gates
README
README.md
The CFT Home-Brew 16-bit Mini-Computer
The CFT is a home-designed, home-built mini-computer made from scratch.
I've designed and built the instruction set, data path, processor, computer, software stack, cross-assembler, emulator, software toolchain and even some of the tools needed to do all this. You can call this a ‘fantasy mini’.
This project has been going since approximately 2001, in my Copious Free Time.
Audience
There isn't one, so I couldn't tell you what it's like. This project has been online since 2005 and it's been noticed by four or five people. Not quite enough for statistics.
This is a personal project, and the repository is made public as a curiosity. Expect everything to be wrong, broken, or dangerous.
Why?
Because it's fun.
To see how it's done.
To recall Those Heady Times.
To prove to myself I can do this.
What?
The CFT is a long-term project built in my Copious Free Time. (a term used, as always, sarcastically, hence the name) It's a homebrew, self-designed, self-built Sixties-style 16-bit mini computer built out of 74-family integrated circuits. Check out the ChangeLog for the current status.
There may possibly be more stuff to look at, at https://www.bedroomlan.org/cft.
The project consists of:
- The CFT processor.
- Peripherals and cards, some implementing extensions to the CFT instruction set.
- A front panel with blinkenlights.
- A case for the lot.
- Documentation for everything, including the website and this.
- A cross-toolchain for working on the computer from a PC.
The CFT Processor
- A 4 MHz clock. (250ns processor cycle)
- 16-bit word length. No byte access.
- 24-bit memory address bus.
- 16-bit I/O bus shared with the address bus. (the lower 1,024 addresses are easier to use)
- All instructions are exactly one 16-bit word long.
- Some instructions follow the PDP-8 ‘microcoded’ format with bitfields cotrolling combinations of actions. Bitwise negation, two's complement negation and incrementation are the same instruction with slightly different options.
- A relatively simple instruction set inspired by the PDP-8. This has moved on to something slightly more reminiscent of a modern processor.
- Microcoded design.
- Accumulator based architecture.
- Four user-accessible 16-bit registers with increment and decrement. Only the Accumulator (AC) is general purpose.
- PDP-8 style magic addresses working like auto-increment or auto-decrement index registers, or stack pointers.
Peripherals
I originally sat down with Eagle CAD and went crazy with it. I had 50 sheets of schematics for boards, all with a three-letter designator:
- MEM: A memory board with 512 KWords of RAM and 512 KWords of ROM.
- TTY: A quadruple serial board including both DCE and DTE connections, and a TTL one for an FTDI USB adaptor.
- INT: 8-interrupt controller board.
- IDE: Twin IDE bus interface for up to four drives.
- RTC: A real-time card with some NVRAM and three or six programmable timers.
- ETH: An offloaded Ethernet interface using the WIZ812 chip.
- KBD: A PS/2 Keyboard interface in pure discrete logic.
- PSG: A sound board with one or two AY-3-8910 chips and a SpeakJet® speech synthesiser.
- PFP: A Programmer's Front Panel capable of debugging microcode as well as full machine code.
- DEB: A DEBugging card to help diagnose problems with the hardware using a remote controller. (this was basically a simple, slow, specialised logic analyser)
- FDC: A Floppy Drive Controller for up to four drives, including 8-inch 50-pin ones.
- GIO: General Purpose I/O board including some digital I/O, two Atari-style digital joystick ports, a unidirectional parallel printer port, four user-controllable LEDs on the front panel (the PFP already had 16) and (on a whim) a cassette tape interface.
- MBU: processor extension to allow 21-bit memory addressing (up to 2 MWords).
- µCB: processor extension to allow multiple versions of microcode to co-exist. (I had spare space in the Microcode ROMs)
- VDU: a graphics card that does text at 80×25 and 40×25, and graphics at combinations of 160, 320, 640 columns and 100, 200, 400 rows with 64 colours.
The currently planned peripherals are much more modest in scope, but they also morphed quite a bit. The processor can now do 24-bit addressing natively, the current microcode uses all of the available ROM space and a bunch of cards have joined forces. The current state of affairs looks like this:
- MEM: (tentative design) 512 kWords or 1 MWord of RAM, 512 KWords of ROM. Multiple cards can be installed. If density allows, there'll be more chip sockets for RAM.
- INT: 8 interrupt controller board.
- DFP: a big card containing both a remote debugging system and front panel drivers.
- TTY: serial port card, possibly colocated with…
- IDE: one or two IDE sockets for two or four IDE drives. (or CF cards, but I like the possibility of having some clunky old drive)
- SND: MIDI sound output. Possibly collocated with…
- VDU: a graphics card that does text at 80×30 and 40×30, and graphics at combinations of 160, 320, 640 columns and 120, 240, 480 rows using 64 colours. The new VDU card fits inside a CPLD and also includes a PS/2 interface.
- RTC: Real-time clock, timers.
I've built the MEM and DFP boards to pre-2019 specs and the computer was working on them.
The 2019 redesign goes for proper PCBs for everything, so things are taking a little extra time.
Front Panel
I was really proud of the front panel before the 2019 redesign, it worked great and showed the computer's entire status. There's support for up to 160 lights, 31 switches and two keylocks for that PDP-8 feel.
The downside was the wiring: there were no fewer than five 50-wire ribbon cables going to this crazy bastard.
The 2019 redesign keeps the layout, but can no longer display as much of the computer's status on the front panel. I'm working on it. On the upside, it now serialises data transmission and only a single 40-pin cable is needed.
To cut costs, the original front panel was made out of eight modules, each with up to 20 LEDs. The new front panel is made out of four modules, each with up to 40 LEDs. Each module daisy-chains to the next.
Switches are mounted on a separate plate and wired to a break-out board, or the closest front panel modules on the 2019 version.
The Case
Two words: wood paneling. Well, and a black acrylic front piece. The rest will depend on how big the card cage gets, but I'll scratch make the case out of sheet aluminium and wood.
Documentation
There's just too much of it. The documentation was initially in LaTeX and got up to 500 pages before I gave that up and started converting it to HTML.
The 2019 redesign will need a redo of most of this, sadly, but the current documents for hardware that's currently around are available at https://www.bedroomlan.org/hardware/cft/book/.
Software and Hardware Tools
I had to make my own tools for some of this, and wanted to make my own for some other parts.
Hardware tools include Flashprog, a zero-parts flash programmer with a modern serial interface. The interface formed the basis of the DEB and DFP cards' remote debugging interface and I'm quite happy with it.
Software tools include:
- The Microcode Assembler, also available on Github as https://github.com/alexiosc/mcasm.
- The CFT Assembler, written purely in Python and roughly based on PDP-8 Assemblers, but with some modern extras like namespaces and simple macros.
- Too many emulators to speak of!
- A basic microcode-level emulator in Python to verify the original design. This one is dead and buried, but still in the repository.
- A Verilog emulator used to verify the hardware.
- A C emulator that's fast enough to run software on.
- A Javascript microcode-level emulator that runs on the web. It's very slow, but it shows how the front panel works.
- A newer JS-based emulator meant to me much faster. Still largely in the works, because I prefer the C-based emulator for testing.
- A testing framework that can run test suites on any emulator we can use.
- A basic Operating System for the CFT.
- A self-documenting Forth interpreter written in Assembly and Forth.
Parts
215| Qty | Value | Footprint | References |
|---|---|---|---|
| 57 | 100nF | alexios:C_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C1, C2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23 +41 |
| 30 | 4.7kΩ | alexios:R_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R1, R2, R3, R10, R11, R12, R13, R15, R16, R17, R23, R24, R25, R26, R27, R28 +14 |
| 24 | 0Ω/30Ω | alexios:R_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R41, R42, R43, R44, R45 +8 |
| 10 | 74HC541 | alexios:DIP-20_W7.62mm_Socket | U11, U14, U16, U17, U18, U19, U21, U27, U31, U32 |
| 8 | 30Ω | alexios:R_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R14, R18, R19, R20, R21, R22, R29, R53 |
| 7 | CUS520 | alexios:SOD-323 | D2, D3, D4, D5, D6, D7, D8 |
| 6 | 74HC574 | alexios:DIP-20_W7.62mm_Socket | U12, U20, U33, U58, U59, U60 |
| 5 | 74LVC1G74 | alexios:TSSOP-8_3x3mm_P0.65mm | U8, U13, U22, U29, U41 |
| 5 | TestPoint | TestPoint:TestPoint_Pad_1.0x1.0mm | TP1, TP2, TP3, TP4, TP5 |
| 4 | 10µF | alexios:C_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C24, C49, C51, C53 |
| 4 | 47µF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C56, C57, C59, C60 |
| 3 | 74HC138 | Package_DIP:DIP-16_W7.62mm_Socket | U15, U28, U30 |
| 3 | 74HC251 | Package_DIP:DIP-16_W7.62mm_Socket | U1, U5, U43 |
| 3 | 74LVC1G32 | alexios:SOT-23-5_HandSoldering | U9, U39, U51 |
| 3 | 74LVC1G373 | alexios:SOT-23-6_Handsoldering | U46, U50, U56 |
| 3 | AT27C020 | alexios:PLCC32 | U52, U53, U54 |
| 2 | 74HC139 | Package_DIP:DIP-16_W7.62mm_Socket | U10, U36 |
| 2 | 74LVC1G08 | alexios:SOT-23-5_HandSoldering | U25, U42 |
| 2 | 74LVC1G11 | alexios:SOT-23-6_Handsoldering | U23, U24 |
| 2 | SolderJumper_3_Bridged23 | Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm | JP4, JP6 |
| 1 | 0Ω | alexios:R_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | R56 |
| 1 | 16 MHz | alexios:Crystal_SMD_7050-4Pin_7.0x5.0mm | X1 |
| 1 | 47µF | alexios:C_SMD_0805_2012Metric_Pad1.15x1.40mm_HandSolder | C28 |
| 1 | 74AC08 | Package_DIP:DIP-12_W7.62mm_Socket | U2 |
| 1 | 74AC157 | Package_DIP:DIP-16_W7.62mm_Socket | U7 |
| 1 | 74AC161 | Package_DIP:DIP-16_W7.62mm_Socket | U44 |
| 1 | 74AC191 | Package_DIP:DIP-16_W7.62mm_Socket | U37 |
| 1 | 74AC32 | Package_DIP:DIP-12_W7.62mm_Socket | U3 |
| 1 | 74HC590 | Package_DIP:DIP-16_W7.62mm_Socket | U34 |
| 1 | 74HC85 | Package_DIP:DIP-16_W7.62mm_Socket | U45 |
| 1 | 74LVC1G00 | alexios:SOT-23-5_HandSoldering | U26 |
| 1 | 74LVC1G04 | alexios:SOT-23-5_HandSoldering | U40 |
| 1 | 74LVC1G0832 | alexios:SOT-23-6_Handsoldering | U6 |
| 1 | 74LVC1G17 | alexios:SOT-23-5_HandSoldering | U35 |
| 1 | 74LVC1G86 | alexios:SOT-23-5_HandSoldering | U4 |
| 1 | 74LVC2G157 | alexios:TSSOP-8_3x3mm_P0.65mm | U38 |
| 1 | CFT-2019-Bus | alexios:CFT-2019-Card-Edge | P1 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Horizontal | J1 |
| 1 | Jumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP1 |
| 1 | LOGO | alexios:CFT | G*** |
| 1 | SN74ACT1071 | Package_DIP:DIP-12_W7.62mm_Socket | U47 |
| 1 | SolderJumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm | JP5 |
| 1 | tactile_switch | Button_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx39-2LFS | SW1 |
The 206 most common of 215 parts.
Questions
How big is the Cft ctl PCB?
It measures 622.7 × 375.7 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Cft ctl use?
215 parts, built around the 74HC541D, 74LVC1G17Z, 74HC574D and 74LVC1G74GT. 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 Cft ctl KiCad files?
From the alexiosc/cft repository on GitHub, at the commit this page was made from: the board is kicad/cft/cft-ctl/cft-ctl.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Cft ctl design in my own project?
Its repository publishes it under the GPL-3.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).
More from alexiosc/cft
12- 2 layers233.4 × 280 mm

- 2 layers417.2 × 143.4 mm

- 2 layers233.4 × 280 mm

- 2 layers233.4 × 280 mm

- 2 layers233.4 × 280 mm

- 4 layers131.9 × 164.6 mm

- 2 layers280 × 164.6 mm

- 2 layers101.6 × 138.4 mm

- 2 layers131.9 × 164.6 mm

- 2 layers99.7 × 143.4 mm

- 2 layers280 × 164.6 mm

- 2 layers131.9 × 164.6 mm

Similar boards
- 2 layers160 × 100 mm

- 2 layers88.9 × 88.9 mm

- 2 layers

VideoBoard
Cptscorcher/Excallibur-64
A reimagining of the seminal Excalibur 64 Computer
126 partsGPL-3.0 - 2 layers

BreadBin
c0pperdragon/BreadBin
A CPU made of 7400 logic on breadboards - inside a bread bin ;-)
45 parts18 - 4 layers88.9 × 50.8 mm

- 2 layers70 × 99 mm

- 2 layers101.6 × 83.8 mm

Z80DevBoard
dbuchwald/Z80DevBoard
Simple Z80 based prototyping and development board designed as extension to Arduino Mega 2560
39 parts3MIT - 6 layers45 × 15 mm
