Motivation #1
Posted on 2007/10/05 - 17:15So, yeah, design and build an open graphics card. It was nice to see some people chime in on my last post, that doesn't seem to happen to often here. I want to start documenting some things here about this project so that people get a better idea of what and why I'm doing certain things with this card. I've got a document here in dutch filled with little notes to myself and links / page numbers to documents. See this post as a distilled version of the 'why' (and why not something else) I made certain design choises, I'll talk some other day about the 'how'.
But first I've got a little other issue I'd like to discuss. I have no idea how to call this project. I managed to cut through most of the red tape and got it approved as my university project for this semester, where it's now known as 'Project VGA'. On my harddrive it's in the folder 'ASNE' which means 'Advanced System and Network Engineering', which is the name of the general course I'm following this semester. Somebody already suggested "Wacco's Open VGA", and although that sounds catchy, it's a bit straightforward and 'WOV' doesn't sound 'cool'. If you get what I mean. So what I'm really asking is; if you have a cool idea for a name, and it's not in use or associated with anything else that might get me in trouble somehow, let me know! I'm probably going to route the circuit board next week and want to put some art on it with a catchy name. I'll do the art (got a good idea for that already) but I need a name ASAP.
Now that that's out of the way, back to the card. What I want to do is discuss some chips I'm going to put on the card and why I've chosen these. A big requirement for all these chips is that I can get my hands on them easily. This comes twofold, first I want everybody else to be able to copy me, and second I need to be able to buy them as well. I can't buy a reel of 2500 chips, I'm a student! Second, you should be able to get them from a general 'big' electronics shop. I'll be using digikey, so if they don't have it, I won't use it. Third, all components should be (albeit with some difficulty) capable of handsoldering. That's just to eliminate chips with Ball Grid Arrays on them, since if you don't have a compatible oven (I do have one at my university by the way) you can't use them. No-no on BGA and the like for home-soldering. Lastly, they need to be cheap. But I'm not going on a bargain hunt if I might save a few cents, I don't have the time on that (or else I'll end up spending 3 years in development).
Main FPGA: Xilinx Spartan 3 S400 (208 PQFP)
Right, the first and biggest chip! This is basically the biggest FPGA I could get which was still in a flat
package and isn't to overly expensive. Altera wasn't an option, since I couldn't get them easily, xilinx virtex
wasn't an option either because they have things like complete POWER cores onboard. Not that it isn't usable,
it's just not quite in the spirit of open source. If I'm going to include complete proprietary subsystems on the
FPGA and build my open source implementation on that, we're still stuck with these closed (you might be able to
get your hands on it, but not everyone can read and alter it) source components. So this was an easy choice.
Secondary CPLD: Xilinx XC95144XL-7 (144 TQFP)
The main problem with the FPGA is that it needs to be programmed before use. It can do this automatically, but
it'll probably take too long to respond to initial PCI commands. A CPLD doesn't have this problem, so a small
one is included between the FPGA and the PCI bus. Also, I've never played with these so it might be fun to simply
use it even if the FPGA is fast enough, and somebody already did this.
After some emails (thanks Ben!) I also found out that he reprogrammed the CPLD when the system was on (which had
some side-effects but nothing a reboot wouldn't solve) so no seperate power supply is needed, just tap straight
from the PCI bus. That somewhat motivated me to clone part of his design since this probably will work, and an
FPGA-only solution might not. Oh, and did I mention that the Open Graphics guys also have a similar setup?
Memory: 128Mbit SDRAM Micron MT48LC4M32B2P-6 (86 TSOP)
For memory I could use DDR material, but that would require a lot of pins on the FPGA side and other trickery
I'm not familiar with, and I was going to keep stuff simple! Even more simple than SDRAM would be SRAM since that
won't need a refresh cycle every once in a while, but that stuff is screaming expensive in larger quantities. So
it's going to be a simple SDRAM module. The FPGA has enough IO available so a 32bit bus wouldn't be a problem,
and this means we still get reasonably good performance on the maximum clock of 166MHz. I picked 128MBit since
it's big, but not expensive-big. It'll be plenty for now.
DAC: Fairchild FMS3818 (48 LQFP)
Nothing special here, if you want to build a VGA card, you'll need a DAC. There where some high speed 10bit
chips which looked interesting, but I didn't want to tie the lowest (or highest) 2 bits to ground (or vcc) since
that would influence our range of colors directly. This chip only does translation to plain analog, so nothing
fancy like DVI connectors or HDCP support anywhere. We don't want to worry about that just yet.
JTAG / USB: FTDI FT2232D (48 LQFP)
Now, this is an interesting addition. Since I learned that I can reprogram the card in-system (roughly) I figured
people want to play around with a card like this. So, if you buy an expensive 200 bucks development board, you
at least expect a JTAG programmer to come with it. But wait, why not simply put that onboard? Then all you need
is an USB cable and you can reprogram the thing. It might be wise to reprogram the card from another machine,
but at least you won't need an expensive programmer anymore. And I've seen commercially available JTAG cables
using the FTDI chip for this since it has some nice bit-bang functionality. It also has a second channel, I'm
still looking at whether or not I'm going to tie that to the FPGA. Might be handy for debugging.
PROM: XCF04S (20 TSSOP)
Some other details follow, I'll include a serial PROM for the FPGA which is 'too big' for the s400. This gives
about 2Mbit of extra room. The space will be used for the PCI expansion ROM and things like font maps. There might
be a race condition between how quickly the PCI BIOS asks for this expansion ROM and how quickly the FPGA will
load everything into RAM, but that shouldn't be too much of a problem since we can ask to retry the request
later. After mapping out the IO of the FPGA I'm considering to use a parallel PROM just for this reason since
it might just fit, but it'll be tight and the advantage won't be that much bigger.
Clocks: 25.175MHz and 50MHz oscillators
For VGA we need to support a 25.175MHz and 28.322MHz output clock. The latter can be created with a Digital Clock
Manager from the FPGA since it's 9/8th of the former. I checked some other video cards I got laying around and
they all seem to use a 14.318MHz crystal. A bunch of chips are available to create any clock from that crystal,
but that would be more expensive than just using a 25.175 directly and do everything in the FPGA. The 50MHz clock
will be used internally by a DCM to generate a times 10, divided by 3 clock of 166MHz. We need that for the RAM
and is a decent speed for everything else probably.
Power: 1.2V 1A MCP1726 and 2.5V 1.5A LM1086
The FPGA has some 'exotic' power rails. The FTDI chip needs 5V and everything else needs 3.3V. The PCI bus already
delivers the 5V and 3.3V so I'll be using those directly. From the 3.3V I'll derive a 1.2V rail and a 2.5V rail.
It's kind of hard to find out how much power the FPGA really needs, but from a reference design (the Spartan 3
starters kit) I deducted that 1A and 1.5A respectively would be enough. The LM1086 used in that design is easily
available, however the FAN1112 wasn't, so I replaced that with a MCP1726.
And that's about it! Naturally there will be a bunch of resistors, a load of capacitors, some test leds and ferrite beads present but I haven't picked those out yet. That'll come when I'll be drawing up the final schematics during the rest of this and next week. Hopefully you all like the design so far, if you've got any tips, improvements or questions, let me know! This is by far the biggest circuit I've ever designed so I can only hope I'm not making silly mistakes anywhere. Thanks for reading, talk to ya later!
[: wacco :]


Visit the Project VGA Page



Comments
Posted by reider on Fri, 05 Oct 2007 23:10:14
no this is NO spam ;-)
Posted by wacco on Fri, 05 Oct 2007 23:29:17
Hehehe, I'm not saying anything 8)
Posted by reiNder on Fri, 05 Oct 2007 23:29:39
name how about OVC (Open Vga/Video Card) maybe D intead of C for Device and for oven did you read elektuur? there was a reflown oven based on a cheap oven in there ... and please think about dvi (might be hard) and panellink(easy ... i did that already)
FT2232 can do jtag more native(faster) then bitbang... i hav a amontec jtagkey (cable version) its more or less open source ;-) 2nd channel is ideal for a rs232 link (to the onchip softcore
it might be better to use one clock in the whole fpga
i think the ftdi chip is 3.3V
you might want to use 12V pci pins to power the convertors if you are going to burn more the a couple of watts ....
lets chat about this on icq/msn/skype/whatever
Posted by wacco on Fri, 05 Oct 2007 23:51:31
Yeah I was thinking of a naming scheme like that, but it's really close to the Open Graphics way of calling stuff and was hoping for something catchier. Somebody on MSN already said "OpenVid", that might be something.
And no, haven't seen the elektuur thing, I only buy it once every few months. Sounds great, but my point is that I want people to be able to handsolder the thing if they have to. Not that they have to make a complete oven before they can start on this card. DVI might be fun but I have no idea what all those digital signals are and I don't have anything to test it with. I don't think this card will be capable of really high resolutions anyway (we'll have to wait and see how high we can get) and the plan is for VGA only, that is, 640x480 tops. Maybe there'll be some SVGA action, but I rather not count on it and add it later to version 2 than to potentially end up with a dead project because I tried to stuff high-resolution DVI on it.
The FTDI chip really needs both, Vcc for the internal LDO and the actual USB bus should be 5V, and the Vccio may be (and will be) 3.3V. Funny that you mention amontec, I already got a copy of their schematic to verify that I got mine correct. It'll be pretty much the same as that cable. For the other power requirements, I just figure I take the power rail closest to what I want to have, so 3.3V. I'm allowed to pull the full 25W I can take in total from that rail, so why not? From the 12V rail I'll only end up with really hot converters. ;)
Clocks are a whole story on their own, but yeah, I'll try to get as much done as possible in just one clock domain. But the clock for the RAM will probably too fast, and the clock for the VGA will definitely be too slow. So there might be some async fifos to tie a few different domains together.
Posted by olecom on Sun, 06 Apr 2008 00:38:01
What FPGA VGA core you are using this
http://www.opencores.org/projects.cgi/web/vga_lcd/overview
making your own?
I just want to create featured text mode.
http://www.advogato.org/person/olecom/diary/7.html
Posted by louis vuitton on Tue, 15 Jun 2010 12:22:31
Posted by Uwe Bonnes on Sun, 10 Feb 2008 22:30:00
http://www.urjtag.com/ might be a better place to put jtag effort into. The project is alive and seems not targeted at a single CPU.
Uwe Bonnes
Posted by chanel on Wed, 14 Jul 2010 04:56:57
I LOVE my dream bag, smooth transaction, great communication with the seller!|opinionatedms
Amazing!!! Exactly as it was described. Fast shipping. Thank you seller!!!|megmariem1982
Beutifull bag. Fast shipment.|maschen84
Posted by youmarco66 on Fri, 27 Aug 2010 10:48:02
nice blog!
Posted by ugg boots on Fri, 27 Aug 2010 10:59:33
nice blog!
Posted by ugg boots store on Fri, 03 Sep 2010 10:49:12
Ugg has become a fashion and a popular brand.I like ugg very much.Thanks for your blog.it's great.From your blog, I know much about some good news.Have a nice day .
Posted by xingfantrade on Sun, 05 Sep 2010 16:08:21
You know what question wouldn’t have been out of bounds? <a href="http://www.hot-sale-jerseys.com/">mlb jerseys</a> We are specialized in retailed and wholesale all kinds of jerseys for many years. <a href="http://www.nflnhljerseyscheap.com/">nba jerseys</a> Of course, this is the same guy who used the ugliest homosexual slur in existence at <a href="http://www.jerseyspaypal.com/">nfl jerseys</a> We would like to set up business relationship with you . <a href="http://www.jerseyspaypal.com/">nhl jerseys</a> and you can definitely locate retail stores that offer jerseys <a href="http://www.nflnhljerseyscheap.com/">nba jerseys cheap</a> hockey merchandise and university teams–every team <a href="http://www.nflnhljerseyscheap.com/">mlb jerseys cheap</a> from china
Posted by xingfantrade on Sun, 05 Sep 2010 16:09:26
We wholesale best jerseys, [url=http://www.edhardypaypal.com/]edhardy shoes[/url] ,[url=http://www.edhardypaypal/]ed hardy jeans[/url],[url=http://www.jerseyspaypal.com/]nfl jerseys[/url],[url=http://www.jerseyspaypal.com/]nhl jerseys[/url],[url=http://www.hot-sale-jerseys.com/] cheap nfl jerseys[/url],[url=http://www.hot-sale-jerseys.com/]cheap nhl jerseys [/url] from china
Posted by botsfan on Wed, 08 Sep 2010 09:21:19
Thanks for sharing!
Posted by classic mini ugg boots on Wed, 08 Sep 2010 09:24:09
http://www.cheapuggtallboots.com/ugg-classic-cardy-5819-c-7.html
http://www.cheapuggtallboots.com/ugg-argyle-knit-5879-c-30.html
http://www.cheapuggtallboots.com/ugg-classic-mini-5854-c-9.html