customizing xcore firmware for 16ch input

If you have a simple question and just want an answer.
Post Reply
bschiett
Newbie
Posts: 1
Joined: Sun Jul 23, 2017 5:47 pm

customizing xcore firmware for 16ch input

Post by bschiett »

Hi all

I am interested in using the xcore 200 in a new product design. We need 16 channels of audio input @ 96 khz/24bit, and 8 channels of output at 192khz/32bit.

We'll connect the xcore to our ARM SoC via high speed USB 2.0 host ports. We are running linux on the SoC. We already have a DAC connected, so if the xcore does not support 192khz/32bit output we could just use it to connect the 16 channels of audio input (the SoC onboard I2S only supports stereo input but 8 channel output).

We don't need to connect the xcore via USB to windows or mac osx, only linux is necessary.

I'm new to the xcore platform and would like to understand what firmware already exists and how I get started to customize the firmware if necessary? Is there a source code repository I can look at for USB2.0 audio class multichannel I2S I can look at? I have experience writing C and C++ software and some experience writing linux alsa drivers.

Thanks
B


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

Post by infiniteimprobability »

Hi, welcome to the forum.

Firstly the software is available to downoad (you need to register/get approval first) from here: https://www.xmos.com/support/software/uac2
While derived from a repo, it's currently private

Secondly, the docs are available here:
https://www.xmos.com/download/private/s ... rc1%29.pdf

Section 5.6 (just a few pages) tells you about customising via customdefines.h. Changing sample rates, bit depths and channel count is pretty straightforward.

We don't officially test/support linux but of course most modern distros support UAC1 and UAC2 very well and we have plenty of customers using them. I had 10i/10o @ 192KHz working well on a RPI3 recently.

Finally, the ref design assumes a single clock speed. You seem to want different rates at input/output. It is possible to modify the reference design to do this but it does involve quite a lot of work and we don't have any nice app notes / published starting points for this..

The other option (run all at 192KHz) wont work either as 16ch @ 24b @ 192000Hz = 73.728Mbps which exceeds a single iso endpoint.

So that does leave the option of 2 x USB devices, which is more expensive but low software effort...
Post Reply