SPDIF DAC, CS8416/AD1955/ATmega8L

width:1024px;height:768+0+0px
width:800px;height:600+0+0px
width:800px;height:600+0+0px
width:800px;height:600+0+0px
Assembled DAC Exposing Exposing Exposed
width:800px;height:600+0+0px
width:800px;height:600+0+0px
width:800px;height:600+0+0px
width:800px;height:600+0+0px
Developed front Developed rev. Etching Etched
width:800px;height:600+0+0px
width:800px;height:596+0+0px
width:800px;height:600+0+0px
width:800px;height:594+0+0px
Reverse Seethru Result Result
width:800px;height:670+0+0px
width:800px;height:600+0+0px
width:800px;height:589+0+0px
width:plepx;height:iglas.jpgpxwidth:640px;height:480+0+0px
Mockup Fancy Detail Plexiglas
width:765px;height:421+0+0px
Supply PCB
 

This is an external DAC that I made to connect my PC to hi-fi stereo amp. Analog connection would be too long, about 8 meters of wire, so I decided that an external DAC is a necessity. This page is also mainly a description of PCB-making process. Some stages, like making the vias, are not pictured. This is not work-in-progress anymore, although there are no newer pictures available.

The DAC is using a CS8416 as SPDIF->I2S receiver and AD1955 for DAC. Output filters are copied from AD1955 datasheet. The outputs are single-ended, compatible to consumer stereo equipment. The chips are controlled by ATmega8L microcontroller. The latter also provides an extensive debugging interface which allows editing of all receiver and DAC registers.

I don't have equipment to measure quality of the achieved result. Subjective testing shows that it is definitely worse than Micromega Minium CD source. But, although sound degradation can be heard, it must be taken into account that digital feed is provided from a PC that does 44.1kSPS->48kSPS conversion. Another test was conducted with a BBK DVD player, but due to limited availability of the source device this test was limited and I could not make any decisions regarding possible resampling. Sound was comparable, without a clear winner.

If I was doing this same project today, I would definitely change several things and here they are: 1) Put local voltage regulators on the main board. 2) Probably ditch the uC: it's priceless for debugging, but not useful after everything is set up. 3) Recalculate the filters to be much higher than audible frequency. Micromega datasheet says that their output filters are set to 75kHz above audible range.

See the circuit (PDF). I remember that there were some minor fixes in the process, but I wasn't updating the schematic because there was nothing really dramatic, only some tweaks.

This archive contains the entire Eagle project that you can use to build your own DAC without using brain wasting too much time. Here you can find the source code.

The sources are also available on github: [sources], [hardware].

Feb 2008, why it still sounds worse than a good CD player:

  1. Long wires from the power supply. At least the regs for analog circuits should be placed as close to the opamps as possible.
  2. I run it from some anachronic SBLive! Value which has a high-impedance output, which is not really SPDIF at all. Given the long wire, it reduces noise robustness, but worst of all, inner reflections spoil the eye diagram -> bad SNR.
  3. Most sound files you play on a PC, even in uncompressed formats, originally come from CDs. CD's use 44.1kHz sample rate and soundcards tend to convert sample rates to their internal speed, this results in aliasing in time domain. At least my soundcard converts everything to 48kHz, even if it's a direct CD->SPDIF playback.
  4. Filters cutoff freq can be moved higher, allowing more air in the sound. I didn't do that.

Feel free to contact me if you want PCB layouts and firmware. The name is svofski and gm@il is .com.

ABOVE
VALIDATE