This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCM5242: How to implement many-channel TDM

Part Number: PCM5242
Other Parts Discussed in Thread: PCM1681, PCM1690, PCM4104

I'm creating a system that has 40 mono channels of >= 24 bits x ~4-8 KHz.  I need some signal processing and DC coupled output so the PCM5242 seems like a good fit.  I'd like to size the system for 48 or 64 channels to future proof the architecture.

I would like to have a single digital audio source distributed to 20 stereo DACs for the current requirements.

The source could be 192/384 KHz, 24/32 bits, TDM into 48/64 channels.  Rates of 192/48 = 4 KHz,  384/64 = 6 KHz, and 384/48 = 8 KHz are all usable.

I have several options for extracting the TDM channels that I can think of:

  1. Hardware demux of i2s using a programmable logic device.
    Pros: Easy on DACs, added flexibility
    Cons: Added development system/paradigm, cost + schedule.

  2. Hardware demux of LRCK using shift register.
    Pros: Easy to implement
    Cons: May not produce a compatible BCK/LRCK ratio, introduces channel phase skew

  3. PCM5242 miniDSP decimation for TDM slicing.
    Pros: Ideal solution architecturally, flexible extension of BCK_OFFSET, may unlock a "control" TDM channel
    Cons: Custom miniDSP programming, may require a "sync" TDM channel.

  4. Some built-in many-channel TDM capability I am unaware of.

Any help or experience with many-channel TDM would be appreciated.

Thanks in advance,

Nate

  • Hello Nate,

    The PCM5242 has a register that shifts the I2S signals based on your TDM configuration. I would use this option  for sending TDM signals to several devices in parallel. 

    Page 0 / Register 41   AOFS[7:0]   I2S shift , you can shift from 0 ( no shift) to 255xBCK  

    For example  if you want to read the data that is  32 bits, into 3ed channel,  then on the device that is going to be used as Channel 3, you have to set the I2S word length to 32 and then shift the data by 32x2 so it writes the data in channel  3.  Therefore  data needs to be shifted 64BCK and from DS table, the code has to be 00010000 to offset that channel/device  by 64.

    We have other devices with 8 or 4  channels that you might want to take a look at them and see if it fits your needs:

    PCM1681 24-Bit, 192-kHz Sampling, Enhanced Multilevel Delta-Sigma, Eight-Channel

    PCM1690 24-Bit, 192-kHz Sampling, Enhanced Multi-Level ΔΣ, Eight-Channel

    PCM4104: High-Performance, 24-Bit, 216kHz Sampling, Four-Channel

    Regards,

    Arash