Optical and Coaxial sample rates Topic is solved

Technical discussions related to any XMOS development kit or reference design. Eg XK-1A, sliceKIT, etc.
Active Member
Posts: 42
Joined: Tue Oct 15, 2019 10:36 am

Optical and Coaxial sample rates

Postby Zed1970 » Thu Feb 13, 2020 4:47 pm


Hopefully basic questions to answer! Using the xCore-200 as a reference design we're trying to ascertain what are the highest sample rates we can use over optical and coaxial outputs. Our design has only optical and coaxial outputs.
1) Can these two outputs handle all the data rates that the I2S channels can i.e 44.1 KHz right through to 384 KHz ( and higher if possible )?
2) Can the optical and coaxial interfaces pass DSD or is this only possible using the I2S outputs?

Update: A DAC like the Hugo2 claims to handle 192Khz optically and 786KHz ( if split into 2x 384Khz streams ) over coax. Does'nt answer DSD though..

Any additional information regarding optical / SPDIF would be appreciated.

View Solution
Active Member
Posts: 50
Joined: Mon Jan 08, 2018 4:14 pm

Postby fabriceo » Thu Feb 13, 2020 9:07 pm

Hi Zed
you can have a look in the spdif_tx module, either from the app_usb or directly on GitHub here:
https://github.com/xmos/lib_spdif/blob/ ... ransmit.xc
what you can see is that there are in fact 3 different program for handling 48, 96 and 192khz, and each is optimized for preparing the biphase data and then updating the port with 8 or 16 bits of data. the program prepare 128bits (biphase) for 2x24 bits samples.

each port can be clocked up to 50mhz (49152000) so the spdif biphase could output 384ks/sec but the problem is the time needed to prepare the bits. at minimum for 8 bits this is a maximum of 32 score instructions... not that much.
I would not bet that the standard program can easily support this. but tweaking it and using assembly and "dual issue" mode on XS2 architecture, maybe you can do it :) thats a nice challenge for an internship :)

regarding DSD, you could send it as DoP frame without any problem just feeding the spdif task with the proper FA/05 for bits 16-23 and splitting 32bits chunks in 2 samples. you probably have to tweak some data preparation in the so called deliver() function before sending them to spdif, but thats the easiest part.
let us know your findings !
Active Member
Posts: 42
Joined: Tue Oct 15, 2019 10:36 am

Postby Zed1970 » Fri Feb 14, 2020 9:20 am

Hi Fabriceo,

Appreciate the advice. So in all, no native DSD over SPDIF and according to spiftransmit.xc a capped speed of 192K for optical and coaxial. Within this forum I've seen coders using #define MAX_FREQ (384000) instead of 192000, am I correct to assume that this increase would only be usable on I2S as spdiftransmit.xc caps things at 192?


Who is online

Users browsing this forum: No registered users and 6 guests