Hide navigation sidebar
Hide table of contents sidebar
Skip to content
Back to top
Toggle table of contents sidebar

# ADAT receive

The codebase supports a single ADAT receiver that can receive up to eight channels of audio at a sample rate of 44.1kHz or 48kHz over an optical interface. Higher rates are supported with a reduced number of samples via S/MUX (‘sample multiplexing’). Using S/MUX, the ADAT receiver can receive four channels at 88.2 or 96 kHz or two channels at 176.4 or 192 kHz.

In order to provide ADAT functionality `lib_xua` uses lib_adat.

Basic configuration of ADAT receive functionality is achieved with the defines in Table 20.

Table 20 ADAT RX defines
Define | Description | Default
--- | --- | ---
`XUA_ADAT_RX_EN` | Enable ADAT receive | `0` (Disabled)
`ADAT_RX_INDEX` | Start channel index of ADAT RX channels | N/A (must be defined by the application)

The codebase expects the ADAT receive port to be defined in the application XN file as `PORT_ADAT_IN`. This must be a 1-bit port, for example:

    <Port Location="XS1_PORT_1O"  Name="PORT_ADAT_IN"/>

When ADAT receive is enabled the codebase expects to either drive a synchronisation signal to an external Cirrus Logic CS2100 device or use lib_sw_pll (xcore.ai only) for generating a master clock that is synchronised to the ADAT digital stream.

The programmer should ensure the defines in Table 21 are set appropriately:

Table 21 Reference clock location
Define | Description | Default
--- | --- | ---
`PLL_REF_TILE` | Tile location of reference signal to CS2100 device | `AUDIO_IO_TILE`

The codebase expects this reference signal port to be defined in the application XN file as `PORT_PLL_REF`. This may be a port of any bit-width, however, connection to bit[0] is assumed:

    <Port Location="XS1_PORT_1A"  Name="PORT_PLL_REF"/>

Configuration of the external CS2100 device (typically via I²C) is beyond the scope of this document.