Selecting a processor for 5.1 USB Audio

New to XMOS and XCore? Get started here.
Post Reply
Ram
Junior Member
Posts: 7
Joined: Fri Oct 27, 2017 6:59 am

Selecting a processor for 5.1 USB Audio

Post by Ram »

Hello and greetings!
I am new to the XMOS suite. I'm trying to select a processor for building a 5.1channel USB interface and have been going through the literature on the website. My application will use 24 bit audio at 48kHz sampling rate, and budgets are tight so I need something which does the job without too many bells and whistles.
I can see that the Multichannel Audio Platform uses a XE216-512-TQ128 chip; however I have a very basic question here - are all the XCORE-200 XU/USB processors capable of handing 6 audio channels (not worrying about performance per se), and therefore the configuration depends only on the firmware programming? I looked at XCORE-HiRes which boasts of multichannel support but it appears only a 2-channel version is available on Digikey.
Thanks for any advice or pointers!
Best - Ram


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

Post by Ross »

XCORE-200 XU is what you want.
Ram
Junior Member
Posts: 7
Joined: Fri Oct 27, 2017 6:59 am

Post by Ram »

Hi Ross,
Thanks for your reply. Of the big list of XCORE-200 processors there, would the smaller ones also be able to do 6-channel audio? So if I choose XU208 or XUF208 because they are smaller packages, and I do not need much RAM, would the firmware allow it to decode 5.1 channel USB? Would I get TDM outputs, or a set of 3 I2S outputs?
Best - Ram
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am
Contact:

Post by infiniteimprobability »

This document is very helpful for port allocation planning.
https://www.xmos.com/published/xcore-20 ... es-portmap


From the doc (columns S to V) you can see the XU208 leaves 9 x 1b ports after USB is turned on.

For USB audio to I2S you need the following 1b ports:

MCLK
LRCLK
BCLK
1 data line per 2 channels per direction

For USB to TDM you need:

MCLK
FCLK
SCLK
1 data line per 8 channels per direction

You also need:
4 x 1b ports for SPI flash

or

2 x 1b ports for QSPI flash (data is handled on 4b port)

Luckily I2C can be handled on a 4b port so any config can be done without consuming 1b ports.

Let's assume using QSPI (or device with integrated flash which internally is QSPI). So you have:

9 - 3 - 2 = 4 data lines available for audio. So that will easily support 6 channels output with a spare 1b port for I2S or 3 data lines if you choose TDM. You could also re-use the QSPI QSCLK after boot time as an output (eg. BCLK) if you are careful with board layout, which claws back another 1b port.

Be careful though - this is a straight n channel USB to I2S bridge which transports bit perfect samples across. There is no 'decode' of multichannel - it is assumed that is done on the host.

You're right - not much RAM is needed. SHould be less than 64kB for this app. The smallest RAM variant for xCORE-200 is 128kB so no need to worry about that.

Also this app note may be of interest too and talks about considerations when porting USB audio to the single-tile XU208:
http://www.xcore.com/viewtopic.php?f=37 ... 288#p29288
Ram
Junior Member
Posts: 7
Joined: Fri Oct 27, 2017 6:59 am

Post by Ram »

Thanks, @infiniteimprobability - that is very detailed and useful info!
Post Reply