Post Go back to editing

ADAU1966A I2S Multiplexing


        I have a special need now .

        I need to make a multi-channel audio product .

        I want to know how many analog audio channels can I output if I input one channel  I2S to adau1966a. (for example ,DSDATA1 input)

        Because I want to get multichannel audio, but I don't know what to do now,

        (1)  The first way is to turn all the I2S into multi-channel, but I don't know how to do it. 

        (2)  The second  Looking for a DAC with single I2S and multiple analog audio 

        I want to be able to control the on-off operation of each path independently.

        Could the experts of ADI please give me a good proposal?   I would appreciate it if you could help me.


  • Hello terryyuan,

    I will first define my terminology,

    I2S is a somewhat standard serial format where two channels of audio is sent over one SDATA line during one sample period. 

    TDM, (Time Domain Multiplexed) is a format where multiple channels of data can be sent over one SDATA line during one sample period.

    TDM not as standard in its details as I2S but our parts are flexible enough to handle most variations. Generally, you append "TDM" with the number of channels it has per sample period. So TDM8 has eight channels and TDM16 has sixteen channels etc.

    The ADAU1966A has eight SDATA inputs. So you can send to it eight I2S signals to be able to send out 16 channels of audio with two channels per SDATA input.

    If you use TDM4 then you only need to use the first four SDATA inputs to reach all 16 DAC outputs.

    If you use TDM8 then you only needs DSDATA1 and DSDATA2 pins to get signal to all 16 outputs. (Note that in this part we use DSDATA instead of SDATA, it means the same thing.

    If you use TDM16 then all 16 DAC output signals will be taken off of DSDATA1. All the other DSDATA pins will do nothing.

    The register settings need to be set to properly route the data from the DSDATAx pins to the correct DACs. 

    There are individual volume and mote registers for each channel of the DAC. So you can mute any channel by changing a setting in a register. 

    What the part cannot do is route data from one channel to another channel internally. It only takes the data from the DSATA pin it is assigned to and no others. So it is not possible to take one channel of audio and send it out of all 16 channels. This part is intended to be connected to a DSP and the DSP will have to send the audio to each channel. 

    One thing you can do is externally route the same I2S signal to all eight DSDATA pins and then the same two audio channels will be sent out on the eight stereo pairs of DACs. We do this on the evaluation board where you can take the SPDIF input if the evaluation board and send that signal to all eight inputs of the DAC. We use a buffer to do it. You can see this detailed in the user guide where there is a schematic in the guide. 

    So are you using a DSP? 

    How many channels do you want to send to how many outputs? Is it one channel or two channels of input to go to 16 channels of DAC output?

    Dave T

  • Hi Dave

      Could  I design according to 8416xx in page 13 of ug-564.pdf. Removing those Switch and infixx related inputs.


Reply Children
  • Hello terryyuan,

    TDM is designed for full range audio input. So there is not compromise for using TDM. 

    The TDM data is assembled inside the DSP so that is where you assign the data to a specific channel in the TDM stream. Look at table 44 in the ADAU1452 datasheet for details. 

    I can see by your schematic that you only sent one serial output port to the DAC. You can set that port to send out a TDM16 signal but I think it is best for you to use two TDM8 data lines. 

    The next issue is that I am not sure how you plan on configuring the DAC? Do you have a system controller? If you do not then you can use the Standalone mode. This is explained in the datasheet, you will have to set this up in hardware if you choose to use this mode. 

    So connect a second serial output port over to DSDATA2 of the DAC. You do not have to send the additional clocks. Then you can drive the part with two TDM8 data lines. This can handle higher sample rates (up to 96kHz)  and it is easier to have good signal integrity. If you need to go up to 192kHz then you will need to use all four ports of the ADAU1452 and I am not sure where the first one is being used for?

    I suggest the serial port of the DAC be set to be a slave for the clocks. Have the DSP be the master. This is best. 

    Dave T

  • Hi Dave:

            Thank you very much ! i can learn more every time i communicate with you.

            Maybe I misunderstood TDM before. I think it is not suitable to transmit non voice audio streams. It seems that it is not the case after listening to your explanation.

             now I am using a MCU to control the ADAU1966A,and then you can see the design picture. I am using one channel I2S to ADAU1452.,output Two channel I2S . One channel I2s of ADAU1452 output coming into ADAU1966A.

             If I use I2S, can I use the following figure to divide eight ways? I am referring to adau1966a  DEMO board.

             Because when I design adau1966, they are all input by I2S by default. Although I know TDM is better, I still want to know if the following scheme is OK?



  • Hello terryyuan,

    Yes, you certainly can distribute the I2S as shown. 

    It is usually not a good idea to add capacitance to ground on the clock and data lines. C168, C169... can cause some issues with the waveform and the rise times. So I would not stuff those capacitors unless you find you need them.

    I like having individual control of each output from within the DSP but if using only two channels of output and splitting them to go to all 16 outputs works for your application then I guess it is fine. It is your choice. 

    Dave T.