Page 1 of 3

10MHz, 12.5MHz and Beyond!

Posted: 18 May 2018, 11:49
by monsonite
Hi All,

I received my Gigatron a few weeks ago, and after a successful build - apart for 1 bad soldered joint, which later failed, having a working TTL computer with colour graphics was a rewarding end to an evening of soldering.

I decided to experiment with different crystals, and an 8MHz was fitted - which remarkably produced a video image that my monitor could still synchronise to.

I found a 10MHz crystal to hand and fitted this. The Gigatron continued to run the Blinkenlights on power-up, just using the set of 74HCTxx ICs supplied with the kit - alhough with H-sync now being produced at 50kHz, there was no longer any chance of my monitor synchronising to the video output.

I had chosen to fit sockets throughout the design, so that 74Fxx series of ICs could be fitted. These I sourced on ebay, from various small suppliers, for about £0.50 each in small volume. I also bought some 10nS SRAM, some 45nS OTP ROM, and some cheap adaptor pcbs - so that a SRAM with a SMT package could be fitted into the 28 pin DIL socket on the Gigatron.

The last of the ICs arrived yesterday, so I now have a Gigatron made almost entirely with 74F seies ICs, faster SRAM and the opportunity of faster ROM.

With this arrangement it might be possible to overclock to perhaps 16MHz or 20MHz.

I have offered Marcel a set of 74F ICs - in exchange for programming my 45nS ROM with the V1 code.

I have sufficient IC sets for about 3 more fast ALU, SRAM and ROM. - If anyone is interested in experimenting with faster hardware - please get in touch.



Re: 10MHz and Beyond!

Posted: 19 May 2018, 18:43
by Cwiiis
Neat! So at 8Mhz, do you get a corresponding increased refresh rate of ~76Hz?

Re: 10MHz and Beyond!

Posted: 08 Mar 2019, 20:30
by monsonite
Hi All,

After a year of inactivity - I have caught the Gigatron bug again.

In May 2018 I was able to tweak the clock frequency up to 10.00MHz and still have the Blinkenlights run - just 160% of their normal speed.

Tonight, I have reduced the value of C1 and C2 in the crystal oscillator circuit from 47pF to 22pF, and removed C3 - so that now I can run the oscillator with higher frequency crystals and still achieve a clean clock signal.

I'm a bit limited with the choice of crystals I have at hand, but I can confirm that Blinkenlights still runs with an 11.0592MHz crystal, but it definitely does not run with a 12.00MHz crystal. :(

I think that I have reached the access time of the ROM - the cycle time is now 90.42nS (down from 160nS) and the poor old 100nS 27C1024-10 EPROM is struggling to get beyond that. 12MHz (83.33nS) is just too much for the old chap.

There is a solution to greater speed - and that is to replace the 100nS part with a 45nS part, and that might get me into the 20MHz region. If I am particularly lucky with an EPROM very conservatively rated at 45nS, I might even reach 25MHz - four times the standard clock frequency. This could open up some interesting possibilities of increased video resolution.

Whilst the standard Gigatron will run at 10.00MHz with the usual 74HCT devices, I have opted to replace most of the parts on the board with the faster 74F series. This includes the ICs used in the ALU, the PC, the MAU and the instruction and data registers and instruction decoder. The RAM has also been replaced with a 10nS part.

In order to widen the scope of this development, I have sent Marcel a set of "upgrade components" so that we can both see just how far the design can be pushed.

Above 20-25MHz it's anyone's guess. ST Microelectronics used to have the M27C1024 available with a 35nS access time which could get closer to 30MHz or so, but I guess that we will start to see the effects of board layout, track lengths and lack of adequate ground plane before we reach those lofty heights ... 3641ST.pdf

Replacing the EPROM with a 10nS 64Kx16 RAM could potentially achieve an even higher clock speed - but at the expense of power consumption. It would probably be necessary to redesign the board using smaller SMT ICs and reduce the track lengths.

In the meantime I shall be aiming for 25MHz with the faster EPROM.

Have a good weekend


Re: 10MHz and Beyond!

Posted: 11 Mar 2019, 10:32
by marcelk
The 74F series was introduced in 1978 or 1979. I would have committed a crime for getting my hands on a 25 MHz computer back in 1988.

At higher power and frequencies, we may need to control the emissions and crosstalk a bit better. There are three options that are independent from one another:
  1. Add solid inner ground and Vcc planes
  2. Do a more thorough job on the existing outside ground pours
  3. Go to a smaller PCB with SMD components
Option 1 is what Dave J. Jones (EEVblog) has done, while simultaneously removing the outside power and grounds
Option 2 just requires changing the fill settings in KiCad, plus some minor local rearrangements (see below).
Option 3 takes a lot of effort, depending on how fussy you are about the layout. The amazing C74-6502 has done this.

Ground pour settings.png
Ground pour settings.png (249.98 KiB) Viewed 5412 times

I've mixed feelings on how it looks. While it's cool, it also makes it look more like an Amiga instead of an Apple 1. Still I've ordered a couple of proto boards that combine option 1+2 and I'll send you one when they come in. I've reduced the "spoke width" on ground and power pins for this combo mod, for easier soldering. I will likely receive those boards after VCF PNW.

Re: 10MHz and Beyond!

Posted: 11 Apr 2019, 22:36
by gesari
I've made a few calculations and I found the Gigatron is already overclocked! Let's check it again:
In the Gigatron we got two blocks running in parallel:

Fetch Unit: PC plus EPROM pus IR registers. The minimun clock period is going to be:
Tmin = delay_PC + delay_EPROM + setup_time_IR = 15ns + 70ns + 15ns = 100ns
So the fetch unit cant run at 10MHz without overclocking.

Execution Unit: Decoder, RAM, ALU, Registers... Here the worst case is not so easy to find. Lets assume it is for a RAM operand:
Tmin = delay_IR + delay_decoder + delay_MAU + delay_RAM + delay_ALU + setup_time_reg = 15ns + 64ns + 13ns + 70ns + 45ns + 15ns = 220ns
delay_decoder = 2*delay_138 + delay_ROM_diodes + delay_32 = 2*14ns + 22ns + 14ns = 64ns
delay_ALU = delay_153 + 2*delay_adder_carry_in_out = 13ns + 2*16ns =45ns
So, the maximum clock frequency for the Execution unit is 1/220ns = 4.54MHz

Of course, I'm using the worst case delays from datasheets for the 74HCT parts. In practice everything is going to run faster and the proof is that the Gigatron already works at 6.25MHz (+37% overclocking).

Anyway, if these figures are more or less correct we can conclude that:
- Replacing the EPROM with a faster one achieves nothing. The problem is in the execution unit.
- Replacing the RAM with a 45ns part saves only 25ns from 220ns, rising the clock frequency only a mere 13%.

This suggest us to focus on the logic as the best way to increase speed. One possibility is to replace the 74HCT chips with 74LVC parts. These are much faster and some can even run with 5V (usually they run at 3.3V, check datasheets). The dark side of the LVC chips is they radiate EMI like crazy...

...Unless someone decides to add another pipeline stage (Fetch / Decode / Execute :) ...just kidding...

Re: 10MHz and Beyond!

Posted: 12 Apr 2019, 06:17
by marcelk
Indeed! Our own datasheet calculation came out at 190 ns for the execution unit. The user registers borrow a bit of time from the next cycle by using the shifted CLK2. With that, the breadboard prototype is stable at 160 ns cycle time. The kit edition has faster SRAM because of part availability, so it has some extra headroom.

Re: 10MHz and Beyond!

Posted: 12 Apr 2019, 19:42
by monsonite
Hi All,

I can report that I now have my modified Gigatron running at 12.00MHz. Previously it would not exceed 11.0592MHz.

Having replaced most of the logic with 74Fxx series, a 10nS RAM and a 45nS ROM, I found that the final push towards 12.00MHz was only achievable by reducing the value of the pull-up resistors in the diode decoding logic from 2K2 to 600 ohm.

If I can source a 12.5MHz crystal this week, or divide down a 25MHz oscillator to provide a 12.5MHz clock, then I might achieve a Gigatron that runs at twice the original clock frequency. This will make it easier to synchronise with the requirements of VGA, plus getting twice as much processing done during video blanking.

Have a good weekend,


Re: 10MHz and Beyond!

Posted: 13 Apr 2019, 10:27
by monsonite
Hi All,

Reaching 12.00MHz yesterday evening was an achievement, and so I was keen this morning to see if I can push the Gigatron even faster.

Not having a 12.5MHz crystal available, nor having a 74HCT74 to act as a divide by 2 for the 25MHz crystal I do have at hand, I decided to improvise.

I recently bought a development board for a 400MHz STM32H743 ARM microcontroller. This board can now be readily programmed using the Arduino IDE. My plan was to find out just how fast I could toggle a pin using the easy to use (but slow) digitalWrite function.

My hunch paid off, and the pin toggles at somewhere between 12.5MHz and 13.2MHz according to my oscilloscope. A far more stable clock could have been generated using one of the many timer channels, but for a first attempt just toggling the GPIO pin was good enough.

So with a working 12.5MHz clock, the Gigatron was powered up and launched into its familiar blinkenlights.

I measured the H-sync signal at 62.5kHz, and a single pixel captured from the resistor ladder confirmed that the pixel time was 80nS - as expected from the 12.5MHz clock.

It is miraculous that a machine made almost entirely from TTL logic can be persuaded to run at 200% of it's original intended clock frequency. It is also remarkable that the original pcb layout, with long bus lengths and incomplete groundplane even perform at this clock frequency. I am looking forwards to trying out the new 4-layer pcb - at least it will reduce the radio interference.

From a historical perspective, the 74F series of logic were introduced by Fairchild in 1978 and could have been used to manufacture commercial TTL processors with a clock frequency of around 10MHz - at a time when the commercial microprocessors ran at 1 or 2MHz. This would have given an order of magnitude speed improvement over microprocessors of that day.

Gigatron was designed primarily to produce a colour VGA compatible video output with minimum of hardware. This specialist task consumes the majority of the cpu cycles. If the cpu were relieved of this arduous task, for example by providing only a serial (UART) output - it would equally outperform many of it's 6502/Z80 retrocomputer rivals by a similar order of magnitude.

Having reached 12.5MHz - I think it's time to pause for contemplation before making a next move. 12.5MHz is probably the highest practical limit for the current architecture and implementation. Much faster logic is available - especially with the 74LVC series of gates, flip-flops and multiplexers - but these are generally single or double gates in tiny surface mount packages - and do not offer the wide range of functions available in the 74HCTxx series.

Re: 10MHz and Beyond!

Posted: 14 Apr 2019, 07:21
by marcelk
Congratulations :o . It shouldn't be too hard to make a custom ROM that sends out more pixels per line. If not from RAM, they could be black, giving only half a screen. Maybe even squeeze some vCPU time in there. I can look into this during the Easter weekend. This would bring back the horizontal pulse frequency into a range the monitor can accept.

Have you measured the current draw for this setup?

Re: 10MHz and Beyond!

Posted: 16 Apr 2019, 21:36
by jbailey
If you do get the time to make a modification it would be great if you made a user/program settable option. So you could decided upon more “user” code execution time vs VGA resolution as the application needs dictate.