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?
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?
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.
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,...).
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?
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.
How did you do the video graphics (the rendering, zooming, panning) of the FPGA and CPU chips in the first 7-15 seconds? What software package(s) was/were used? Impressive project as well,
The first 55 seconds are one (of 3) unique 3D scene made and rendered with 'Blender V2.49b'. 'GIMP' was used for some textures, like the text on the FPGA/CPU ICs. The camera orientation/position, arrows movements, lamps intensity and some shaders/textures parameters are controlled with IPO curves.
ok so there's no documentation for the source...can i get a copy of your mentalware instead ?
TheQedqubit 3 weeks ago
What you've built is great! How big is the physical system? Also, what were the time and money costs?
nxadmon 2 months ago
@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?
makorihi 2 months ago
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 2 months ago
@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.
...
MrLambdaUser 2 months ago
@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,...).
...
MrLambdaUser 2 months ago
@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 ;)
MrLambdaUser 2 months ago
WoW Really impressiv and tricky, you are slowing down rendering instead of skipping frames for an constant game speed ;)
suchiman123 3 months ago
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 3 months ago
@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.
MrLambdaUser 3 months ago
How did you do the video graphics (the rendering, zooming, panning) of the FPGA and CPU chips in the first 7-15 seconds? What software package(s) was/were used? Impressive project as well,
Thanks
thomas49th 3 months ago
@thomas49th
The first 55 seconds are one (of 3) unique 3D scene made and rendered with 'Blender V2.49b'. 'GIMP' was used for some textures, like the text on the FPGA/CPU ICs. The camera orientation/position, arrows movements, lamps intensity and some shaders/textures parameters are controlled with IPO curves.
MrLambdaUser 3 months ago
@javier29m90
Miaouuuuuuuu not fake :p
capons1990 4 months ago
What is the use of this type of computer when we can own a simple computer less than its price....describe me plz
ssuetfahad 4 months ago
@ssuetfahad
Simply just for fun ! For learning, price isn't really a big priority... ;)
MrLambdaUser 4 months ago
Probably also costed a leg and an arm. :-P
Petrander 5 months ago
I'm the beginner of FPGA Programming to, I'm majored in Computer Engineering, your demo is awesome and a very inspired work.
whitepen 5 months ago
you rock!
daxweb 6 months ago
Do you have to customize some parts in BOX2D Library for running on ARM ?
tennirva 7 months ago
@tennirva
Only the existing "debug drow function". If i remember true, they are empty when you download source.
mouse/keyboard input of the code example
capons1990 7 months ago
Does this project use an OS ?
tennirva 7 months ago
@tennirva
No, the project is based on a single executable booted from the SD Card.
MrLambdaUser 7 months ago
VERY impressive.
DonQuichotteLiberia 8 months ago
HOLLY COW!
sixstringmania 10 months ago
SUPERB... OUTSTANDING...!! GREAT WORK...!!
pulsee250i 11 months ago
Man, this is really impressive and absolutely amazing!!!
leonow32 11 months ago
outstanding!!
how much time did it take to finish developing this system (including software &HDL)??
nightknightful 1 year ago
@nightknightful
It took us a little more than one year.
MrLambdaUser 1 year ago
Exceptionnel! Vraiment superbe! Donne un bon apercu de votre gigantesque travail!
sebdevils 1 year ago