Multiple audio signal processing

Status
Not open for further replies.

zark

New member
hello

I've already used small ADC's in the past (10 - 12 bit ).

But for a more serious application, i would need to have 6 16bit audio channels to process.
When i look around, i find some high quality audio ADC's , they all seem to use I2S, but the further i look, the more it seems like there's only 2 channels, even though they have 6 inputs
(example: http://www.ti.com/product/tlv320adc3101-q1)


I'm obviously looking in the wrong direction, could someone shed some light ? The more i look, the more it seems i'd have to either go into dedicated DSP, or use 3 teensy's each with a stereo adc ?
 
The Teensy ADCs are 16bit SAR converters with a usable resolution of 12bit in single ended and 13bit in differential mode. Thus, if you need true 16bit, you'll have to use external ADCs. Depending on the desired conversion rate, it is not forcibly needed to use one dedicated ADC per channel. Let's for example assume that you want to sample @48kHz and that the ADC can sample with 192kHz, a simple time multiplexing would allow you to sample four channels with only one ADC.
 
The Teensy ADCs are 16bit SAR converters with a usable resolution of 12bit in single ended and 13bit in differential mode. Thus, if you need true 16bit, you'll have to use external ADCs. Depending on the desired conversion rate, it is not forcibly needed to use one dedicated ADC per channel. Let's for example assume that you want to sample @48kHz and that the ADC can sample with 192kHz, a simple time multiplexing would allow you to sample four channels with only one ADC.

True.

Then afterwards in my code, i'd need to separate my audio streams, and run my analysis code on the streams from there. I'll have to evaluate how much data i need, multiply that by the amount of streams and see if the teensy has enough memory to hold the data for processing.
Thanks for the quick reply !
 
When i google for "multi-channel adc i2s", the first two links already seem promissing
http://www.nxp.com/documents/data_sheet/UDA1338H.pdf
http://www.ti.com/product/pcm3168a
Have not checked further.

From a software perspective, 3 teensy's is much easier, everything works. With these multichannel IC's be prepared to invest a significant amount of time for coding.

ah crap, i did google similar terms, but didn't find THAT one !
Reading up on tech terms. It seems the solution is "TDM"

which is basically Time Division (Or multiplexing) on I2S channel.
Basically what our friend Theremingenieur suggested !

I'm already seeing much clearer through this heavy fog !! Thanks a lot guys.

I still have to evaluate my dsp-code performance, see if the 6 channels can be processed by a single teensy3.1, else i'll go the "modular" route, and have one teensy + one adc. Might make things much easier to set-up.
 
Teensy 3.1 has a second pair of I2S receive and transmit pins. So far, I've not tried to actually use them... but it's on my list of stuff to do when I lots of extra time (like that ever happens...)

On the current audio shield rev, I did add a couple pairs of pads that can be cut apart, for the I2S RX & TX signals. The idea, which is totally untested so far, was to allow a modification to the signals so a 2nd board could be added using the other 2 signals. The pads would need to be cut apart, and wires soldered to route the signals to the other pins. There's also a set of pads to reconfigure the I2C address.

So far, I've not tried this mod, nor done any work on the software side to support it. But the idea is there, at least, for using a pair of audio shields for 4 channels in & out.

That's still short of 6 channels.

I've seen the TDM mentioned, but so far I'm not aware of any ready-to-use hardware. Maybe someone would like to make a board to try?
 
I haven't tested anything, but the reference manual for the MK20DX256 seems to indicated that it can do a 'TDM' type of I2S interface. In the SAI chapter (48), it mentions multiple times that there is a configurable number of words per frame (up to 32). This should allow you to use a single I2S data line for a given number of ADC channels instead of the normal 2 channels (L/R). It's not strictly I2S at that point, but more of a generalized multi-channel serial interface, but it seems to be designed for that.
 
Status
Not open for further replies.
Back
Top