Hi,
Is it possible to support (maybe via firmware tweaks) multi I2S Audio channels on the "USB MULTI-FUNCTION AUDIO PLATFORM" from XMOS. I know there is "Multi Channel Audio" platform too but it won'e support other features that I need like DSD64 and DSD128 and PCM upto 384KHz.
or let me ask this: Is it possible to support DSD Audio on the "USB MULTI-CHANNEL AUDIO L16 PLATFORM" from XMOS?
If anyone has done so in past, can you please suggest/comment?
Thanks
Amninder
Multi Channel support on MFA Audio Kit Topic is solved
-
- Member++
- Posts: 30
- Joined: Mon Dec 15, 2014 9:03 pm
-
Verified
- XCore Legend
- Posts: 1164
- Joined: Thu May 27, 2010 10:08 am
The MFA platform only has a stereo DAC/ADC on it. However, there's no reason you couldn't extend it to multi channel by connecting I2S to an external DAC or ADC.
The key to extrending channle count is to find spare 1b ports. Each 1b port can give you an extra dataline for I2S - either input or output. For example, if you are not using SPDIF out, then that could be an extra I2S output to take you to 4 channels out. Likelwise, you could re-use MIDI in which is another 1b port (although you would need to ensure that the midi driver was disconnected from the line to avoid HW contention).
In the code, it is simle as changing:
PORT_SPDIF_OUT to PORT_I2S_DAC0 in the .xn file
and then changing to this in customdefines.h:
#ifndef NUM_USB_CHAN_IN
#define NUM_USB_CHAN_IN (2) /* Device to Host */
#endif
#ifndef NUM_USB_CHAN_OUT
#define NUM_USB_CHAN_OUT (4) /* Host to Device */
#endif
/* Number of IS2 chans to DAC..*/
#ifndef I2S_CHANS_DAC
#define I2S_CHANS_DAC (4)
#endif
/* Number of I2S chans from ADC */
#ifndef I2S_CHANS_ADC
#define I2S_CHANS_ADC (2)
#endif
That's pretty much it - this sort of customisation is quite easy.
The "USB MULTI-CHANNEL AUDIO L16 PLATFORM" is not suitable for DSD, unless you connect an external DAC that supports DSD.
The alternative is that you consider our new kit coming (U16 slice kit based with multichannel audio card) which will do 8in 8out. It also (unoficially) does DSD up to DSD128/stereo/out. With some work to the ref design it could potentially support 8ch DSD out since it has the CS4384 DAC on board.
The key to extrending channle count is to find spare 1b ports. Each 1b port can give you an extra dataline for I2S - either input or output. For example, if you are not using SPDIF out, then that could be an extra I2S output to take you to 4 channels out. Likelwise, you could re-use MIDI in which is another 1b port (although you would need to ensure that the midi driver was disconnected from the line to avoid HW contention).
In the code, it is simle as changing:
PORT_SPDIF_OUT to PORT_I2S_DAC0 in the .xn file
and then changing to this in customdefines.h:
#ifndef NUM_USB_CHAN_IN
#define NUM_USB_CHAN_IN (2) /* Device to Host */
#endif
#ifndef NUM_USB_CHAN_OUT
#define NUM_USB_CHAN_OUT (4) /* Host to Device */
#endif
/* Number of IS2 chans to DAC..*/
#ifndef I2S_CHANS_DAC
#define I2S_CHANS_DAC (4)
#endif
/* Number of I2S chans from ADC */
#ifndef I2S_CHANS_ADC
#define I2S_CHANS_ADC (2)
#endif
That's pretty much it - this sort of customisation is quite easy.
The "USB MULTI-CHANNEL AUDIO L16 PLATFORM" is not suitable for DSD, unless you connect an external DAC that supports DSD.
The alternative is that you consider our new kit coming (U16 slice kit based with multichannel audio card) which will do 8in 8out. It also (unoficially) does DSD up to DSD128/stereo/out. With some work to the ref design it could potentially support 8ch DSD out since it has the CS4384 DAC on board.
Engineer at XMOS