Interfacing VGA in VHDL (FPGA)

A little background

The Design Process

VGA needs an analog signal, while one can use a DAC chip for each color, it would be much simpler (and cheaper) to just use an R2R ladder.

R2R

Not much to say about it, a simple R2R would nicely convert Digital values to Analog, I have decied to use 3 bits for each color, for a total of \(2^3 = 8\) levels of a color. Since VGA uses 3 different colors, I get a total of \(8\times 3 = 24\) colors, which isn’t that bad. A simple R2R ladder

Voltage Level

VGA uses \(0.7V\), while my FPGA has a logic output of 3.3V, this could easily be solved using a voltage divider.

Thevening Equivelent of R2R

Luckliy, The thevenin equivalent circuit of R2R ladder can easily be found, then one can construct a voltage divider to achieve a value of \(0.7V\) (or lower).

\[3.3V \times \frac{x}{x + R} \le 0.7\]

Solving for \(x\), we see that \(x \le 0.27R\).

R2R with 0.27V divider

Choosing Values for R

Now I know the I need the following values, \(R\), \(2R\) and less than \(0.27R\). I will spare you my trail-and-error, I found that \(5K\Omega\) seems like a good choice. The nearest values I had with me are \(5.1K\Omega\), \(10K\Omega\) and \(1K\Omega\).