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.

23 thoughts on “ATmega324 acts as a GPU for homebrew computer

  1. 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. Sorry, but this is not a GPU, this is a graphic card.
    No graphic acceleration here
    (see wikipedia for the difference)

    1. Really? you know GPU stands for Graphic Processing Unit.
      Some GPUs can act as graphic accelerators, well most of them.

      It would be really funny to see computer with graphic accelerator only.(for instance you’ll be able to see only stuff implied by accelerator like water simulation, or only data from famous nVidia phisX)

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

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

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

    1. 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. Impressive project.

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

  6. 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)

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s