Electrical engineering student Enrique Phan has completed his homebrew eight-bit computer computer project, PHANAND_ONE, building what he describes as the "ultimate" home-made eight-bit microcomputer using discrete logic components.
The launch of the Intel 4004 microprocessor was a revolution, replacing numerous discrete logic components with a single chip. There are those, however, who yearn for the days when each component in a CPU had its own place on a circuit board — and was visible to the human eye — and it's for those that homebrew discrete logic computer designs exist.
"I started working in April on a breadboard version (Ben Eater's version with some improvements) and then I really wanted to add some I/O, so I ended up starting my own design from scratch," Phan explains, referring to a popular eight-bit system designed by Ben Eater. "[Mine] is made only from discrete logic (74XX series), except from the ROM and RAM chips. I honestly lost the chip count, but way too many!"
Despite using discrete logic components almost exclusively, the PHANAND_ONE boasts some impressive specifications — for a device of its type, at least: It operates at a clock speed of up to 2MHz, has 32kB of RAM and a 32kB ROM, a built-in video controller capable of 64 colours and a 120x160 resolution at 60Hz refresh rate, a PS/2 keyboard interface, and an SPI interface tweaked to allow it to communicate with Sony PlayStation 2 game pads.
More eye-catching than these are the over 200 LEDs integrated into the system design, which are more than just bling: The LEDs update according to program flow, assisting debugging when running in instruction-by-instruction stepped mode or at deliberately-slowed clock speeds.
"Now that I have finished, I would lie if I said I wouldn't change some things, like making external CPU registers actually external," Phan writes, "but hey, I've learned a ton from it. It is currently running a little console I've been working on on the last few weeks. It is able to write strings on screen as well as reading the keyboard inputs through interrupts. Everything is done in my assembly language(so you can imagine the pain). For the moment it only has a few commands like 'print', 'peek' or 'poke' and a 'math' one is under work."