ADAT Receive#

The ADAT receive component receives up to eight channels of audio at a sample rate of 44.1kHz or 48kHz. The API for calling the receiver functions is described in the documentation for lib_adat.

The component outputs 32 bits words split into nine word frames. The frames are laid out in the following manner:

  • Control byte

  • Channel 0 sample

  • Channel 1 sample

  • Channel 2 sample

  • Channel 3 sample

  • Channel 4 sample

  • Channel 5 sample

  • Channel 6 sample

  • Channel 7 sample

Example of code show how to read the output of the ADAT component is shown below:

control = inuint(oChan);

for(int i = 0; i < 8; i++)
{
    sample[i] = inuint(oChan);
}

Samples are 24-bit values contained in the lower 24 bits of the word.

The control word comprises four control bits in bits [11..8] and the value 0b00000001 in bits [7..0]. This control word enables synchronization at a higher level, in that on the channel a single odd word is always read followed by eight words of data.

Integration#

Since the ADAT is a digital stream the devices master clock must synchronised to it. This is typically achieved with an external fractional-n clock multiplier.

The ADAT receive function communicates with the clockGen component which passes audio data onto the audio driver and handles locking to the ADAT clock source if required.