I have two digital audio devices that will not be synchronized to each other and that I want to exchange digital audio back and forth between. Into and out of each device there are 4 lines of I2S TDM4 serial audio (16x16). Each device will be the master clock generator on their own separate boards. I'm thinking I can pull this off using 2 ADAU1446's? I'm not 100% familiar with ASRC's but it looks like this is the way to go. The DSP's can be synchronized to  the devices in anyway that allows for this to work. If I understand the spec. sheet correctly the flow would be as follows.

1) The 4 input TDM4 lines are sent to through the Automatic Input Channel Assignment section and assigned to 16 of the total 24 individual input channels.

2)Then based off of registers setting  the FARM  inputs each channel pair into the 8x2 ASRC block

3) I can make the Output Rate selection pairs synchronize to one LRCLK/BLCK clock pair from the receiving device?

4) Each serial output selection pair will come directly from the ASRC

5) Again my register settings will setup the Automatic Output Channel Assignments to put the output pairs back into TDM4 format

All of this above will be repeated with another ADAU1446 but the audio will be headed in the opposite direction.

If any of  what I typed above is correct my questions are:

1) If the audio comes directly into and out of the ASRC's block will the audio be available to the DSP core for Sigma Studio manipulation?

2) What tells the ASRC what pins contain the rate of the input audio?

Attached is what I think would be the schematic for this setup and I also sketched by hand a overall connection diagram.

Your help with this would be much appreciated.
  • If I understand your system correctly you have the following going on:

    "Device1"(rateX) <-> DSPs(rateY) <-> "Device2"(rateZ)

    You will need 2x stereo ASRC for each stereo channel of audio you are sending if you plan to run any of that audio in to the DSP core(32x stereo ASRC total).  If routing into the DSP core I think you will need to go from rateX -> rateY -> rateZ or rateZ -> rateY -> rateX for audio going in the other direction.  You are going to need more ADAU1446s or you will need to try to synchronize the DSPs to one of the "Devices".

    You might be able to get away with just routing audio without touching the DSP core but I haven't tried routing in that manor before.  It looks like you can set each ASRC output rate to any of the 12 clock domains as well as the DSP rate (registers 0xE088 to 0xE08F).

  • I can use your suggestion to sync a DSP to a device. So DSP 1 sync to Device 2 and DSP 2 sync to Device 1. That way the ASRC's are used only on the output channels. The input channels  go straight to the DSP core, the DSP outputs to the DSP-to-ASRC pairs on the ASRC inputs (page 50 of spec sheet). The ASRC target sample rate will be set to the LRCK/BCLK pair of the receiving device. How about that?

  • 0
    •  Analog Employees 
    on May 21, 2013 1:18 AM

    Hi Bill,

    First, the most important thing to mention here is that the ADAU1446 has no ASRCs. Its sister product, the ADAU1442, has 16 channels of ASRCs that can sync to up to 8 target rates. Another sister product, the ADAU1445, has 16 channels of ASRCs that can sync to up to 2 target rates. In your application, the ADAU1445 might be sufficient, but the ADAU1442 is the most flexible. The ADAU1446, which contains no ASRCs, will not be appropriate.

    You need ASRCs every time you want to change sample rates (or if you're going between devices with different MCLK sources). It looks like in your system, DSP1 and DSP2 are synchronized to the same MCLK, but device 1 and device 2 are running off completely separate MCLKs. This means that there are a total of 3 clock domains in your system. Let's call them X, Y, and Z, like Natan suggested.

    This means any time you go from X to Y, you need an ASRC, and vice versa.

    Every time you go from Y to Z, you need an ASRC, and vice versa.

    Based on your diagram, it looks like you have 16 channels coming from the X domain (device 1) to the Y domain (DSP1), and you have 16 channels going back from the Y domain (DSP2) to the X domain (device 1). Likewise, you have 16 channels coming from the Z domain (device 2) to the Y domain (DSP2), and you have 16 channels going back from the Y domain (DSP1) to the Z domain (device 2).

    So, if you want to use the DSP cores to process the audio...

    That's a total of 16 + 16 + 16 + 16 = 64 sample rate conversions. Since each ADAU1445 only has 16 ASRCs, that means you'll need a total of 4 ADAU1445s, not 2. Each DSP will take in 8 channels and convert them to the DSP core sample rate, process them, and then convert them again to output as 8 channels in another sample rate.

    However, if you just want to use the ASRCs, and have no need for DSP processing, you don't ever have to convert the sample rate to the DSP sample rate (Y domain). You can go directly from X to Z and from Z back to X. This means that each ADAU1445 will be able to handle 16 channels in and out, not just 8. In that case, you'll only need two ADAU1445s, not 4.

    Let me know if that makes sense.