ASUBIO DAC: Receptor S/PDIF y ASRCAquí esta el esquemático de la parte correspondiente al SRC4392:

Se usaran los siguientes bloques funcionales del SRC4392:
- Puerto A. Se configura como una entrada, encargada de recibir la señal I2S enviada por el PCM2707.
- Puerto B. Se configura como una salida, encargada de enviar la correspondiente señal digital I2S a los DACs, que se encargaran de su conversión a formato analógico.
- DIR (Digital Interface Receiver). Encargado de seleccionar una de las cuatro entradas S/PDIF para posteriormente recuperar los datos de audio que se encuentran embebidos en la misma.
- ASRC (Asynchronous Sample Rate Converter). Encargado de realizar el upsampling correspondiente mediante la comparación de la frecuencia de sampleo de entrada con la frecuencia de sampleo de salida.
Este integrado estará controlado por el uC AtMega 328P utilizando para ello un bus I2C.
1. PUERTOS SERIE
1.1. PUERTO AEl puerto A se configura en modo Esclavo (Slave mode), de esta manera LRCKA y BCKA son entradas. Por otra parte se usará la entrada SDINA dejando la salida SDOUTA sin conectar.
Las salidas LRCK, BCK y DOUT del PCM2707 irán conectadas respectivamente a las entradas LRCKA, BCKA y SDINA del SRC4392.
1.2. PUERTO BEl puerto B se configura en modo Maestro (Master mode), de esta manera LRCKB y BCKB son salidas. Por otra parte se usará la salida SDOUTB dejando la entrada SDINB sin conectar.
Las salidas LRCKB, BCKB y SDOUTB del SRC4392 irán conectadas respectivamente a las entradas LRCLK, BCLK y DIN de los dos WM8741.
2. DIRSerá el encargado de seleccionar una de:
- Multiplexar las cuatro entradas S/PDIF para seleccionar una de ellas.
- Recuperar los datos embebidos en la señal S/PDIF seleccionada. Mediante el uso de un decodificador.
- Recuperar la señal de reloj embebida en la señal S/PDIF. Mediante el uso un PLL (Phase locked Loop). Esta señal de reloj recuperada por el DIR es la señal de reloj RXCKO que en nuestra aplicación no será de utilidad.

Este bloque funcional habrá que configurarlo para que utilice la señal MCLK como reloj de referencia.
En lo que respecta a las cuatro interfaces S/PDIF de entrada al SRC4392, se han configurado siguiendo las páginas 43 y 44 del datasheet, donde viene todo explicado de una manera muy completa y visual. Cualquier recomendación que mejore, si es posible, lo descrito en el datasheet será bienvenida.
3. ASRCLos relojes XO2 y XO3 serán los encargados de generar la señal MCLKSRC que será nuestro reloj de referencia para todo el sistema. Por lo tanto esta señal irá conectada a:
- Entrada MCLK del SRC4392.
- Entradas MCLK de los WM8741.
Por tanto a partir de ahora cuando nos refiramos al MCLK estaremos hablando de la señal MCLKSRC.
Según el upsampling deseado, activaremos uno u otro reloj mediante sus correspondientes entradas de ENABLE.
- XO2 (24.576 MHz) activo. Permitirá upsampling a 48 kHz (24.576/512), 96 kHz (24.576/256) y 192 kHz (24.576/128).
- XO3 (22.5792 MHz) activo. Permitirá upsampling a 44.1 kHz (22.5792/512), 88.2 kHz (22.5792/256) y 176.4 kHz (22.5792/128).
Las entrada de ENABLE de cada uno de los relojes serán controladas mediante las señales SMCLK1 y SMCLK2 generadas por las salidas PC2 (pin 25) y PC3 (pin 26) del uC AtMega 328P.
Antes de entrar en detalles de configuración, aclarar que el SRC se basa en la comparación de fsin (frecuencia de sampleo que tenemos a la entrada)=LRCKA y fsout (frecuencia de sampleo que queremos a la salida)=LRCKB, estas dos frecuencias junto con un reloj de referencia que en nuestro caso será MCLK (recordar que a esta entrada de reloj le corresponde la señal MCLKSRC generada por uno de los dos relojes externos)servirán para estimar los parámetros necesarios para realizar el correspondiente upsampling de fsin a fsout.

Al trabajar en este modo habrá que configurar el puerto de salida (PUERTO B) tal y como sigue:
- Seleccionar MCLK como “Master clock”, de este reloj se derivarán LRCKB y BCKB (64xLRCKB).
- Seleccionar SRC como nuestra fuente de datos. De esta manera estaremos mandando al puerto de salida (puerto B) los datos procesados por el SRC (Sample Rate Converter).
- Seleccionar el divisor de reloj correspondiente al upsampling que se quiere realizar (MCLKSRC/512, MCLKSRC/256 o MCLKSRC/128). Por ejemplo si queremos hacer upsampling a 96 kHz, tendremos que activar el reloj XO2 (24.576 MHz) mediante la señal SMCLK1 y seleccionar un divisor de 256, ya que de esta manera 24576000/256=96kHz.
- Seleccionar como formato de salida 24bits I2S, para ello BFMT2=0, BFMT1= 0 y BFMT0=1 (ver registro de control 0x05)
CONFIGURACIÓN DEL DIR Habrá que configurar el SRC de la siguiente manera:
- Seleccionar el DIR como el origen de los datos que queremos procesar.
- Seleccionar el MCLK como reloj de referencia.
CONFIGURACIÓN USB Habrá que configurar el SRC de la siguiente manera:
- Seleccionar el PUERTO A como el origen de los datos que queremos procesar.
- Seleccionar el MCLK como reloj de referencia.
4. ALIMENTACIÓN Y DECOUPLINGAGND (pin 10), DGND1 (pin 16), DGND2 (pin 30), DGND3 (pin 43) y BGND (pin 44) estarán directamente conectadas a tierra.
VCC (pin 9), VDD18 (pin 17), VDD33 (pin 33) y VIO (pin 42) usan el esquema de decoupling recomendado por el datasheet pero además las alimentaciones se filtran mediante “ferrite beads” L3, L4, L5 y L6 tal y como se explica en el siguiente documento:
Supply decoupling.Por otra parte BCK, LRCK y DOUT tienen una pequeña resistencia en serie de 47 ohm, tal y como se explica también en el anterior documento.
5. OTROS DETALLESLas señales SDA1 y SCL1 del bus I2c se conectan a las entradas SDA (pin 22) y SCL (pin 20) del SRC4392 respectivamente. Las entradas A1 y A0 se conectan a un jumper ( J4) esto nos permitirá configurar la dirección del dispositivo dentro del bus I2C.
La salida de interrupción INT (pin 23) del SRC4392 necesita una resistencia de pull-up de 10k, tal y como indica el datasheet. Esta salida será leída por el uC que actuará en consecuencia, esto aun tengo que estudiarlo un poco más…
La salida RXCKO (señal de reloj recuperada por el DIR) y la entrada RXCKI se dejarán sin conectar.
Bueno pues creo que no me dejo nada, espero haberme explicado bien. Y como siempre digo cualquier duda, sugerencia o error ya sabéis… que para eso está el hilo.
Lo próximo en venir, será toda la parte dedicada a los WM8741…
Un saludo