Collecting old CPUs and firing them up again is all the rage these days, but how do you know if they will work? For many of these ICs, which ceased production decades ago, sorting the good stuff from the defective and counterfeit is a minefield.
Testing old chips is a challenge in itself. Even if you can find the right motherboard, the slim chances of escaping the effect of time on the components (in particular, capacitor and EEPROM degradation) make a reliable test setup hard to come by.
Enter [Samuel], and the Universal Chip Analyzer (UCA). Using an FPGA to emulate the motherboard, it means the experience of testing an IC takes just a matter of seconds. Why an FPGA? Microcontrollers are simply too slow to get a full speed interface to the CPU, even one from the ’80s.
So, how does it actually test? Synthesized inside the FPGA is everything the CPU needs from the motherboard to make it tick, including ROM, RAM, bus controllers, clock generation and interrupt handling. Many testing frequencies are supported (which is helpful for spotting fakes), and if connected to a computer via USB, the UCA can check power consumption, and even benchmark the chip. We can’t begin to detail the amount of thought that’s gone into the design here, from auto-detecting data bus width to the sheer amount of models supported, but you can read more technical details here.
The Mojo v3 FPGA development board was chosen as the heart of the project, featuring an ATmega32U4 and Xilinx Spartan 6 FPGA. The wily among you will have already spotted a problem – the voltage levels used by early CPUs vary greatly (as high as 15V for an Intel 4004). [Samuel]’s ingenious solution to keep the cost down is a shield for each IC family – each with its own voltage converter.
It might look like a random pile of wires to some, but it is far from random: [Paulo Constantino] built this 8-bit CPU himself from scratch. He built his remarkable creation using wires and 74HC shift register chips, plus a selection of LEDs to show the various registers.
Running at a maximum of 5MHz, it has an 8-bit data and address bus, although the latter can be expanded to 16 bits. It’s not mining Bitcoin (yet), but it can do things like play the Mario theme. His latest addition is the addition of the ability to write data out to flash memory, and he is looking to add a keyboard to make programming easier.
At the moment, he has to program the CPU by setting DIP jumpers. It’s an impressive, if somewhat frightening build that [Paulo] says took him a couple of days to design and a week or so to build. We’ve seen a few breadboard CPU builds, (some of which were tidier) and builds with similar shift register chips, but this one scores big in the blinky light and mad genius stakes.
Why on earth would you want an oversized replica of an outdated logic chip from nearly five decades ago, we hear you ask? The answer lies in education. If you were to embark on learning about the internals of a microprocessor by taking a modern example such as the one that powers the device on which you are reading this, you would find it to be a daunting task. Over six decades of progress in computer technology have delivered the performance enhancements that put a supercomputer in your smartphone, but at the expense of a contemporary microprocessor being an extremely complex machine which you can’t peer into for any level of understanding.
The starting point for the student of microprocessor internals often lies in the past. The technology of the early 1970s holds the fundamentals from which a modern processor can be understood, but remains simple enough to grasp in its entirety as a beginner. Registers, instruction decoders, counters, and an arithmetic/logic unit, or ALU. And for decades the 74181, as an all-in-one 4-bit ALU on a chip that you might have found in a minicomputer at the turn of the 1970s, represented the most convenient way to teach the operation of these devices. Electronic engineers and computer scientists of all ages will have encountered them as they gained their qualifications.
The PCB version of the 181 faithfully follows the original, but with modern 74LVC gates laid out as they would be in the circuit diagram of the chip, and LEDs to show logic state at the different parts of the circuit. Thus when it is used to teach ALU operation it can show every part of the device in detail in a way a real 74181 would never have done.
There once was a time when microprocessors were relatively straightforward devices, capable of being understood more or less in their entirety by a single engineer without especially God-like skills. They had buses upon which hung peripherals, and for code to run on them, one of those peripherals had better supply it.
A modern high-end processor is a complex multicore marvel of technological achievement, so labyrinthine in fact that unlike those simple devices of old it may need to contain a dedicated extra core whose only job is to manage the rest of the onboard functions. Intel processors have had one for years, it’s called the Management Engine, or ME, and it has its own firmware baked into the chip. It is this firmware, that according to a discovery by [Ronald Minnich], contains a copy of the MINIX operating system.
If you are not the oldest of readers, it’s possible that you may not have heard of MINIX. Or if you have, it might be in connection with the gestation of [Linus Torvalds]’ first Linux kernel. It’s a UNIX-like operating system created in the 1980s as a teaching aid, and for a time it held a significant attraction as the closest you could get to real UNIX on some of the affordable 16-bit desktop and home computers. Amiga owners paid for copies of it on floppy disks, it was even something of an object of desire. It’s still in active development, but it’s fair to say its attraction lies in its simplicity rather than its sophistication.
It’s thus a worry to find it on the Intel ME, because in that position it lies at the most privileged level of access to your computer’s hardware. Your desktop operating system, by contrast, sees the hardware through several layers of abstraction in the name of security, so a simple OS with full networking and full hardware access represents a significant opportunity to anyone with an eye to compromising it. Placing tinfoil hats firmly on your heads as the unmistakable thwop of black helicopters eases into the soundscape you might claim that this is exactly what they want anyway. We would hope that if they wanted to compromise our PCs with a backdoor they’d do it in such a way as to make it a little less easy for The Other Lot. We suspect it’s far more likely that this is a case of the firmware being considered to be an out-of-sight piece of the hardware that nobody would concern themselves with, rather than a potential attack vector that everyone should. It would be nice to think that we’ll see some abrupt updates, but we suspect that won’t happen.
Modern digital computers have complex instruction sets that runs on state-of-the-art ALUs which in turn are a consequence of miniaturized logic gates that are built with tiny transistors. These tiny transistors are essentially switches. You could imagine replacing with electromagnetic relays, and get what is called a relay computer. If you can imagine it, someone’s done it. In this case, [jhallenworld].
The Z3 was the first working programmable, fully automatic digital computer designed by Konrad Zuse. The board employs modern semiconductor devices such as memory and microcontrollers, however, the CPU is all relays. A hexadecimal keyboard allows for program entry and a segment display allows tracking the address and data. The program is piped into serial to the parallel decoder and fed to the CPU where the magic happens. Since the core is electromechanical it is possible to connect the output to peripherals such as a bell as demonstrated near the end of the video.
This project is a good balance of retro and modern to be useful to anyone interested in mechanical computers and should be a lot of fun for the geek kind. Hacking this computer to modify the instruction set should be equally rewarding and a good exercise for students of computing theory.
Hardly a week goes by that we don’t post a project where at least one commenter will lament that the hacker could have just used a 555. [Peter Monta] clearly gets that point of view. For a 555 design contest, he created both digital logic gates and an op amp, all using 555 chips. We can’t quite imagine the post apocalyptic world where the only surviving electronic components are 555 chips, but if that day were to come, [Peter] is your guy.
Using the internal structure of the 555, [Peter] formed a basic logic gate, an inverter, latches, and more. He also composed things like counters and seven-segment decoders. He had a very simple 4-bit CPU design in Verilog that he was going to attempt until he realized it would map into almost 400 chips (half of that if you’d use a dual 555, but still). If you built this successfully, we would probably post it, by the way. You can see a video of the digital logic counter, below.
There was a time when owning a computer meant you probably knew most or all of the instructions it could execute. Your modern PC, though, has a lot of instructions, many of them meant for specialized operating system, encryption, or digital signal processing features.
There are known undocumented instructions in a lot of x86-class CPUs, too. What’s more, these days your x86 CPU might really be a virtual machine running on a different processor, or your CPU could have a defect or a bug. Maybe you want to run sandsifter–a program that searches for erroneous or undocumented instructions. Who knows what is lurking in your CPU?