Codificacion Audio Spdif

16
UNIVERSIDAD DEL CAUCA PROGRAMA DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES MATERIA: CIRCUITOS DIGITALES I LABORATORIO CIRCUITOS SECUENCIALES PROFESOR: ING. FULVIO VIVAS. ESTUDIANTES: JOSEPH CAMILO MARCILLO JHON FREDY TRUJILLO POPAYAN, 29 DE MAYO DE 2013 CODIFICACION SPDIF

Transcript of Codificacion Audio Spdif

UNIVERSIDAD DEL CAUCA

PROGRAMA DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES

MATERIA:

CIRCUITOS DIGITALES I

LABORATORIO CIRCUITOS SECUENCIALES

PROFESOR: ING. FULVIO VIVAS.

ESTUDIANTES: JOSEPH CAMILO MARCILLO

JHON FREDY TRUJILLO

POPAYAN, 29 DE MAYO DE 2013

CODIFICACION SPDIF

Formato S/PDIF

El estándar S/PDIF (Sony/Philips Digital Interface, o abreviado SPDIF ) es un formato digital de transferencia de datos de audio. Es un estándar internacional conocido como "IEC-958 tipo II", que define tanto las especificaciones del hardware (características de las conexiones físicas) como el protocolo de transferencia de datos (codificación de 16 a 24 bits). El estándar S/PDIF se puede considerar la versión de gama baja de la interfaz profesional AES/EBU, a la que se le agregan algunas funciones de ahorro de energía.S/PDIF se utiliza para almacenar sonido digitalmente en medios tales como DAT (Digital Audio Tape) o para manipularlo con dispositivos de manipulación de audio. La ventaja principal de S/PDIF reside en su capacidad para transferir sonidos entre dos dispositivos de audio digitales sin utilizar una conexión analógica que reduciría la calidad.

Sin embargo, una señal de audio S/PDIF codificada no sufre atenuación ni distorsión y se puede transferir sin pérdidas!

Características

S/PDIF se utiliza para codificar datos de sonidos estéreo o multicanal (AC3, DTS, MPEG2, etc.)

El estándar S/PDIF admite los siguientes índices de muestreo:

44,1 Khz. de un CD

48 Khz. de una cinta DAT

32 Khz. de DSR

Conectores

El estándar S/PDIF permite los siguientes métodos de conexión:

Cable asimétrico coaxial con una resistencia de 75 Ohms y conectores RCA. La distancia máxima recomendada para el cableado es de quince metros.

Cable de fibra óptica (1 mm de fibra plástica) con una conexión Toslink (Toshiba Link por Toshiba). Los datos se transfieren con el mismo formato, pero con señales de luces visibles emitidas por un LED (diodo emisor de luz) rojo. Teniendo en cuenta el deterioro de la señal óptica, el cable óptico no debe exceder los 10 m de largo.

Cable de fibra óptica con un mini-jack (o mini conector) de 3,5 mm. El mini-jack es idéntico a un enchufe normal mono audio (3,5 mm de diámetro), excepto que contiene en la punta una lente que le permite transmitir datos a través de un cable de fibra óptica.

En la práctica, la mayoría de los dispositivos (como tarjetas de sonido, reproductores de CD y DVD, amplificadores 5.1, etc.) vienen con un enchufe RCA (CINCH).

Para el análisis y posterior diseño del sistema a construir, se utilizó toda la temática que abarca el uso de flip flops como dispositivos de almacenamiento y/o registros, además de ser utilizados también como divisores de frecuencia. También se utilizó un multiplexor de una línea de selección, dos entradas y una salida cuya referencia es 74157, y cuyo diseño en compuertas se muestra a continuación:

A continuación se muestra una breve descripción de los flip- flops utilizados:

Flip-Flop J-KEl "flip-flop" J-K, es el más versátil de los flip-flops básicos. Tiene el carácter de seguimiento de entrada del flip-flop D sincronizado, pero tiene dos entradas, denominadas tradicionalmente J y K. Si J y K son diferentes, la salida Q toma el valor de J durante la subida del siguiente pulso de sincronismo.

Si J y K son ambos bajo, entonces no se produce cambio alguno. Si J y K son ambos alto, entonces en la siguiente subida de clock la salida cambiará de estado. Puede realizar las funciones del flip-flop set/reset y tiene la ventaja de que no hay estados ambiguos. Puede actuar también como un flip-flop T para conseguir la acción de permutación en la salida, si se conectan entre sí las entradas J y K. Esta aplicación de permutar el estado, encuentra un uso extensivo en los contadores binarios.

El Flip-Flop DEl "flip-flop" tipo D, sigue a la entrada, haciendo transiciones que coinciden con las de la entrada. El término "D", significa dato; este "flip-flop" almacena el valor que está en la línea de datos. Se puede considerar como una celda básica de memoria. Un "flip-flop" D, se puede hacer con un "flip-flop" "set/reset", uniendo la salida set (estado alto) con la salida reset (estado bajo), a través de un inversor. El resultado se puede sincronizar.

La manera en la cual diseñamos la solución fue, primero dividiendo el diseño total en dos partes, parte codificadora y parte decodificadora.

Para el codificador tenemos las siguientes condiciones.

Cuando empieza un bit, la línea cambia, esto es, si estaba en 0 se pone en 1 y viceversa

Si el dato a transmitir es un 0, la línea permanece en el estado durante dos ciclos.

Si el dato a trasmitir es un 1 la línea cambia también al principio del segundo ciclo.

Esto se puede ver mejor en el siguiente diagrama de tiempo

Para lograr la codificación se planteó visualizar la salida en función de la señal de reloj, pero, dependiendo de como es el bit a transmitir, se va a mostrar en la salida un 0 o un 10-01. Usando lo flancos de subida de la señal de reloj se generan cambios de estado en un flip flop J K, cuyas entradas j y k estarán siempre en uno. Esto con el fin de generar los cambios de estado en la salida. Para transmitir un 0 necesitaremos solo un cambio de estado, y que este se mantenga durante tres ciclos. Para trasmitir un 1 necesitaremos dos flancos de subida, esto con el fin de generar los dos cambios de estado que necesitamos al trasmitir un uno, esto durante tres ciclos de reloj. Para obtener dichos cambios de estado usaremos un multiplexor, el cual según sea la entrada Din me deje pasar, para un estado la señal de reloj dividida para que cada tres ciclos me genere solamente un flanco de subida y para el otro estado me deje pasar la señal de reloj común y corriente. Esto es

Para el divisor de frecuencia usamos flip flops J K conectados en serie y con valores J y K siempre 1. La salida estará negada para obtener la forma de onda deseada, como se muestra a continuación.

El circuito codificador al final luce de la siguiente manera.

La lógica usada funciona, lo cual fue concluido de las simulaciones hechas con Quartus las cuales se muestran a continuación.

Como se puede ver la señal de salida BMC cumple con el requerimiento del transmisor. Cabe destacar la existencia de un pequeño retraso de la salida, pero ese se debe al retraso que genera cada uno de los elementos dentro del circuito.

También se probó la simulación para una entrada un poco diferente a la planteada en los requerimientos, esto con el fin de ver como el sistema de codificación funciona para cualquier tipo de señal en la entrada.

Sin importar la forma de la señal, esta siempre cumple con los requerimientos del protocolo de codificación.

Ahora para el decodificador se planteó lo siguiente:

Se pudo observar que la señal de entrada codificada seria de la forma vista en la anterior simulación. Como podemos ver el bit que guarda cada ciclo de la señal dada por el codificador depende de la suma de los valores lógicos que toma la señal dentro de tres ciclos de la señal de reloj. Esto es; dentro de tres ciclos de la señal de reloj las posibles combinaciones de la señal BMC son 11, 10, 01, 00. Cuando los valores de los estados son diferentes (como 10) el bit codificado fue un 1, por ende en la salida se me debe mostrar un 1

Al final el circuito luce de la siguiente manera.

Como podemos ver, la señal de entrada y salida cumplen con los requerimientos como se ve en la siguiente simulación.

Como se muestra en la hoja de requerimiento el primer bit puede tomar cualquier valor por ende la señal de salida es igual a la entrada, luego de pasar por el proceso de codificación y decodificación.

CAMBIOS REALIZADOS AL MONTAJE DEL CIRCUITO.

Con las dudas resueltas en la asesoría dada por nuestro profesor proseguimos a hacer las correcciones concernientes.

En el codificador de la señal, la salida funciona correctamente con la entrada Din de forma ideal. Pero el problema radica en la obtención de la señal Din. Con esto en mente procedimos a implementar la señal de entrada Din con un registro paralelo- salida serie. La señal de reloj que alimenta el registro paralelo salida serie debe ser la indicada para que cada bit a transmitir dure tres ciclos de reloj. Teniendo en cuenta esto, instalamos un divisor de frecuencia a la señal de reloj y procedemos a alimentar el registro antes mencionado. Lo anterior se mostrara en el siguiente diagrama de bloques.

Visto de una manera esquemática tenemos lo siguiente

Donde la línea A va conectada a la señal de reloj CLK.

Como siguiente problema a solucionar nos trasladamos a la parte del decodificador. En primer lugar teníamos un problema en la salida, ya que como pudimos ver en la simulaciones previas daba la impresión que la señal de la salida estaba adelantada con respecto a la entrada, lo cual era un absurdo. El problema se daba por una mala apreciación de la señal de reloj que debía alimentar el registro de la entrada BMC.

La señal de reloj que usamos anteriormente me generaba un flanco de subida en aquellos lugares donde la información a guardar era incorrecta. Entonces al eliminar el divisor de frecuencia en la entrada clock del decodificador se generó la señal de reloj deseada.

Ahora la lógica usada para saber si el mensaje codificado era un 1 o un 0 debíamos guardar la información guardada en BMC cada tres ciclos de reloj de la señal de entrada de la siguiente manera.

A B SAL0 0 00 1 11 0 11 1 0

Entonces con el registro funcionando de manera correcta procedimos a implementar una compuerta XOR, la cual tome como entrada los dos bits a guardar por el registro. Pero debemos tener en cuenta que todo valor esta prefijado en 0. Al no tener algún tipo de habilitador en al XOR esta estará siempre funcionando. Generando que la salida en primera instancia se de un 0 en alguno de los dos bits, por ende se obtiene una salida errónea. Por lo cual el tramo de señal correcto se dará solo cuando la segunda mitad del flanco de BMC llegue al registro, y obtenga los dos estados correctos de información. Lo que se quiere con esto es generar en la salida de la compuerta XOR un registro el cual sea capaz de guardar solo el tramo de información correcta y guardarlo la cantidad de ciclos correcto hasta el próximo tramo correcto de información. Lo anterior se muestra en el siguiente esquema de funciones de reloj.

Como se puede observar la señal de reloj de la XOR no corresponde al mensaje enviado, pero gracias al registro usado con la señal de reloj vista en la imagen, somos capaces de tomas aquellos tramos con la información correcta y dar una salida decodificada con la infomacion enviada

Viéndolo desde una manera esquemática se tiene.

Viéndolo de manera circuital tenemos.

PLAN DE PRUEBAS

Para las pruebas en FPGA, usaremos un osciloscopio para ver la forma de las señales de onda enviadas, codificada y recibidas por nuestro circuito. Para la entrada usaremos algunos de los bitswitch de la FPGA. 4 de ellos serán usados para la palabra de 4 bits a transmitir, uno de ellos será usado para las activaciones del SHIFTLOAD del registro entrada paralelo salida serie y con ello obtendremos la entrada del sistema. A continuación se muestran las simulaciones las cuales muestran el correcto funcionamiento del circuito.

CONCLUSION

El problema a solucionar radica en la configuración correcta de le señal de reloj. Esto con el fin de eliminar el retraso tan enrome que se tiene, debido a una mala sincronización. Dicho error no se ha encontrado todavía pero se espera para el día de la sustentación haberlo solucionado.

La parte más complicada en si del proyecto fue entender el mismo. Saber que es lo que se nos pide y ser capaz de hacer un esquema del mismo.