Discrete Transistor Computer Is Not Discreet

Every few years, we hear about someone building a computer from first principles. This doesn’t mean getting a 6502 or Z80, wiring it up, and running BASIC. I’m talking about builds from the ground up, starting with logic chips or even just transistors.

[James Newman]’s 16-bit CPU built from transistors is something he’s been working on for a little under a year now, and it’s shaping up to be one of the most impressive computer builds since the days of Cray and Control Data Corporation.

The 10,000 foot view of this computer is a machine with a 16-bit data bus, a 16-bit address bus, all built out of individual circuit boards containing single OR, AND, XOR gates, decoders, multiplexers, and registers.  These modules are laid out on 2×1.5 meter frames, each of them containing a schematic of the computer printed out with a plotter. The individual circuit modules sit right on top of this schematic, and if you have enough time on your hands, you can trace out every signal in this computer.

The architecture of the computer is more or less the same as any 16-bit processor. Three are four general purpose registers, a 16 bit program counter, a stack pointer, and a status register. [James] already has an assembler and simulator, and the instruction set is more or less what you would expect from a basic microprocessor, although this thing does have division and multiplication instructions.

The first three ‘frames’ of this computer, containing the general purpose registers, the state and status registers, and the ALU, are already complete. Those circuits are mounted on towering frames made of aluminum extrusion. [James] already has 32 bytes of memory wired up, with each individual bit having its own LED. This RAM display will be used for the Game of Life simulation once everything is working.

While this build may seem utterly impractical, it’s not too different from a few notable and historical computers. The fastest computer in the world from 1964 to ’69 was built from individual transistors, and had even wider busses and more registers. The CDC6600 was capable of running at around 10MHz, many times faster than the estimated maximum speed of [James]’ computer – 25kHz. Still, building a computer on this scale is an amazing accomplishment, and something we can’t wait to see running the Game of Life.

Thanks [aleksclark], [Michael], and [wulfman] for sending this in.

50 thoughts on “Discrete Transistor Computer Is Not Discreet

  1. That’s both painful and awesome at the same time. The construction is clean and tidy.

    I cannot understand the need to tie my hands behind my back when it comes to implementing things when much better i.e. faster/cheaper/higher density/lower power/programmable parts are available.

    1. Art, appreciation of the way things work, a nearly silicon level of understanding of how the circuit works. All of those would be reasons to avoid the faster/cheaper/programmable/etc parts.

    2. Sometimes the point is the destination. Sometimes it’s the journey. People who build model ships aren’t doing it just because they can’t afford a pre-built model.

    3. I guess I am just not into art then. I do appreciate the workmanship of this built.

      As for understanding internal working – I build discrete logic gate out of transistor for my high school physic class ages ago.

        1. I think if I were to build this, I would go with a minimal count of transistors…to see how close I could get to a “real cpu” with just a handful of transistors. This would mean using a tiny ALU, and then double pumping or even quadruple…perhaps even a 1 bit serialized ALU. If you up the clock frequency and have good board design/multiple buses & speeds, you can get some decent speed out of it. This would make the user experience transparent to the circuitry inside so one can just address it as 6/24 bit. Another little innovation I would do, is to use the ICL mainframe style architecture. 24 bit words and 6 bit characters. You get 25% less circuitry to store the same data, just with fewer letters. I would also vastly reduce the instruction set tailored to run fortran/forth. If possible, I would try to get away with a 4 bit instruction set for 15 commands, but possibly 5 bits. This means a tiny decoder for the CPU instruction set. I would also use ferrite beads for bootstrap memory / executive instructions.

          My fantasy data mass storage device is one that uses 3×5 flash cards as punched card data storage. 40 columns per card, one instruction line per card, unless denoted with a card continuation control character(in which case you could get longer program lines up to 78 characters. This would have to be controlled via RS232, because I would definitely like to connect it to my laptop. The rest is largely electro-mechanical, naturally.

          In the end, you would be able to type FORTRAN II programs onto the cards, run them through the machine as jobs, and then get the output on an impact printer. In addition the executive OS would be handled via a pocket terminal device(like Vince Briel’s). Executive would offer vector program options like jump to process punched card jobs, list program, switch output to cards instead of impact printer etc.

          It’s a pipe dream really…

  2. “…with each individual bit having its own LED”

    Am I the only one now thinking of that tv show Tek-War? In the show some of the prop computers had small banks of leds on the left and right sides of the screen lighting up randomly (I think).

    Hmm, now I have to see if I can find any information on those props….

  3. I was literally thinking about doing the same thing last night, it seems like a nice meditation and education. I think it’s really neat that people can just make stuff like this from scratch. I wish I had the attention span, knowledge, and determination to work on such projects.

    1. Might be easier, if you want easier, to use logic gates, and even more complex ICs, things like counters, flip-flops, etc. It’d still be pretty complicated, and you’d learn just about as much. You wouldn’t learn the basic discrete electronics as well, but you’d certainly get all of the computing.

      If you want easier than that, lots of computers were made, back in the day, from AMD’s 2900 series of bit-slice computer chips. They’d use 36 in parallel for a 36-bit computer, or you could design parts of the computer to work serially, where each bit would be fed through the same 2900-series chip in turn. Serial would be cheaper, needing many less parts, but also much more complex, and of course slower. Perhaps more reliable though, less parts to go wrong. I might stick with 8 or 4 bits for a simple machine. Or even 6. You can always add data bits later, should just be a matter of duplicating the stuff all the other bits use.

      I also would consider it OK to use RAM chips and EPROM, even using EPROM to help decode microcode, or with sequencing.

      Above that, you could just do it in a design language and stick it in an FPGA. A bit cheating, but if you’re designing the CPU from scratch you’ve still got a lot to learn in doing it.

      OR you could go even less high-tech, and build the thing from relays! Or mechanical rods, with a great big wheel to turn to drive it all, and a power intake for a steam engine. Measure your CPU power in instructions per horsepower, or lines of code per ton of coal!

      You might also want to look up the KENBAK-1, everybody should, just because it’s amazing. A home-made fully-functioning computer designed by one man, who went on to sell some of them. Came in quite a small case. I/O was LEDs and switches, but it was quite sophisticated for a hobbyist in 1971. http://www.kenbak-1.net/ , was featured on HAD a while ago, very interesting.

  4. Totally awesome. Impressed with everything, the quality of work, the planning, and the perseverance. I’m too ADHD for a project of this scale!

    When I was in the USAF, I worked on a TI aircraft computer that was all discrete logic and transistors. It had 16 data and 2 parity bits, and used 64k of core memory (in 4 memory cards plus 4 memory driver cards). The thing weighed some 50 pounds, and the aircraft used a built-in winch system to install it. And you loaded it with a punch tape reader!

  5. Kids these days. I dunno. Always taking the easy way out. Why use transistors when he could be using .. Oh wait.

    Seriously, this is an amazing build. What better way of getting a fundamental understanding of what happens in the computers we take for granted. There would be a hugely meditative component to this that I’d love to experience.

    1. Ya, 60 amps assuming 3000 transistors. That is less than a 6502 by itself. Probably by the time he is done he will need 4 separate circuits to power it… a 2N2222 transistor is around 600 mA, the LEDs are around 20 mA. The decoder is going to be HUGE.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.