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.

TLV320AIC3268: I2S multi-channel TDM mode

Part Number: TLV320AIC3268

Hi Ti,

We want to convert two I2S stereo(audio source is HDMI audio) audios and one line in stereo source to a single I2S TDM with multi-channel(3 stereo pairs: line in, hdmi in 1, hdmi in 2).

Please help check AIC3268 configurations. Block diagram as below:

All I2S interface are configured to 4-wire(BCLK,WCLK,DIN,DOUT)

According to AIC3268 datasheet. Using the offset programmability and the DOUT line 3-state feature.

I2S1 DOUT(from line(ADC convert)), I2S2 DOUT(from hdmi 1), I2S3 DOUT(from hdmi 2) all connect with Host CPU I2S DIN pin.

Additionally,  I2S stereo input to AIC3268 as below:

Expected I2S TDM output from AIC3268 to host CPU as below:

Is it possible for AIC3268?

Thanks a lot.

BR,

Steven

  • Hi Steven,

    TLV320AIC3268 can do most of what you would like, but I'm not sure I understand your suggested implementation. First, keep in mind the ASI buses of the AIC3268 only support up to 8 channels on DIN and DOUT. It is not possible to have 16 channels of data on a single bus. From your description it sounds like you are planning to have all of the ASI buses share a common DOUT. This is only possible if all of the buses are running synchronously with the same clocks. A better approach would be to use ASI2 and ASI3 as inputs from the SRCs, and slot these onto the ASI1 DOUT with data from the analog input and I2S input. 

    Best,

    Zak

  • Hello Zak,

    Thank for you reply.

    Let me go into more detail about hardware connection.

    "From your description it sounds like you are planning to have all of the ASI buses share a common DOUT. This is only possible if all of the buses are running synchronously with the same clocks."

    Yes, Three ASIs share a common DOUT(connected with DIN of CPU) and configured to I2S slave mode. All BCLK and WCLK are running synchronously with the same clock that provided by CPU(Three ASIs and two SRCs share BLCK and WCLK with CPU). Using different DOUT offset of each ASI to achieve TDM DOUT. For example, ASI1 DOUT offset zero for line in data, ASI2 DOUT offset 16bits for hdmi1 data, ASI2 DOUT offset 32bits for hdmi2 data.

    "A better approach would be to use ASI2 and ASI3 as inputs from the SRCs, and slot these onto the ASI1 DOUT with data from the analog input and I2S input."

    Good! It seems better. How to slot onto the ASI1 DOUT with I2S TDM format?

    Thank you again!

    BR,

    Steven

  • Hey Steven,

    Thanks for the added detail. I see what you are doing now and in the case where everything is running synchronously from the CPU clocks then your method should work well. Just remember you are limited to 8-channels on a single TDM bus. In order to route channels to other ASI ports you would have to program the mini-DSP to do this, the easiest way to do that would be to create a flow in PPS and the clocks wouldn't necessarily have to be synchronous. Given that they are though, I think it's probably easier to implement your initial approach since this only requires register writes to configure the ASI ports and doesn't require miniDSP programming.

    Best

    Zak 

  • Hi Zak,

    Thanks for your help.

    (1) Does any miniDSP components that ready to configure ASI output as TDM bus?

    I only found the Multi_Channel_Digital_In/Multi_Channel_Digital_Out component in PurePath Studio. It seems for multi-channel mode with four data lines.But there is only one data line in our CPU audio interface.

    (2) BTW, how to configure the approach that you mentioned?(use ASI2 and ASI3 as inputs from the SRCs, and slot these onto the ASI1 DOUT with data from the analog input and I2S input)

    It's more simple in hardware connection. Could you give me some suggestions?

    Thank you very much!

    BR,

    Steven

  • Hi Steven,

    I apologize for the delay on this one, there is some additional testing I need to do to verify this solution, but it should be possible. The multichannel digitial in/out component should accomplish what you are looking for, in the properties tab it can be set to 8 channels. This is routing the channels of the DSP to the I2S interface. How this is transferred will depend on how the I2S interface is set up, and in your case you will want to configure it for TDM so everything is sent over a single data line.

    In order to aggregate data from other buses, since there is not an ASRC inside the device the other buses need to run synchronously with your host interface. ASI2 and ASI3 can be configured to run with the same clocks as ASI1. I would recommend your CPU act as the master, and then ASI2 and ASI3 act as masters to the SRC running from the same clocks provided on ASI1.

    The process flow itself should be pretty simple unless you want to add mixing or signal processing inside the DSPs. Here is a simple example of what the flow would look like assuming the ASI interfaces have been set up properly.

    Best,

    Zak