A few months ago, I replaced the dead fluorescent backlight of an LCD computer monitor with an 8-bit-per-channel RGB LED strip, and built a controller for it from an AVR microcontroller that talks to the same Raspberry Pi that drives the screen. This allows me to dim the display from a shell script or a manual potentiometer or whatever. So far so good.

Now that I've used it for a while in very low ambient light, I want to dim it even more, but the minimum setting for the LED strip is still too bright. Even dithering barely-on yellow (RRGGBB = 020100) vs. off for adjacent "pixels" isn't enough, and using red-only (RRGGBB = 010000) is almost useless as it only shows that channel of a color image.

The monitor itself only accepts VGA, so I have an HDMI > VGA converter between it and the Pi. And since I have that analog signal to work with, I eventually came up with this concept:


simulate this circuit – Schematic created using CircuitLab

All three colors operate together, so there are effectively 2 proportional controls and 1 binary control. All managed by the AVR in addition to the backlight itself.
The sync's and other signals are wired straight through, unchanged.

I looked on DigiKey for digipots and voltage-controlled-amplifiers that would work for a ~62MHz analog signal (1920 x 1080 x 60Hz, alternating black and white), but didn't find anything even close. (I didn't look for opamps yet; I'm pretty sure that those exist.) I also thought about doing those functions in the Pi, before the HDMI > VGA converter, but decided that I'd rather like a hardware solution if possible.

Are there digipots or VCA's that can do that?
Or maybe a different circuit design or processing technique that I'm so far unaware of?
(a PWM chopper might be a challenge too: >10x signal freq with LPF gives >0.62GHz PWM)

Maybe a chip that I haven't found yet, that "just does this"?

Note: The schematic above is just a concept that would technically work with ideal parts. It has some glaring omissions (like impedance matching), and is not a final design by any means.

  • \$\begingroup\$ I think the thing you want is called a video amplifier. \$\endgroup\$
    – Hearth
    Commented Apr 2, 2020 at 20:15
  • \$\begingroup\$ Fun stuff! I might start with a high speed mux and an R-2R ladder and roll your own digipot. \$\endgroup\$ Commented Apr 2, 2020 at 22:22
  • \$\begingroup\$ @Hearth Okay, based on those two comments, I found a 12:3 mux that feeds an internal x2 amp (Yay! A free buffer!), and a quad opamp also happened to jump out at me. Looks promising... \$\endgroup\$
    – AaronD
    Commented Apr 3, 2020 at 0:47
  • \$\begingroup\$ @JohnBirckhead My original thought, though, was to have "a lot" of resolution on the proportional controls, like maybe 7 or 8 bits each or so, but maybe I don't need that??? It would sure help to figure out which 4 levels I wanted, as I could experiment in software instead of swapping out resistors. \$\endgroup\$
    – AaronD
    Commented Apr 3, 2020 at 0:47
  • \$\begingroup\$ I was thinking that with an R/2R ladder, you would take one or more muxes (like ti.com/lit/ds/symlink/tmux1133.pdf ) and switch each of the terminals to either your input signal or ground. A single 4-channel mux would give you 16 levels; if you used two it would give you 256 levels. You would need a buffer on the output of the ladder. \$\endgroup\$ Commented Apr 3, 2020 at 13:05

1 Answer 1


Thanks to @Hearth and @JohnBirckhead in the comments, I have a theoretically workable design.
No continuously variable mixing or attenuation at ~62MHz, but enough steps to be close enough.

enter image description here

The symbols aren't exactly correct yet, but it shows the idea. I'm switching from Eagle to KiCad and have yet to figure out how to make custom parts in KiCad.
The power supply also needs some attention before I spin a PCB.

The de-saturation/grayscale is a 2-bit, 4-way switch using this chip:
It's a 3-channel, 4-way switch with a x2 buffer built-in. That extra gain accounts for the signal loss in the impedance-matched inputs and outputs.

The color inversion is an opamp buffer that is switchable between a gain of +1 or -1 using this chip:
It also provides (an attempt at) the proper signal blanking during the HSYNC interval by switching back to +1 during that time.

The output attenuation/dimming is a 4-bit logarithmic stepped attenuator with constant 75R output impedance and ~1dB/step, using the same 2-way switch and this calculator:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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