Today's update is one of those "it's really coming together" type updates.
Since you're reading text and you'll probably scroll down anyway, let me blow the surprise: it's VGA and NTSC test patterns. On a 64 macrocell CPLD. From a single, 3.5795454 MHz clock source.
Here's what you'll need to build it:
My code, conveniently located on the Git Repository for VGAtonic and MIT'd for your consumption: https://github.com/dqydj/VGAtonic/tree/master/ColorTest
- 3.5795454 MHz crystal (or a way to get it - 14.318 divided by 4 works)
- A switch (decide on NTSC or VGA mode)
- CPLD/FPGA - note that it needs to allow dual edged flip flops - or you'll have to update the logic to handle 2x the clock. The Coolrunner II XC2C64A in the video allows this.
- An NE564 PLL
- 5V Power source, 3.3V regulator, and possibly a way to step down the 5V clock from the PLL (I ignored it, but you shouldn't - it'll likely eventually break the CPLD).
- A bunch of passives to build the resistor ladders and PLL support:
- 18 pf Capacitor (I'm using a bunch of 10s and 12s in parallel/series to get close in my image)
- 2x .0047uF Capacitor
- 22k ohm Resistor
- 47 pF Capacitor
- 3x 510 ohm Resistor
- 24x 510 ohm Resistor (I use them in parallel to get 255 ohm in my ladder)
- Generic VGA Connector
- 12x 510 ohm Resistor (Again, in parallel to get 255 ohms as well)
- 1k ohm Resistor
- 1.5k ohm Resistor
- Generic RCA plug
And the NTSC/VGA resistor ladder DAC detail:
I've got it on a beast of a breadboard - one of those 4 column deals. Here's what it looks like:
- Separate your grounds with homeruns back to the power supply, if you can. It was easy on my breadboard.
- Use a buffer or a resistor voltage divider or something to knock that clock down to a safe level for your CPLD.
- Add decap to the PLL and the CPLD - you've got long wires and the disgusting parasitics of a breadboard.
Hope someone finds this useful!
I'm sufficiently confident now that VGAtonic is realistic - I'll be designing the PCB next, and I'll throw together the framebuffer code at the same time.