Hackaday 10th Anniversary: Non-Binary Computing

When [Thundersqueak] was looking for a project for The Hackaday Prize, she knew it needed to be a special project. IoT devices and microcontrollers are one thing, but it’s not really something that will set you of from the pack. No, her project needed to be exceptional, and she turned to logic and balanced ternary computing.

[Thundersqueak] was inspired to design her ternary computer from a few very interesting and nearly unknown historical computing devices. The first was the [Thomas Fowler] machine, designed all the way back in 1838. It could count to several thousand using a balanced ternary mechanical mechanism. The [Fowler] machine was used to calculate logs, and the usual boring mathematical tasks of the time.

A bit more research turned up the Setun, an electronic computer constructed out of vacuum tubes in 1958. This computer could count up to 387,000,000 with eighteen ternary digits. On the binary machine you’re using right now, representing that would take twenty-nine binary digits. It’s about a 2.5 times more efficient way of constructing a computer, and when you’re looking for the right vacuum tubes in 1950s USSR, that’s a great idea.

[Thundersqueak] isn’t dealing with vacuum tubes – she has a world of semiconductors at her fingertips. After constructing a few truth tables for ternary logic, she began designing circuits to satisfy the requirements of what this computer should do. The design uses split rails – a negative voltage, a positive voltage, and ground, with the first prototype power supply made from a 741 Op-amp. From there, it was just breadboarding stuff and checking her gates, transistors, and truth tables to begin creating her ternary computer.

With the basic building blocks of a ternary computer done, [Thundersqueak] then started to design a basic ALU. Starting with a half adder, the design then expanded to a full adder with ripple carry. We’re sure there are plans for multiplying, rotating, and everything else that would turn this project into a CPU.