I own a Spartan 3E Starter Kit, which I plan to use for crowd- entertainment purposes. Since the 3-bit VGA output is way too limiting for my project, I am planning to add a 12-bit VGA port to my Starter Kit. To do so, my idea was to buy the Breadboard accessory board from DigilentInc. I don't have much knowledge of high-speed signal propagation so my question is: Will the VGA signal be noticeably distorted by the breadboard? The signal's highest frequency would be
25MHz. The plan is to use a projector to display the pretty colours. I understand using wire wrap would be a better solution, but I'd like to avoid that if possible.
I'd say overclock the DAC by 4x, leaving the rest of the sync signals as they were, and then you have five colour levels (2.322-bit colour) at the same resolution. I don't think there's a VGA DAC on the market that can't cope with 100MHz operation.
Use some temporal dithering to very the bit-pattern that's sent, e.g. for half-brightness you want to alternately send 0101 and 1010; for three-quarters swap between 1110, 1101, 1011 and 0111, etc. etc.
I'm almost tempted to try this myself, just to prove that it can be done :o)
I think the point is that the OP doesn't have a DAC, just three 1 or 0 outputs from the FPGA, one to each color signal, possibly through an external buffer. Or you could say he has "one bit" DAC's. Dithering will work with a low-pass filter, but if there are additional pins available it would be better to use a resistor ladder to make a simple DAC. TFT VGA displays generally have a very narrow sampling window (see the Analog Devices AD9888 datasheet for instance) which is centered in the pixel time slot. This system works best when there is no low-pass filter smearing out the beautiful contrast of the original image. By the way, the video AC bandwidth is significantly higher than the pixel rate in order to give the sharp edges between pixels and flat voltage mid pixel. Generally it's important to match the cable impedance from the DAC output to the board connector, or if this isn't possible to reduce the length of the mis-matched portion as much as possible, preferably to much less than a pixel time in terms of propagation.
Ah, OK. That would admittedly make more sense than having a 3-channel 8-bit video DAC and just wiring all the input pins together :-)
True; as someone else pointed out this is not true of CRT displays. Not sure about overhead projection technology, which is probably what the OP has. Entertaining crowds using LCD panels is probably going to blow the budget... :)
Thanks for the heads up! The problem is I don't trust my soldering skills enough to do it myself :P, but I'll consider the option. I just don't want to risk ruining the board since having a replacement shipped over here to Mexico is not easy nor cheap nor fast (for a poor student like myself).
Just wire up your accessories onto a connector that _plugs in_ to the FPGA board. Either solder directly to the back of the connector pins, or use a little piece of pre-etched PC board like you can (I think even still) get from the likes of radio shack (if you have them down there).
This is no more risky for the board than connecting it to a breaboard... in fact it's less risky, as the almost certainty of wires coming out of the breaboard and at some point falling against a power supply voltage is reduced - by soldering to a connector, you only have one chance to mess up, and if you get past that it should stay connected the right way.
Or you could just stop owrrying and be practical... I've been known to put resistors directly into the pin sockets on the spartan 3 kit to connect to various things.
My cheap multimeter says the resistance of both, the wires and the PCB traces on the board, is exactly zero. They do match! :)
Now seriously, according to my calculations the "pixel length" would be 8 meters, so I guess I'm safe on that front. And yes, I understand that the spectrum of a digital signal contains very high frequency components. I was just mentioning the 25MHz number to give a (very) rough description of the signal.
As for the alternate methods of displaying colors, I have already tried them with unsatisfactory results. As Gh=FCnter mentioned, changing the color value mid-pixel works only in CRT displays; and not even in all CRTs, as some would display nasty Moir=E9 patterns. Even more, I want to be able to easily convert the VGA signal to NTSC. I think this solution would make that somehow difficult.
The other method I tried was using spatial and temporal dithering. I grouped pixels in 2x2 squares. Half the pixels in the group would be one color, the other half another color. If the viewer was far enough from the screen the illusion would work. To enhance this solution, I made de pixels swap positions every time the screen refreshed. For example to display "orange" the 4-pixel group would toggle between: (R is red, Y is yellow)
With this method I raised the number of colors from 8 to 27 (a lot of combinations looked gray), which still wasn't enough. Also, it halved my resolution.
So, back to the breadboard, does anyone have a prediction? Will it work? The fact that I am not being laughed at is strangely encouraging. :)
I think if you want to try dithering and have a high-bandwidth monitor or sample-and-hold on an LCD driver, then what you need to do is put a low-pass filter on the video signal. The idea would be to flatten your dithering (hopefully at an extremely high rate) out so that from the perspective of a pixel-timescale, it's relatively flat.
Of course if you low pass filter it a lot, you'll limit your ability to display crisp pixel-to-pixel transitions - you can trade off pretty pictures and blurry text, or ugly pictures and crisp text.
That's a very interesting idea. I think it would be kind of tricky to control, since the colors would only soften horizontally and not vertically. But still, it deserves some more research.
Regarding your suggestion of soldering components directly on the connector, it sounds great but I don't think I'll be able to find a Hirose FX2 connector down here. I'd have to import it. It would be more cost-effective to import a more "general purpose" module, specially since I am not expecting to make any money out of this project.
Anyway, thank you all for your responses! You have been very helpful so far.
That is actually possible and I've tried it with... some result! I have a Spartan-3 Starter Kit (not the 3E though..). It also comes with the minimum 8-color VGA-output that felt abit on the low-side.
As a fun project I tried out doing this kind of mix/dither. I started out with a 640*480*60Hz(25Mhz pixelclock)@3-bit color and ended somewhere in the region of having either a x-resolution at 4000 pixels
(4000*480) or approx 4000+ colors. The pixel clock was set to the DCM max and below (200-280Mhz)
The output did however (as someone already mentioned) ONLY work with old CRT-screens but did the job quite god. Probably you could do some filtering on it (maybe simple RC-filter) and make it work better with TFT also. I've been told that the simple R2R-ladder also has it limitations somewhere at 12-15 bits area so this could be a nice try- out project that is left to do..
For home-demo purposes it was a quite nice test, for real stuff a no- no! The version I did was only doing dithering in the x-res and by doing it both ways the result would of course be even better..
The worst problem for me was blinking due to timing problems @ 250+ but that could probably also be removed.
OK I'll just have to purpose a demo-scene for FPGA's again... anyone? Minimum hardware and maximum results of course. I think some fantastic things could be done that even would have the potential to beat the classic computer-based Demo-scenes.. Of course both a binary-release for download and a movie for everyone to watch. As I first suggestion for something like that I'll put to get
I just ordered a simple extender-board for my Spartan-3 Starter Kit. Its my own PCB and includes: 12-bit VGA, Line-Out Sound, Joystick- port, MIDI-In, SD-Card-connector, PS2-connector. When I get it to work I have 9 extras for sale. It has been ordered from a proffesional PCB- manufacturer so I have high expectations for it! If anyone is interested I've got 8 unpopulated PCB left. One for me and one for a friend!