A few months back, a new project appeared on diyaudio.com. It was a DIY R-2R ladder DAC. Its creator, Soren, was clear from the beginning that it was to be a commercial product and if there was enough demand it would make it to production. There was a lot of interest, so it was announced that the green light was given for the board to be mass-produced.
Three different versions were to be made available, the difference being the tolerance of the R-2R resistors. There would be a high-grade version, with 0,01% resistors (dam1021-01), a midrange version (0,02%, dam1021-02), and a basic version (0,05%, dam1021-05).
In theory, different resistor tolerances would mean different amounts of THD. According to the manufacturer, these are the measured performance figures of the three versions:
|THD @ -1db||0.005%||0.008%||0.015%|
|THD @ -60dB||0.03%||0.05%||0.09%|
Update (Nov 2015): Soekris has released a Rev 2 of the board, with improved Vref power supplies and a better muting circuit. It is available in just two resistor grades, a 0.01%/0.02% mix and 0.05%.
Update (Feb 2016): Soekris has released a Rev 3 of the board, with further improved Vref power supplies (more capacitance). It is available only with 0.02% resistors.
Update (Jul 2018): I wrote a F.A.Q. for the dam1021: http://www.dimdim.gr/2018/07/soekris-dam1021-frequently-asked-questions-resources/
Being a long-time Delta Sigma DAC guy, I wanted to try a “pure” Sign Magnitude R-2R ladder DAC so I pre-ordered one of the midrange variety. Soon the boards were finished and tested, the firmware too, and shipping began. A week later I received my board.
These are the “brains” of the board. The Xilinx Spartan-6 FPGA chip:
The board has two outputs. A single ended one, taken directly after the R-2R network, with no DC offset and no caps in series with the signal (output at J7 terminal) and a balanced one, using op-amps to convert from SE to balanced (terminals J6 & J8). The single ended output is at 1.4V RMS with a Zout of 625Ω, while the balanced output is at 4.0V RMS with a Zout of 20Ω.
Soren has supplied a mechanical drawing of the board, detailing the various headers:
This board is very simple to set up. What you need (at the very least) is power, a digital source, and some sort of output terminals. If you run a balanced setup, Soekris has you covered since they supply a pair of PCB mount Neutrik XLR connectors.
Regarding power, you need a transformer with two secondaries at 7 to 8 volts AC. The transformer should have a rating of at least 5VA.
You may also use a DC power supply with an output of +/-7.5 to +/-15 Volts. It’s a good idea to run it at +/-12V so as to not stress the on-board capacitors and LDOs. I am currently powering it with a Salas BiB bipolar supply (more details later on) with very good (audible) results.
When it comes to source handling, the DAC has three inputs:
1) I2S (electrically isolated)
2) Balanced for coaxial s/pdif
3) TTL for a Toslink receiver
They are located on the J3 connector:
The I2S input is electrically isolated, so you should provide it with 3.3VDC of isolated power. This power may be supplied by your USB to I2S interface (like an Amanero) or any other power supply, as long as it is isolated from the dam1021’s power supplies. This means a second transformer (or a third secondary winding of the main transformer) and the necessary components for rectification, filtering, regulation, etc.
The board features either automatic input selection (with signal detection) or manual selection.
To use manual selection you either use the “INP SLCT0” and “INP SLCT1” pins on J3 or issue commands through the serial port.
|Input||INP SLCT0||INP SLCT1|
|S/PDIF 1 (Coax)||N-C||GND|
|S/PDIF 2 (Toslink)||GND||N-C|
N-C means “No Connection”, a.k.a. “floating”
Soren has also provided a schematic for the s/pdif inputs:
I added a few notes of my own for reference.
It is a pretty simple circuit. Regarding the coax s/pdif connection, you will need a pulse transformer for isolation (the Murata DA101C is a good choice, being readily available and reasonably priced) and a few passive components. You will notice that the circuit requires +1.2V. That is necessary in order to bias the FPGA’s LVDS input pins. You can get that voltage from J2, although I would prefer to use a separate power supply, since the 1.2V on J2 are supplied by a switch mode regulator.
Hooking up a Toslink s/pdif receiver is even easier, since all you need is the actual receiver (I recommend the Toshiba TORX147) plus a 0.1μF capacitor.
I started out with building the above circuit on a perfboard, but ended up designing a custom PCB that supports:
- One coaxial s/pdif input, galvanically isolated.
- Two Toslink inputs.
- A mux chip to switch between the Toslink inputs.
- A 1.2V power supply for biasing the coax input.
- A 3.3V power supply for the Toslink inputs and their mux.
- A USB to RS-232 bridge circuit, to accommodate connecting the DAM to a computer for firmware updates and control.
You can read more about it in its own page.
The board has a serial port for firmware upgrades and control. It is located on J10 (non-isolated) and J3 (isolated). If you intend to use the isolated port, you will need to supply 3.3V to the “ISO +3.3V” pin of J3. Also note that the isolated port became enabled with the v0.99 of the firmware.
Regarding volume control, it may be controlled by connecting a 10K pot to the relevant pins on J3 (left pin to GND, middle to VOLUME_POT, right pin to +3.3V). Alternatively, the volume can be controlled via commands sent through the serial port.
I made a post detailing the firmware update procedure. You may find it here.
I also made a little video demonstrating how the board handles switching between different sampling rates, both with 0.8 and 0.9 firmware. You can see what the serial console outputs while the changes are being made.
Be sure to watch it in full screen and at 1080p in order to make out the text.
I tested with sampling rates up to 352.8KHz.
Playback chain is Windows Laptop -> Amanero -> DAM1021 -> SE output to preamp.
Following the introduction of the DAC, a number of mainly minor bugs had appeared and also a number of new features had been requested by the DIY community. Almost all of the requests have been fulfilled by Soren, the creator of the DAC, with the release of the v0.99 firmware.
One of the more important enhancements of the new firmware is the locking speed. The dam now locks much faster to incoming signals, so fast that it’s near instantaneous:
The new firmware also allows up to 4 reconstruction filters to be loaded at the same time and to be switched on-the-fly by commands sent through the serial port. The person responsible for making most of the better filters may have left diyaudio.com but he has started a blog filled with very interesting info on filters, mods, etc. At the moment (23/08/2015) the SOTA filter is this one: http://www.moredamfilters.info/node/24
More details regarding the bug fixes and enhancement brought on by the v0.99 firmware can be found here: http://www.dimdim.gr/2015/08/soekris-dam1021-first-major-firmware-update/
Since the new firmware fixed the communication problems that I had with my Arduino, I resumed work on the ArDAM1021 project and have released a fully functional piece of code. Among other things, it supports switching between the 4 filters via remote control.
I have also implemented a “lite” version of the code, which runs on more compact hardware (an Arduino Nano) and uses a small 0.96-1.3″ OLED screen.
I am now using a bipolar Salas BiB at +/-12V as a power supply for the dam and a Salas Reflektor-D as a power supply for the DIYINHK XMOS USB interface that I am using.
This is the BoM for the +/-12V power supplies:
|PCB Part||Notes||Value||Supplier||Part no.|
|D111, D112, D113, D114||MUR860 (or smaller..)||eBay|
|C102||6.8uF/100V MKT||local market|
|C104||Zobel||10uF/100V EVOX MMK||eBay|
|C105||Nichicon KW 35volts 6800uF 20%||Mouser||647-UKW1V682MRD|
|R101||Metal Film Resistors – Through Hole 2watts 4.22ohms 1%||Mouser||71-CPF24.221%T1|
|R103||1.8K metal film||local market|
|R105||Pot||5K trimmer||local market|
|D105||Red 1.9V LED||minikit|
|D106||Red 1.9V LED||minikit|
|PCB Part||Notes||Value||Supplier||Part no.|
|D211, D212, D213, D214||MUR860 (or smaller..)||eBay|
|C202||6.8uF/100V MKT||local market|
|C204||Zobel||10uF/100V EVOX MMK||eBay|
|C205||Nichicon KW 35volts 6800uF 20%||Mouser||647-UKW1V682MRD|
|R201||Metal Film Resistors – Through Hole 2watts 4.22ohms 1%||Mouser||71-CPF24.221%T1|
|R203||1.8K metal film||local market|
|R205||Pot||5K trimmer||local market|
|D205||Red 1.9V LED||minikit|
|D206||Red 1.9V LED||minikit|
I decided to go for about 70mA of excess current on the positive supply and a bit more on the negative.
Following an interesting discussion on Vref voltage ripple, on July 17 Soren posted his official “Vref mod” for the dam1021: http://www.diyaudio.com/forums/vendors-bazaar/259488-reference-dac-module-discrete-r-2r-sign-magnitude-24-bit-384-khz-311.html#post4392832
He is suggesting that a number of resistors and capacitors be “piggybacked” by extra components, in order to improve the ripple of the Vref buffer. In fact the new batch of dam1021 boards (Rev. 2) have this mod built-in. Note that the proposed 47uF X5R capacitors are actually 0805 and not 0603. These are the parts that need improvement:
I implemented a slightly different version of the mod on my Soekris. You can read all about it here: http://www.dimdim.gr/2015/09/soekris-dam1021-vref-mod/
I will update this page as I make progress in the build.