Making a custom 3D graphics card accelerator

santyhammer

Newcomer
Hiya,

I was looking at the Open Graphics project at http://wiki.duskglow.com/tiki-index.php?page=Open-Graphics

and I am wondering how ATI/NVIDIA make their graphics cards.

I think they design the central GPU using Verilog/VHDL. They program it using FPGAs like Xilinx, Altera, Atmel, Actel or Lattice. Then they join the netlists ( because these FPGAs can only manage around 3M transistors and the G70 is like 280M... ) into a collosal one. Then call TSMC or other and synthetize the final ASIC.

Finally the GPU is integrated in a PCB using a program like Altium Designer 6, P-Cad, Or-CAD??? But... how can you test the final card? Using an osciloscope?

But suppose I am a student with a limited buget of 500$. How can I develop a very simple VGA card with some HW-rasterization support like a RivaTNT pls? How can I integrate the VRAM , FPGA and RAMDAC into the PCB and debug it? What the professionals use to make and test a graphics card?

Where can I find information about the electric ( and pcb ) design of memories like Samsung, dimensions and protocol of the PCI, AGP, PCI-X, etc?

thx
 
Oh and other question... imagine I have all done... How and where can I send the design to make the final card? Where to send the PCB design? How to weld all the chips into the PCB? Where to buy all the chip, capacitors, etc? thx
 
Oh, also I want to use some sockets... So I can program/debug the FPGA.. and then get it from the dev board and put it into the graphics card PCB socket. The problem is that I can't find FPGA sockets....
 
You might want to make something slightly easier to start with like PCI card with a printer port.

I highly doubt you will get anywhere near a home made VGA card for under $500.
 
As far as I have heard, it costs about $10 million to toast an ASIC in 90 nm technology (and this is after you have spent many man-years in design and verification). Are your initials A - T - I :D ? It is possible to use larger technologies (300 nm) and do limited runs for research or educational purposes but even that costs quite a lot more than a hobbyist would be willing to shell out.
 
Oops - sorry - I see you want to use FPGAs - have you tried the Xilinx or Altera web-sites - they make everything related for FPGA applications, including open-source software to convert Verilog or VHDL into a toastable specification...
 
There actually is a "cheaper" way to get a low volume ASIC.

MOSIS is an integrated circuit fabrication service where you can purchase prototype and small-volume production quantities of integrated circuits and related products. MOSIS lowers the cost of fabrication by combining designs from many customers onto multi-project wafers, thereby significantly decreasing the cost of each design.
http://www.mosis.org/

Also, large ASIC companies don't tend to work directly with Xilinx, etc. Instead they use hardware emulators if they test with FPGAs.
 
Oh and other question... imagine I have all done... How and where can I send the design to make the final card? Where to send the PCB design? How to weld all the chips into the PCB? Where to buy all the chip, capacitors, etc? thx

Where do they buy chips, capacitors etc? From a supplier? ;)
As for where they send the PCB design. As far as I know, the reference PCB design is made by the IHV and is actually built on their own manufacturing machines. I am *pretty* sure it is done this way. This would allow for quick changes when board revisions are required for early ASIC bringup right after the first chips come back from the fab.

Nevermind. I thought you meant how does a IHV company make a PCB :)
 
Last edited by a moderator:
Anyone can produce you a PCB, that's cheap (relatively). If it's a 8-layer monster, it'll cost up to a few 1000's, though.
 
Yep yep this is my shopping list atm:

Xilinx Spartan 3E Starter kit ( 149$ ) on http://www.xilinx.com/xlnx/xebiz/de...BV_EngineID=cccfaddjefdlggicefeceihdffhdfkf.0
which includes dev board, VErilog/VDHL syntetizer and debugging

Samsung DDR 200Mhz for VRAM ( 40$ 256Mbits/32Mb )
http://www.samsung.com/Products/Sem...ry/DDRSDRAM/128Mbit/K4D263238A/K4D263238A.htm

PCB design using some freeware ( gEDA, etc )
PCB manufacturing 2layers small PCI card 35$ ( http://www.goldphoenixpcb.biz/products.php see the pci card )

The question is... Does the PCB manufacturer buy all the electronic components for me and then they put all the components into board or must I send the design by email and to weld myself all the components using a nice http://www.alibaba.com/catalog/10444883/Hot_Air_Welding_Pistol/showimg.html or http://www.steinel.net/products/heatguns/electronic_heatguns.cfm )

Also I have a doubt... How do I program the FPGA to use PCI bus and memory controller? Can I get specialized chips for this, can I just buy a IP solution from Xilinx, can I use a DIMM socket and will do the memory controller automatically?
 
The methodology is as follows:

I program the FPGA using Verilog. Can debug/simulate it using the Xilinx software. Probably I need to program my custom DDR memory controller ( ot to use an IP solution from Xilinx too ). I implement a basic triangle rasterizer inside the FPGA.

Then I design the PCB using gEDA, FreePCB, Altium Designer or whatever. Integrate FPGA pins with the Samsumg DDR, VGA out and PCI edge connector. I contact any industial PCB manufacturer and sent to them the PCB design plus component list so they can assemble it.

This PCB will include a ZIF ( zero insertion force ) socket for the FPGA so I can program the GPU, upload the netlist to the FPGA using something like a EPROM programmer(???) and then I plug it in the card.

The problem is... i've been looking in the Xilinx web page... and can't find any ZIF socket for a Spartan 3E fpga... why? Also... won't be better to use other CPU like a PowerPC or a Hitachi SuperH5, program your rasterizer in C++ with gcc and to use the CPU as a GPU?
 
Some sockets I've found ( too small, won't fit for the FPGA ):

http://www.futurlec.com/SockZIF.shtml

Also I don't understand why the developement boards don't have a socket... The idea of the FPGA is to program and debug it, then upload the netlist and then unplug it from the dev board and to plug in your reference graphics card... See... this Xilinx dev board have the FPGA welded so I can't unplug it:

http://toolbox.xilinx.com/docsan/3_1i/data/common/hug/figures/fig031.htm

What I need is something to unplug the FPGA from the dev board and to plug it in my reference graphics card... Something like it's shown in this NVIDIA/ATI headquarters review:

http://www.anandtech.com/showimage....ideo/insidegraphics/socketedGPUtestsystem.jpg

ps: How can I edit my posts btw? Can't see any option.. I have to post a reply each time... thx
 
Oh also want to include a JTAG in the reference graphics card to debug the final design...

Also find this interesting pre-made dev board:

http://www.xess.com/prod034.php3 ( costs only 149$ and have all integrated, 32Mb SDRAM, vga connector, spartan2 with 200k gates but lacks pci interface and VGA is only 512 colors )

but I want to design my own one.. not to use an existing...If you see it well is not very complicated.. Not much pins to connect.

And also a question... with Terranza and CPU-coprocessors comming like:

http://www.dailytech.com/article.aspx?newsid=1920

could I program my own GPU using a FPGA and to plug it near the CPU?

Also other question.. what is the differency between a CPLD and an FPGA. I wikipedia-ed but can't understand the difference. thx.
 
FPGAs usually come in BGA form factors intended for direct soldering; I cannot remember ever having seen an FPGA in a PGA or LGA form factor. This makes a rather big difference; ZIF sockets for PGA/LGA chips are commonplace and can be had for a few dollars a piece, whereas sockets that can take BGA chips directly are usually uber-expensive (last time I heard a price for a BGA socket with a reasonably large pin count, the pricing was in the thousands of dollars; this may have gotten better, but prepare to pay through the nose) and usually fragile as hell too. If you still actually want one, you can try to contact these people:http://www.arieselec.com/products/LGA BGA.htm

As for CPLDs and FPGA: there is no real fundamental difference betweem them as far as functionality is concerned; the difference lies more in what types of applications they are intended/optimized for. CPLDs are normally used for glue logic, data routing and simple control logic, whereas FPGAs are more suitable for more complex processing elements.
 
Ohhh I found some ZIF socket manufacturers ( admits standard and custom designs ):

http://www.advintcorp.com/bgastart.html
http://www.arieselec.com/products/LGA BGA.htm
http://www.emulation.com/catalog/off-the-shelf_solutions/sockets/production/thruhole/bga/
http://www.ironwoodelectronics.com/

so I could weld one of these sockets to my reference graphics card.

I still can't understand why I can't find any FPGA/CPLD "eprom programmer" with a socket. Why I can't find the device where to plug my GPU, upload/update the netlist into it and then unplug it from the programmer and to plug it in my reference graphics card to debug it with the JTAG???

thx
 
As for CPLDs and FPGA: there is no real fundamental difference betweem them as far as functionality is concerned; the difference lies more in what types of applications they are intended/optimized for. CPLDs are normally used for glue logic, data routing and simple control logic, whereas FPGAs are more suitable for more complex processing elements.

Oooh thx for the answers arjan.

I think the difference is that FPGAs are volatile ( you put power off = clean the netlist/logic inside ) while CPLDs are more like an EPROM ( you use a "programmer" device and the data will be stored forever ) ??

Any idea where can I find the dammit FPGA/CPLD programmer of a Xilinx, altera, atmel, etc?? I can't find it in theirs webs!!:oops: Perhaps i'm mistaking concepts? How the hell I upload my Verilog program to the FPGA and then I put the FPGA into my JTAGged refrence graphics card for some electronic debug???
 
Can I "program" ( upload my Verilog-compiled netlist ) the FPGA using the JTAG cable or is the JTAG only for debugging purposes btw?

Oooh other question... What FPGA solution do you prefer? Xilinx? Altera? Atmel? Actel? Lattice? Which software do you think is better? Pros/cons?

thx
 
Out of curiosity, have you ever made a working printed circuit board? Actually have you even used a soldering iron considering you are talking about welding...
 
Out of curiosity, have you ever made a working printed circuit board? Actually have you even used a soldering iron considering you are talking about welding...

Wxcuse my english hehe
I dont wanna weld/solder. I just wanna design the PCB and send the archive to the pcb manufacturing enterprise ( they will make the PCB, buy the component list and sold the components to the pcb using robots!y ). Other option was to buy one of those uber pistols and do it manually... but I've never welded/soldered with a pistol so bad idea heheh

Btw! I found the FPGA programmers...
http://www.xilinx.com/bvdocs/images/storefront/MultiPro_All_125x60.gif
http://www.xilinx.com/xlnx/xebiz/utils/image_window.jsp?valueA=HW-MP-PQ208

and yep yep it appears there are no FPGA pluggables... need to be a CPLD.
 
Back
Top