Getting started with USB Audio interfaces

New to XMOS and XCore? Get started here.
New User
Posts: 3
Joined: Fri Aug 14, 2020 4:47 pm

Getting started with USB Audio interfaces

Post by DrewLX »

Hi all,

I feel like I'm going around in circles slightly, so I'm posting this in the hope I might get some steer in the right direction...

I want to make a thing, with 4x USB sockets on. Each one would connect to a different laptop/phone. I'm then interfacing that with a module over i2s - where the other module is the master. I need 2 channels at 24 bit/48 KHz in and out per USB port.

Should I be looking to do that with Four individual XMOS products? Or would it be smarter to use one bigger chip and then some extra USB PHY?

I'm working under the assumption that it would be ideal for 4x XUF208 series chips. However this is where I get slightly stuck - there seems to be zero development kits for 200 series silicon. So I'm thinking do I need to buy some chips, throw one on a TQFP64 breakout board, so I can get it into some breadboard? Is JTAG/xTAG the best way to program this? I'm only really used to programming chips over ICSP with Cortex M0 etc - but for the i2s side the XMOS seems to be a clear winner. Or can I program over the USB?

The USB Audio reference documentation is very good, but all seems to point at outdated chips, although the example code I've loaded in xTimeComposer looks sensible enough for me to play around with.
User avatar
XCore Legend
Posts: 1913
Joined: Thu Jun 10, 2010 11:43 am

Post by mon2 »

Hi. Not an audio developer but can share some comments on the topic:

1) Yes, most logical approach is to deploy individual XMOS CPU controllers with a local USB interface on each. The main reason being that the USB IP will demand a specific bandwidth (CPU utilization) to support the 480 Mbps data rates. This along with your audio IP will make it much easier for you to consider each leg as a stand-alone project.

2) The XUF series offer USB and internal flash memory. XU will be USB but requires external flash memory to boot your firmware.

3) For each leg of the design, do apply the equivalent of the 20 pin IDC header (but is ok for you to shrink to any custom format you prefer) to perhaps pogo pin contacts, etc. See for example, TAG-CONNECT designs.

4) The XTAG3 tool from XMOS is the XMOS toolchain supporting JTAG tool. You must offer such a compatible interface to debug and/or flash the local firmware for each XMOS CPU.

5) There are assorted kits for the XCORE-200 devices that are suitable for your interest. Just a lot of chaos in the documentation and information in general. The XS1 = first generation of XMOS CPU and they are still in production due to costs, etc. The current generation is the XCORE-200 series with an enhanced instruction set and other features including embedded Ethernet and USB PHY.

Review here for the available kits:

select the AUDIO TAB.

Moving forward there is another line of CPU that will be released but will be later this year / early next and are for supporting edge node AI processing.

6) There are many proven IPs for the audio world available from XMOS. These are without cost. You will have to review the license model for the audio device driver for the Windows platform from THESYCON. Better to start there so you are fully aware of the expense involved before you can launch your audio widget.

See here:

Hope this helps.
New User
Posts: 3
Joined: Fri Aug 14, 2020 4:47 pm

Post by DrewLX »

Hey, thanks for your speedy and very informative reply!

So for simplicity sake, I'll go with the XUF208. I think to get started I'll make a quick batch of PCBs almost as a breakout board but with the required support components, a 20pin IDC so I can program with the XTAG tool. For a later production board I'd certainly use one of the TAG-CONNECT products, they're very clever and I've not seen them before!

The XUF208 data sheet gives enough information to extrapolate a design, but is there an example complete circuit showing USB support components, crystal, power management etc? Basically the kind of thing I'd normally look for in a development kit.

On the driver side of things, I only need stereo in and out, so presumably I'm better sticking with UAC1 to avoid the need for drivers? The product needs to be as plug and play as possible.
User avatar
XCore Expert
Posts: 580
Joined: Thu Nov 26, 2015 11:47 pm

Post by akp »

if you only need two channels of 48/24 then UAC1 will work with the minimum fuss.