USB audio reference design DOP to Native DSD

Sub forums for various specialist XMOS applications. e.g. USB audio, motor control and robotics.
JanWW
Member
Posts: 9
Joined: Mon Jan 25, 2016 3:39 pm

USB audio reference design DOP to Native DSD

Post by JanWW »

Dear all,

I've based my code on the USB audio reference design and got the DSD64, DSD128 and DSD256 native(raw) DSD working. I also got the DOP DSD input formats running.

I would like to see my data output as raw/native DSD only. Is this already implemented in the reference firmware? Otherwise I have to convert DOP to Native by myself.

Can you please help me further?

I already tried something with these lines below;

#define NATIVE_DSD (1)
//#define OUTPUT_FORMAT_COUNT (3)
//#define NATIVE_DSD_FORMAT_NUM (3)
//#define STREAM_FORMAT_OUTPUT_3_DATAFORMAT (UAC_FORMAT_TYPEI_RAW_DATA)

Regards,
JW


User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am

Post by infiniteimprobability »

Hi - Don't fully understand the question.. By
I would like to see my data output as raw/native DSD only
do you mean data going to the DAC? If so, the ref design already does this. Native DSD outputs raw 32b words out and DoP strips off the DoP headers and reassembles into a 32b DSD serialised word..
JanWW
Member
Posts: 9
Joined: Mon Jan 25, 2016 3:39 pm

Post by JanWW »

Thanks for your answer, yes i meant the data to the DAC. I've got it running using the latest usb audio reference firmware (6.14B).
I've defined these lines below;

#define I2S_CHANS_DAC (2)
#define DSD_CHANS_DAC (2)
#define NATIVE_DSD (1)

Thanks again.
JW
JanWW
Member
Posts: 9
Joined: Mon Jan 25, 2016 3:39 pm

Post by JanWW »

I'm sorry, it's still not working... Which defines do I have to set in order to get native DSD out to the DAC with DOP input? I have no output right now with DOP input. Native DSD does work...
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am

Post by infiniteimprobability »

Hi,
DoP detection is enabled whenever DSD_CHANS_DAC != 0 (see audio.xc - DoP is completely handled down at the I2S level as you may expect).

Perhaps you are not getting DoP sent to the device properly? Any gain/attenuation etc. will destroy DoP data and headers.

Can you confirm that DoP that all volumes are maxed out?

If you play with the volume when playing back DoP, you will get very feint noise until you hit max volume when suddenly the DSD audio will suddenly play.
User avatar
Ross
XCore Expert
Posts: 966
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

DoP (DSD over PCM) vs "Native" DSD is just the way DSD data is transferred to the DAC, the DSD data remains the same in all cases.

Suggest taking a read of: http://dsd-guide.com/dop-open-standard
JanWW
Member
Posts: 9
Joined: Mon Jan 25, 2016 3:39 pm

Post by JanWW »

Thanks for the replies,

I can confirm that all gain/attenuation settings are correct, so no atenuation/gain change.
Yes Ross, I understand the difference between native DSD and DOP format.

First of all a summary of what I have working yet;

- When declared I2S_CHANS_DAC (not declared dsd_chans_dac);
* DOP input from FOOBAR player to XMOS I2S output (in DOP format)
* Native dsd not working (offcourse)

- When declared dsd_chans_dac (& I2S_CHANS_DAC) ;
* Native dsd working (on output xmos, to DAC)
* DOP input from FOOBAR player to XMOS NOT working (no data at all at XMOS output)

I would like to have a DSD only connection to the DAC, so DOP-NATIVE "conversion/ header strip off" inside xmos. Which declares do I have to use and which not? And which ports do I have to declare?
- I2S_Chans_DAC?
- native_DSD?

Thanks in advance
User avatar
Ross
XCore Expert
Posts: 966
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

Its seems like you have the code correctly built for DoP to work. So this would point to a config issue in Foobar being incorrect (since i'm not aware of any issues with the xCORE DoP implementation). What headers are you using from foobar?
JanWW
Member
Posts: 9
Joined: Mon Jan 25, 2016 3:39 pm

Post by JanWW »

Hi Ross,

The DOP in-DOP out seems to work fine, so the foobar settings should be fine.

I would like to have a DOP in - Native out setting, but can't get it to work, what are the correct defines for this application?

Thanks
JW
User avatar
Ross
XCore Expert
Posts: 966
Joined: Thu Dec 10, 2009 9:20 pm
Location: Bristol, UK

Post by Ross »

Im very confused now.. the xCore strips off the DoP headers before it sends the data to the DAC..