AD725, RGB to NTSC/ PAL Encoder

Has anyone managed to use the AD725 with the Arduino? The chip is used in the Uzebox platform and I’ve been trying to research how the R,G,B components and sync signals are generated. Anyone who’s got a clue?

Thank you KE7GKP for taking your time.

Uzebox is using Atmega atmega644P and there are available hardware and software designs to use this controller with the Arduino platform, see

As far as I understand, the 6 PWM pins and the 4K RAM should be enough for generating the video and sync signals.

I'm considering diving into the source code of the Uzebox to figure out how to setup a very basic graphics demo that will work with the Arduino platform (maybe just vertical lines), and then spend some time understanding this. What I need is some good resources where to start figuring out the concepts of real time video signals.

For the DAC I'm planning to use the same design as the Uzebox, but I need a good resource that provides an introduction to modulating the RGB signals. Anyone more familiar with video engineering that is willing to give any advices?

Concerning the future obsolescence of NTSC/PAL, this is not a problem for me. I'm mainly interested in the aesthetics of CRT-TV:s and I'm only planning to implement this is in small scale (not as a product). I have already worked with the monochrome TV-out library and this is my next step in my artistic research.

I appreciate all help I can get.

Best /Olov

Hi There,

It depends what you want to do. A tile-based video mode is well within reach of the Uno's ATmega328, albeit at a lower resolution than the Uzebox. At 28Mhz and 6 clocks per pixel, the Uzebox can achieve 240x224 resolution. Interpolating down to 16Mhz you could achieve around 128-134 horizontal pixels resolution. Note that this is for outputting a byte per pixel yielding 256 colors (using a simple 3:3:2 RGB resistor DAC). If you are fine with 16 colors, using 4bits per pixels (2 pixel per byte) you could attain something like 192x128.

Generation video with the AD725 is very easy. You basically need to generate vertical and horizontal sync signals (can be done with 2 PMW channels) and then simply push pixels to the video DAC port. Nothing more, really. The AD725 does all the modulation stuff. The only issue I see here is timing. The AD725 requires a 14.31818MHZ clock to correctly generate color. Running asynchronously with the mega328 clock could generate some periodic aliasing artifacts, thought I never tested it. But I may soon, I just bough a Uno recently to see if I could make some video shield based on the Uzebox core. 8)

I'll initially post my progress and ideas on the Uzebox forums if you are interested.


Wow! Awesome answer! Thank’s uze. Would it be possible to use an external clock for the AD725?

Not only you can, but you must. To keep things in sync and get the best image quality, you would normally want to use the same clock source for both the ATmega and AD725. But since the clock on the Arduino is fixed at 16Mhz, you need a 14.31818Mhz crystal dedicated for the AD725.


Thank you guys, I have a feeling that the tricky part will be to keep the Arduino and the AD725 in sync with each other.

uze: I will follow your progress in the uzebox forum, which thread are you posting in?