[Quinn Dunki’s] homebrew computer project is moving up another evolutionary rung. She needs a more versatile user interface and this starts with the data output. Up to this point a set of 7-segment digits has served as a way to display register values. But her current work is aimed at adding VGA output to the system.
She starts off her write up by justifying the protocol choice. Although composite video would be easier to get up and running (we see it in a lot of AVR projects) [Quinn] doesn’t have a screen that will display composite video. But there’s also a lot of info out there about VGA signal generation. She delved into the specifics and even found a great AVR-based example over at Lucid Science.
The version seen above uses the 40-pin ATmega324. It’s a lot bigger than necessary for the example she put together, but in the future she plans to add video memory and will be glad to have all of those extra I/O pins. When it comes to video sync, timing is everything. She wrote the code to drive the display using assembly. In this way, she was able to look up the cycles used for each command to ensure that the loop is running with near perfect timing.
That’s awesome. Am I the only person who thinks we need a way of having a standardized open video card software system for linux?
That would be awesome, too bad nobody really thought of making special hardware for Linux!
Sorry, but this is not a GPU, this is a graphic card.
No graphic acceleration here
(see wikipedia for the difference)
ino is correct.
However.
It’s still bloody impressive. I’ve been keeping something of an eye on Quinn Dunki’s progress on this as it’s stuff I’m interested in, and quite frankly, I’m flabbergasted at the work she’s put in and the progress made.
Far beyond what I’m currently capable of. Far beyond.
I agree completely. I hope to replicate some of these amazing projects one day, when I have proper funding.
actually, the parts are pretty cheap all things considering. I’d bet if you had a stockpile of broken or old electronics, you’d have quite a significant amount of them.
Totally. Price is always a concern for me, so I probably spend $20 at the most on any one project. I could spend less by scavenging more parts, as well.
I was going to say what ino said.
VGA graphics adapters are very easily implemented in very modest FPGAs that’s what I’d have gone with.
FPGA based clone of the TMS 9918A VDP. http://codehackcreate.com/archives/30 Drop in replacement for the TI-99/4A, Colecovision, MSX1 and anything else using the 9918A, 9928A, 9929A Video Display Processor.
The 18A is the NTSC composite output version, 28A is PAL composite (never used in the 99/4A) and the 29A is the PAL version with component video output. I don’t know if there was an NTSC version with component video out.
PAL or NTSC, composite or component matters not for the F18A because it supports none of them. It outputs VGA, the composite/component output pins are not connected to anything.
Nothing at all needs to be altered on the F18A to use it in any application that originally used a stock TI VDP.
I dunno if the developer has yet implemented any of the advanced features such as a true bitmap mode, higher resolutions/colors or eliminating the max of 4 sprites on a line where higher numbered sprites on the same line will turn invisible. First and foremost his goal was to make it 100% compatible with all pre-existing software.
sorry clicked report instead of rpely by accident again HaD,
Then it would be a true GPU.
This is a VDC not a GPU.
http://en.wikipedia.org/wiki/Video_Display_Controller
This girl is too good for me but I would marry her in a heart beat just to watch her hack.
I have a total nerd crush on her, and I’d love to just observe her to learn some of the stuff she knows.
Impressive project.
And though I am generally an AVR dude, when it comes to generating video the Propeller chip takes the cake.
Propellers seems so cool, such an interesting architecture.
Hey guys, Marcelo from GarageLab community is also trying to generate VGA signals with ATMEGA, but he is trying with ATMEGA328 on an Arduino board. Check out some cool results: http://garagelab.com/forum/topics/vga-signals
Let’s see… before addition of this chip, pixel output was 0%. After installation, it is 100%. By my calculations, that’s an improvement of….carry the two….. infinity! I would say that’s quite a bit of acceleration, therefore GPU.
Thanks for the post HaD, thanks for the kind words everyone, and holy cow, lighten up folks. This is supposed to be fun. :o)
Oops, my “snark” tags got dropped. The first paragraph is in jest- put down the flamethrowers.
Guys,
I could generate VGA color signal from my Arduino. Please take a look at http://garagelab.com/profiles/blogs/arduino-generated-vga-color-signal
Maybe my post can help someone. 🙂
Best wishes!
Impressive is an understatement.
As others have said, I think I’d use a FPGA… Actually we did in my advanced digital design class and it was actually pretty simple…
For the final project we made a super simple maze game with a Meatboy-esque sprite and some modest wall and floor sprites. All of it was in monochrome as our Spartan 3E didn’t have enough RAM blocks to fit the a multicolored screen bigger than say 10 x 10 pixels…
I made a copy of it in C using SDL. http://dl.dropbox.com/u/51487082/Maze%20Game.zip
Done!
I solved all the problems and now we can generate color VGA signal from an Arduino UNO 640×480 @ 60Hz. (entire screen).
http://garagelab.com/profiles/blogs/arduino-generated-vga-color-signal-complete