ATmega324 acts as a GPU for homebrew computer

[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.

Comments

  1. willrandship says:

    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?

  2. ino says:

    Sorry, but this is not a GPU, this is a graphic card.
    No graphic acceleration here
    (see wikipedia for the difference)

  3. buzzles says:

    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.

    • Jmicz says:

      I agree completely. I hope to replicate some of these amazing projects one day, when I have proper funding.

      • kaluce says:

        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.

      • Quinn Dunki says:

        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.

  4. Alex Rossie says:

    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.

    • Galane says:

      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.

  5. cgimark says:
  6. ob3sus says:

    This girl is too good for me but I would marry her in a heart beat just to watch her hack.

    • kaluce says:

      I have a total nerd crush on her, and I’d love to just observe her to learn some of the stuff she knows.

  7. Agent420 says:

    Impressive project.

    And though I am generally an AVR dude, when it comes to generating video the Propeller chip takes the cake.

  8. fgil82 says:

    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

  9. Quinn Dunki says:

    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)

  10. 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!

  11. Malikaii says:

    Impressive is an understatement.

  12. Phyllostachys says:

    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

Speak Your Mind

*

Related Hacks in video hacks

  • Automatic airplane tracking; what radar-systems engineers do for kicks
  • Watch a shop tour through the screen of an oscilloscope
  • RCA Capacitive Electronic Disk
  • MIT Students take Tetris to a grand scale
  • Stop Motion Animation Creation