just want to share some photos from a little project I've been working on. I've been learning VHDL, and for my first "proper" project I decided to synthesize the Apple 1 display circuit. However, rather than just design something that functionally behaves more-or-less the same, I instead opted to synthesize the core TTL and logic chips that Wozniak used and then wire them together exactly as shown in the Apple 1 manual's schematic. The result is something that functionally behaves very similar to the original hardware:
The device I used for this was a FleaFPGA Uno with a MachXO2 chip...way overkill for a project like this, I could have used a $10 Cyclone or something and still only used a few percent of the chip.
The floor-plan and synthesis report show that it uses around 115 4x2-bit slices, although some of this is used by a UART->PIA adapter so that I can pipe data to it from my laptop via a serial port.
Shift registers are all implemented internally via distributed RAM blocks...a delicious irony, given that the whole reason Wozniak used them in the first place was to avoid the expense of RAM! A look at the RTL shows a layout that is, topologically at least, similar to the original circuit schematic:
The only parts of the circuit that can't be synthesized on an FPGA are the analog components:
1) the main 14.31818MHz oscillator circuit, I implemented this with the regular system clock and a PLL+divider.
2) the 555 timer circuit used for the cursor flash, I used a divider driven by the VBL to get a clock at the same frequency.
3) the active DAC used to generate the composite NTSC signal, I used a passive network (2 resistors).
4) the cross-talk interference between the theta-3 clock signal and the sync output.
The last one was just an experiment, given that it's not actually supposed to be part of the design. Still, when I allow some of that signal through to the DAC I do get that characteristic pattern when the brightness is turned up:
Overall this has been a fun and educational project, in addition to the VHDL and tool-chain experience I also learned a truck load about how this particular circuit works. Wozniak's genius is clearly evident in many parts of his design, to say I'm blown away by what he achieved...especially given the resources he had available at the time...is an understatement. By recreating the Apple 1 display circuit in VHDL I've been able to study each part of it in detail using simulation and synthesis tools that he probably could have only dreamed of back when he was building this circuit for real:
I'll be making this publicly available of course for anyone that wants to have a play, I'll post back here once I've pushed everything to GitHub.