Open Source Implementation DSD over PCM

XCore Project reviews, ideas, videos and proposals.
Posts: 14
Joined: Thu Sep 27, 2012 6:41 pm

Open Source Implementation DSD over PCM

Post by ghmfranken »

Version: 0.1
Status: Under development
License: BSD
Download: /files/project_builds/

This project is an effort to implement the DSD over PCM (DoP) open standard (both version 1.0 and 1.1) building on the XMOS software reference (3.3) . The DoP standard describes how a DSD stream can be encapsulated in PCM frames. A white paper describing the standard can be found here ( ... rd_1v1.pdf).

I am an audio enthusiast - with basic programming skills – and this is my first XMOS project. With this XCore project I hope to get the project one step further and at the same time make a modest contribution to the community. Note that an excellent XMOS implementation of the DoP standard can be found at XCore. However, the source code is not available and this does not meet my requirement to be able to customize the XMOS firmware. Furthermore this project is not yet fully functional and I could use some help from the community to take the project one step further.
Project Status

The project is still under development and is not yet fully functional:

The code to detect a DSD stream in PCM frames is implemented and successfully tested.
The code to extract the individual DSD bits out of an PCM encapsulated DSD stream is implemented.
The next challenge is to customize the reference software in order to correcly output the DSD bits and get a lock on the external DAC. Help on this is very much appreciated. If I am not mistaken this involves writing a function unsigned deliver_dsd(...) similar to the existing unsigned deliver(..) function for I2S output in the audio.xc file in the reference software


DSD over PCM is implemented as a DSP thread between the decouple and audio thread (See XMOS L1 USB Audio DSP Application note on how to integrate the DSP source code with the reference software). In the DSP thread audio is buffered to detect 32 consecutive DSD markers as recommended in the whitepaper. Note that this introduces an additional latency of 180 usec.
Test setup

For testing purposes I use the following equipment (see also Images and diagrams section):

ES9018 2 channel Evaluation Board (e.g.
XMOS USB Audio 2.0 Reference Design ( ... rence#tabs)
Male pin headers to be soldered on the XMOS board “test points” (e.g.
Male/Female jump wires (e.g.
Tiny breadboard (e.g.
Playback software that supports the DoP standard (e.g.

In order to connect the XMOS board to the ES9018 DAC use the following mapping (XMOS - ES9018) from HifiDuino:


Note that the inputs of the ES9018 DAC must be remapped (register listing 14 of the ES9018 chip). I use a tiny breadboard to hook up all the wires. This setup supports switching from I2S to DSD on the fly.

Posts: 1
Joined: Fri Mar 22, 2013 2:22 pm

Post by amzet »


I've just learnt about your project and would be interested to dig more into this. Besides the fact that I do not own any of the above hw it may be worth the invest. I'm a comp. prefessional with programming skills and I'm an audiophile. I've recently evaluated the Mytek 192 DSD DAC which comes with the Sabre32. Since then I'm infected and willing to dive into it.
Don't know if I can be of any help for you...

Posts: 14
Joined: Thu Sep 27, 2012 6:41 pm

Post by ghmfranken »

@amzet: Thanks for offering your support! Much appreciated. I send you a PM.
Experienced Member
Posts: 98
Joined: Fri Jul 05, 2013 5:55 pm

Post by mmar »

thanks for your open source, i mean your one mistake is onebit out from dsp. Better is send to audio all 16 bits in one .