2
\$\begingroup\$

Can anyone please suggest a circuit to convert 16 bit TTL (3.3V) RGB signal to a VGA signal. I used a resistor network, it works but I think some active component is necessary for load matching purpose.

Edit..

I am using r/2r ladder with an output voltage divider. I know it is not a good method, but it was fine for testing. The brightness of the display is too low with the circuit, and color quality is too low.

\$\endgroup\$
  • \$\begingroup\$ Is that a 16-bit r/2r ladder, or is that analog but 3.3V level that you're converting to the 1V levels? \$\endgroup\$ – pjc50 Aug 27 '13 at 15:14
  • \$\begingroup\$ You may have better luck with a DAC (some of which are little more than well engineered ladders), but it sounds like what you really need is a video op-amp. You could factor the load impedance into the resistor ladder design, but it may vary off spec so I doubt that will work very well when extended much beyond the 2-bit/color schemes sometimes used on FPGA eval boards. \$\endgroup\$ – Chris Stratton Aug 27 '13 at 15:14
  • \$\begingroup\$ And you might/probably need to adjust the timing of the sync signals to better match the VGA specs. \$\endgroup\$ – user3624 Aug 27 '13 at 15:16
  • \$\begingroup\$ I am using r/2r ladder with an output voltage divider. I know it is not a good method, but it was fine for testing. The brightness of the display is too low with the circuit, and color quality is too low. \$\endgroup\$ – Saneesh A T Aug 27 '13 at 16:53
  • \$\begingroup\$ The normal thing would to use something like this: analog.com/en/digital-to-analog-converters/video-encoders/… \$\endgroup\$ – user3624 Aug 27 '13 at 17:31
2
\$\begingroup\$

Is this a good method? - well it's not production worthy, but if you learn something from it then it's probably good.

You don't give enough information so we all have to make assumptions, but you claim to have something almost working and you indicate you have your suspicions as to what is wrong so I'll use this as a learning opportunity.

Just don't try to put this into production ...

You suspect that the VGA input is loading the resistor network. You're right, The standard procedure then would be to put a voltage buffer between the R-2R network and the VGA input. Choose a nice R-R (rail to rail) amplifier that is fast enough and put it on a clean supply. Make sure it's input impedance is high so this it doesn't load the R-2R network also.

The other issue you will have is the noise from the Logic levels in particular the power supply noise on the MSB will drive straight into the VGA inputs, you'll see ripples going through your screen. i.e. your PSRR will be 0 dB )or close enough) Simply put a digital buffer on the input that has a separate clean power supply, (shared with the O/P amplifier). Slow down the edges on the input and output just to keep things well behaved.

This should work fairly well. All the hand wringing about resistor accuracy is for the most part only important if you are looking for reproducibility from unit to unit. The INL will be dominated by the resistor accuracy, and the reproducibility of the DNL will be dominated by the resistor mismatch. But it is guaranteed to be Monotonic and given the human eye insensitivity to display gamma this should be mostly passible. And yes, you may have posterization in your colour tones (i.e. the shading transitions will noticeably weird).

I've dropped a number of terms in here to help guide your research, INL, DNL, Monotonic and Gamma, look them up, understand them.

Exploring techniques and topologies, and learning the limits and why things are done the way they are and how they fail is an important way to learn.

\$\endgroup\$
1
\$\begingroup\$

There is no way you're going to make a "16 bit" R/2R ladder on your own. Think about it. 16 bit implies one part in 66 k accuracy, or 15 ppm. Where are you going to find resistors matched to within 15 ppm? The only way to achieve this with current technology is have them all on the same chip with factory trimming.

Think of the reverse. 1% resistors are good to 1 part in 100, which is not quite 7 bits. 0.1% resistors can almost do 10 bits, but nowhere near 16 bits. Beyond that a single resistor will probably cost more than a integrated 16 bit D/A, and you still won't get 16 bit accuracy.

At 16 bits (15 ppm) various other effects also have to be considered. Small mechanical stresses to the board, even those caused by temperature change, can change part value to more than 15 ppm. Then getting parts that are good to 15 ppm over whatever your temperature range is will be tricky. Many parts drift more than that just from a 1°C change.

Different metals in the loop can cause thermocouple effects. Consider that one count of a 16 bit number with a full range of 3.3 V is only 50 µV. Lots of little things you can usually ignore in millivolt-level circuits become significant when you are looking for 50 µV accuracy. How good is the power supply? How much of its inherent ripple or noise will get into the signal? What about the DC resistance of some of the traces and offset voltages caused by currents in the ground? Even just 500 µΩ with 100 mA thru it will cause 50 µV offset.

\$\endgroup\$
  • 1
    \$\begingroup\$ Olin, I don't think he's "stuck" on using the resistors. Maybe you could suggest some alternatives to resistors. \$\endgroup\$ – user3624 Aug 27 '13 at 17:14
  • \$\begingroup\$ @David: Like I said, go get a off the shelf D/A chip. \$\endgroup\$ – Olin Lathrop Aug 27 '13 at 17:17
  • \$\begingroup\$ But RGB means Red 5 bits, Green 6 bits and Blue 5 bits. \$\endgroup\$ – Saneesh A T Aug 27 '13 at 17:17
  • \$\begingroup\$ @OlinLathrop To be fair, you didn't exactly say to "go get a [sic] off the shelf D/A chip". You just compared a D/A with a 0.1% resistor. \$\endgroup\$ – user3624 Aug 27 '13 at 17:22
  • \$\begingroup\$ @Saneesh: No, just "RGB" doesn't mean a particular encoding format at all. There are many RGB encoding schemes. If he really means all three values packed into one 16 bit word, he should have said so. Note that he mentions 16 bits and "ladder" (no, "s", meaning singular). That means each 16 bit value is one of the R, G, and B components. If the OP meant something else, then his question is badly worded and he needs to clarify it. \$\endgroup\$ – Olin Lathrop Aug 27 '13 at 21:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.