Alert icon
We're changing our privacy policy. This stuff matters.  Learn more  Dismiss

Home-made computer based on FPGA & ARM

Loading...

Sign in or sign up now!
Alert icon
Upgrade to the latest Flash Player for improved playback performance. Upgrade now or more info.
7,328
Loading...
Alert icon
Sign in or sign up now!
Alert icon

Uploaded by on Mar 5, 2011

HOME-MADE COMPUTER BASED ON A FPGA AND AN ARM9
A Capon1990's & MrLambdaUser's Project


--- FPGA (Hardware part) ---

MAIN FEATURES
- Based on an FPGA Altera Cyclone II with 68'000 LUTs (Terasic DE2-70 Kit)
- Is used as HARDWARE ACCELERATOR
- No IP were used - only "Home made" VHDL blocks

SPECIFICATIONS
- FPGA : Altera Cyclone II 68k LE
- MEMORY : 64MB SDRAM (32bit) @ 125MHz / SDCARD (using FAT32 file system)
- VIDEO : Multi VGA Output @ max. 1280x1024@60Hz 15bit color depth
- AUDIO : Audio Codec @ 88.2kHz 24bit (1 stereo output)
- ETHERNET : 1x 100Mbit/s
- MISC I/O : 2x PS2 (Keyboard/Mouse)

SOME MEASURED PERFORMANCES
- SDRAM controller : 500MB/s
- Graphics processing unit : up to 160Mpixels/s


--- ARM (Software part) ---

MAIN FREATURES
- Based on an ARM AT91RM9200 @ 180MHz (HES-SO Kit)
- EBI Interface @ 25MB/s used for the communication with the FPGA
- All 'Home made' code, EXCEPTING the Box2D physics library (see www.box2d.org)

SOFTWARE
- Boot system using .HEX file in the SDCARD (FPGA)
- FPGA Drivers, FAT32
- Graphical User Interface
- Some applications (Game, Demonstrations, Audio player, Picture viewer)


--- CREDITS ---
FPGA Implementation : capons1990, MrLambdaUser
ARM Programming : capons1990
Graphics, sound and music : MrLambdaUser
Special thanks to : HES-SO, EMVs

(Presentation made with Blender, see www.blender.org)

  • likes, 0 dislikes

Link to this comment:

Share to:

Uploader Comments (MrLambdaUser)

  • This is so awesome. I'm a college student and I wanted to start my own project over this break for building a very simple GPU in VHDL. I've looked online for material, but I still can't figure out how to start at all. I don't want a complex GPU to start with. Only something that can draw lines and pixels. Then I will expand to triangles and shading. Could you help set me in the right direction?

  • @makorihi - Response part 1/3

    Hello makorihi! Here's a possible solution : first, you need to do a VGA frame generator able to display a simple video buffer stored in RAM. So, you will be able to draw graphics (pixel by pixel) with a processor.

    Then, for drawing accelerated pictures (without stretching and rotation), lines, rectangles, etc., working by layer is needed.

    ...

  • @makorihi - Response part 2/3

    A solution consists to make a mini-GPU that can draw these in a specific order into the VGA buffer (at this point, you need to modify the VGA frame generator for manage double-buffering). A typical structure for this GPU is a command interpreter (e.g: "draw pict. at pos X,Y") that sequence the drawning into the video buffer using dedicated blocks (line drawner, pict. drawner,...).

    ...

  • @makorihi - Response part 3/3

    Other interessant things : Using a FIFO for the GPU commands and 'pipeline' all drawing operations.

    In summary : CPU --> [ Command decoder --> Drawing modules --> Video buffer --> VGA frame generator ]

    ...it's a good start and this can give very good results ;)

  • hey MrLambda, et all, this is pretty awesome, especially learning. props for documenting so well, its just too bad some people cant appreciate. awesome job! do you have a site? code repo? etc? 

  • @brianfreardon

    We have quickly implemented and programed this system. So, the VHDL/C++ sources are largely too less commented, and still less documented..... That's mainly why we haven't shared the project.

see all

All Comments (30)

Sign In or Sign Up now to post a comment!
  • ok so there's no documentation for the source...can i get a copy of your mentalware instead ?

  • What you've built is great! How big is the physical system? Also, what were the time and money costs?

  • @MrLambdaUser

    Yes, it's a very good idea to separate it into parts like CPU --> [ Command decoder --> Drawing modules --> Video buffer --> VGA frame generator ]. Recently, I have been looking at the Video Buffer part, and the timing is very difficult. I don't know if I need to use SDRAM, or SRAM for the speed. Even with the double buffering, I still have to access the RAM very many times. For the RAM interface, do you make a 'memory controller' and have a FIFO there as well?

  • WoW Really impressiv and tricky, you are slowing down rendering instead of skipping frames for an constant game speed ;)

Loading...

Alert icon
0 / 00Unsaved Playlist Return to active list
    1. Your queue is empty. Add videos to your queue using this button:
      or sign in to load a different list.
    Loading...Loading...Saving...
    • Clear all videos from this list
    • Learn more