Hi All,
I've had my Gigatron for about a year, bought initially to jumpstart my learning about TTL computers.
In just 34 basic TTL chips - here was a machine that could compete with commercial machines based on microprocesors, such as the 6502 or Z80, yet had a much simpler and more easily understood architecture.
I was intrigued how a practical computing machine could be designed in fewer than 1000 logic gates.
It is of special interest because it's fetch and execute are combined in a single clock cycle - the simplest form of pipelining, and a neat trick to gain performance from the simplest hardware, and allow it to outperform most of the late 1970's microprocessors.
I purposefully built up the pcb entirely with IC sockets, so that modifications and updates could be easily done.
The clock crystal was also socketed, and so I quickly experimented with higher frequency crystals - 8MHz and 10MHz - above the stock 6.25MHz which was selected for VGA video timing requirements. Without changing any other component, the standard build using 74HCT series logic would clock and execute code at 10MHz.
Over some time, I managed to obtain a 10nS RAM, a 74Fxx series set of ICs and a 45nS ROM. With the original 100nS ROM in place and the 74F set of ICs, I found that the machine would run on an 11.0592MHz crystal - but not on a 12.00MHz crystal.
I assumed that the design was limited by the ROM access time - but this was not the case.
Yesterday I received the 45nS ROM - programmed for me by the Gigatron creator Marcel van Kervinck. When this was plugged in - I could still not achieve operation above 11.0592MHz.
The Gigatron uses diode-resistor logic in its instruction decoder. The low to high time of this diode network is constrained by the value of the pull-up resistors. By reducing the pull-ups from 2K2 to 600 ohm, I was able to get the machine to run on a 12MHz crystal.
In this overclocking experiment - the next base was 200%. Would it run on a 12.5MHz crystal? The problem is that 12.5MHz crystals are not very common - and my parts bin lacked a 74HCT74 flip-flop that I could use to divide down the 25MHz crystal that I had at hand.
I decided to improvise, and remembered the newly purchased Nucleo 743 board that has a
400MHz ARM Cortex M7 on board. Surely this could be used to create a 12.5MHz clock? A quick hack with the Arduino IDE - I soon had a pin toggling at just a little above 12.5MHz.
With a quick modification to the Gigatron clock circuit, I applied the 12.5MHz clock and the machine sprang to life - executing its familiar Blinkenlights routine. A couple of scope measurements confirmed that the VGA horizontal sync was now running at 62.5kHz and the pixel time was 80nS - confirming that the machine was executing its main loop and generating video - at twice speed!
The Gigatron was designed to generate VGA compatible colour video from a minimum of standard 74HCT logic, SRAM and ROM. It does this with fewer than 40 ICs. However the task of generating video is cpu cycle intensive - and so the cpu has very little time left for actual application processing - be it TinyBASIC or whatever.
If the machine were to be freed from the arduous task of video generation - possibly using some other hardware such as a Raspberry Pi or BBC Micro - then it would be quite a fast TTL cpu - of sub-100nS instruction time.
The Gigatron is laid out on a 6" x 9" 2-layer pcb - very similar to the original Apple 1. The TTL devices are standard DIP packages with 0.1" pitch. This type of arrangement suits DIY construction, but the generous IC spacing, long bus lengths and lack of complete power and ground planes does not lead to a high performance design, and EMC emissions are mostly unsuppressed.
Reducing the package size to SOIC SMT devices would allow a shrinking of the pcb to about 6" x 4" - or even smaller if packages were placed on both sides of the pcb. The inspiration for this type of construction is the remarkable C74-6502 project which puts a TTL 6502 on two pcbs and runs at up to 20MHz:
https://c74project.com/The Gigatron has been a fascinating insight into what can be achieved in TTL. Unshackled from video generation, it would be a very capable processor.