How many logical cores can I use in the USB Audio reference Topic is solved

If you have a simple question and just want an answer.
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am

How many logical cores can I use in the USB Audio reference

Post by infiniteimprobability »

I have am using the XMOS USB Audio reference design with SPDIF output enabled. The tools report that I am using 6 cores (5 for the core USB to I2S function and one additional for SPDIF out).

I would like to add further processing to the design. Which device can I use and why?



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

Post by infiniteimprobability »

Short answer:

On single tile designs (typically stereo), you have one spare logical core, unless you switch on either MIDI or SPDIF output, when you have no spare logical cores.

On dual tile designs (typically multi-channel), you have lots of spare cores. Depending on configuration and device size (assume a U16 in this case) you can have up to 9 spare logical cores, or as few as 3 with everything turned on (digital input/output, mixer, midi etc.).

Longer answer:

USB Audio 2.0 uses high speed USB 2.0 (480Mbps). This uses a software component from XMOS called XUD, which handles the USB transactions. It requires a minimum of 80MIPS to operate and meet timing. This means on a 500MHZ device, the maximum number of logical cores you can have running is 6. 500 / 6 = 83.33MIPS for the tile that contains USB. 

This is the reason why a XS1-U6A-64 is often referred to and used in designs. Effectively an XS1-U8A-64 running 6 cores is the same as an XS1-U6A-64 because they are pin compatible and both a 500MIPS tile.

The base reference design (USB to I2S) requires 5 cores. 4 of these must be on the USB tile (which is physically connected to the USB PHY).

On the base reference design this means you have one spare 83.33MIPS core available.

So if you need a spare logical core to run other stuff, but also need SPDIF, you could migrate up to a XS1-U8A-128. This is a dual tile device with 2 x 4 logical core 500MHz tiles. The split of tasks on cores would be:

Tile 0 : XUD, Buffer, Decouple & Endpoint zero

Tile 1: Audio, SPDIF output & 2 x 125MIPS spare cores for to run your other stuff like DSP or control code..