VGATonic Goes Widescreen!

A project log for VGA Graphics Over SPI and Serial - VGATonic

640x480 (and 848x480!) Color VGA Video Card for Microcontrollers and Single Board Computers

PKPK 09/19/2015 at 20:320 Comments

Summary of the New Firmware

New Firmware Improvement over 4:3 VGATonic
Resolution 848x640 32.50%
Max SPI Speed 70.7 MHz 18.30%
Max FPS on Rpi 2 @ 8 Bpp 19.19 50.90%

Details of the New Firmware

Note I'm stress testing it in my Northern California un-air-conditioned sunroom - expect somehting to hit Github soon. For now, you can read about it.

I made some mentions in the project logs (and in the videos) of wanting to release a firmware version of VGATonic which could do 800x600 resolution - but while in the middle of writing some VHDL I realized - 4:3 monitors just aren't popular anymore! Every monitor (greater than 7") I've got here, in fact, has a 16:9 ratio.

So I did some Googling and I found something interesting - in 2003, VESA published a standard for 848x480 resolution at 60 Hz. Huh, today I learned - and yes your suspicion is correct - it's a bit of an outlier, since most new resolutions they have added have been larger than what was published.

It was my lucky day, too - I quickly coded up VHDL timings and realized that all 3 of my VGA screens will sync to it - it's just a "not very well known" resolution! (In fact, I think 720x480 or 864x486 was the most common early widescreen resolution due to NTSC DVDs - nowadays you're looking at 1280x720 or 720p being the most popular for TVs and entry level 16:9 monitors).

Being truly my lucky day, I did some math on the reduced blanking period possible in VESA's CVT standard, and we can do it with a 30 MHz pixel clock. We have one signal (memory write) which works at 4x our pixel clock with a 8ns hold time minimum, so we just squeeze by the spec - clocking in at 8.333 ns with this resolution.

That means I can officially support it in VGATonic instead of asking you to build it at your own risk due to the overclocking. All of the parts are still meeting their manufacturer specified timings - even with 32.5% more pixels!

The news gets better. Since the SPI speed supported on VGATonic is affected by the pixel clock, our roughly 5 MHz increase in pixel clock speed means VGATonic can now handle 70.7 MHz SPI (up from 59.8 MHz) - to be safe, call it 70 MHz. Either way, that means we've got headroom for that previously just-out-of-reach 62.5 MHz SPI on Raspberry Pi.


Here are the timings I'm using, so you can check your monitor would support it (Don't hook it up to most CRTs unless you are absolutely sure what you are doing, but most standard compliant widescreens manufactured after late 2003 should support it). Note that I'm using "Reduced Blanking" periods, which is why my CRT warnings are necessary.

Horizontal Frequency 29.76 kHz
Vertical Frequency 60.25 Hz
Pixel Clock 60 MHz
Aspect Ratio 16:9
Hsync Polarity +
Vsync Polarity -
Horizontal Blanking Length 5.33333 us
Horizontal Total Length 33.6 us
Horizontal Front Porch 1.6 us
Horizontal Sync 1.07 us
Vertical Blanking Length .47 ms
Vertical Total Length 16.598 ms
Vertical “Front Porch” 0 us
Vertical Sync 168 us