DAC design


2006-08-10 12:32 am
I have been looking into DAC design, but until now have been purely analog. If I just try to reproduce the design from an evaluation board, what are the chances I get something wrong? And then what if I have to change something, for instance a memory chip used to store DSP or DAC settings? And then there is the aspect of USB programming if I add anything more than optical or coax input.

How would I get into DAC design from a purely analog background?
Perhaps the easiest way from a pure analog background would be to start with a chip which has as little digital content as possible. Then there's no need to have any connection with software or programming. The DAC chips that have no digital interface (other than their data input) and no on-chip digital processing are mostly older designs based on multibit architectures like PCM63, AD1862.

Some kind of reconstruction filtering is necessary with such chips, to keep the digital content down you can go with an all analog anti-imaging filter but it'll be fairly complex. I've recently started building a 9th order LC filter for reconstruction purposes - even that doesn't permit the full 20kHz bandwidth to be reproduced with a flat response (it gets to about 18kHz) at 16bit precision.

There's no need to get into programming to have a USB input, various USB-I2S boards are available where the firmware is all done for you (like XMOS) or perhaps even completely invisible (like CM103).
Last edited:
Many DAC chips (both multibit non-oversampling and sigma-delta types) can work without any need for firmware configuration and like abraxalito already wrote, there are off-the-shelf USB to I2S interface boards (XMOS, Amanero). If you are familiar with RF analog design, you know most of what you need to know to design a good PCB for such a DAC chip. It's all about keeping loop areas small and good shielding between the digital and the analog side.
Start simple, impress yourself, then step up.

In the time between different parts of my projects, I've gone from PCM5122 to PCM5242 and will be looking into the PCM5252 before long.. Mine are RPi based and they are simple to piggyback on drivers. In the not too distant future, I'll be digging deeper and will most likely be having some driver work done for me for custom performances. Recently finished a beta on my all-in-one DAC&amp and will be using the same design in a stand alone DAC chassis that includes UPS and other goodies. One feature that I require in my DAC is hardware volume, and I havent delved enough into other chips yet to see whats available due to time constraints, but soon! Some DAC are finicky and I started easy and have been satisfied for the year+ performance so far.


Edit: Added image

Last edited:
Well ideally I want to be able to tell if two chips can go together. I've seen I2S, I2C, GPIO and other protocols, and I got the impression some protocols were the same just with a different name. And then there are also bus master/slave stuff to worry about.

I2S and I2C are very different. Both are old Philips semiconductor interface standards, I think you can find the specifications of both on the internet.

I2C is a very slow two-wire open-drain interface that is mainly used to send configuration data from a microcontroller (bus master) to chips that need configuration data (bus slaves). It is also used for connecting small EEPROM memories to microcontrollers, for example to remember the frequencies of your favorite radio stations in a radio with presets.

I2S is a simple three-wire interface that is mainly used for sending stereo audio data from one chip to the next. Usually the sending chip is the bus master and the receiving chip is the bus slave, although that is not necessary.

SPI is a three-wire serial interface that, as far as I know, originally comes from Texas Instruments. It is typically used for the same things as I2C, but as it is much faster, you can send much more data over it if needed.

GPIO stands for general purpose input/output and is not a protocol at all, it's just an acronym used for digital input/output cells that you can use as you please by setting some configuration bits.
SPI (Serial Peripheral Interface) was a Motorola original interface for inter IC communication.
It is synchronous as it uses a clock, MCLK, which can be programmed for the phase(rising or fall edge) in which the data gets sent and latched for inputs. It is duplex, where the master sends and the slave simultaneously sends data back to the master.
Slaves have a slave select input for selection/enabling for a common bus to multiple devices. Basically a shift register arrangement, with a master and a slave.
MOSI (Master Out/Slave In) is the source data.
MISO (Master In/Slave Out) is the data returned to the master.
Last edited:
Is master/slave usually determined by pullup resistors?

Very often a chip that sends audio data via I2S to another chip only supports master mode, and one that only receives data from an I2S bus only supports slave mode. For example, slave mode for a DAC chip and master mode for an S/PDIF receiver with I2S output.

Interfaces that can work as both master and slave need to have some configuration bit to tell them whether to behave as a master or a slave. That bit can be programmed via I2C, SPI or pulling some pin high or low, depending the chip. For example, the I2S interfaces of a SRC4392 can be programmed to be masters or slaves via I2C or via SPI.