Making a VGA Driver in SystemVerilog
17 points by lukasmwerner
17 points by lukasmwerner
Love it! Do you have the source for the verilog? I may have missed it in the article.
Many years ago I did something similar, but with a monochrome MDA monitor. I had it set up where you could stream farbfeld images over UART and it would dither them on the fly.
Thanks for sharing, it's inspiring me to pull out the old monitor and tinker with it some more!
I wish I could share the source, unfortunately that runs the risk of letting students cheat on their labs. This post was the furthest I could describe the process without giving exact answers.
That's a super cool project! Now I wanna try to do dithering in hardware.
Here is one I wrote in HardCaml: https://github.com/edwintorok/roundingerror/blob/main/src/generator/vga.ml#L157,L346
I liked writing test cases using waveforms, nice way to debug!
I didn't have to write a simulator, there was one provided by the TinyTapeout Demoscene competition. More details here: https://tinytapeout.com/chips/tt08/tt_um_edwintorok
I actually ran out of time to test on an actual FPGA board with an actual monitor, so had to with simulation only, but it all worked the first time when the demo scene judges tried it, and later when I got the actual ASIC it worked too.
The graphics are amazing for visualizing how the signal works. Love it. You're making me want to get an FPGA.
Really cool - is it possible to emulate copper/raster bars effect? https://en.wikipedia.org/wiki/Raster_bar
What's the resolution of that picture of Asterix? It looks a lot higher than what VGA can do.