Javier Valcarce's Personal Website

TSM:Portada

From JavierValcarce.Eu

You are at: Home > Hardware > TSM > Portada
Jump to: navigation, search
Tarjeta de sonido multicanal modular USB - Índice
ProyectoPortada | Materiales y ficheros de HW/SW | Pruebas | Referencias | Notas de diseño
HardwareBastidor y backplane | Hardware | Módulo CTL | Módulo AI | Módulo AO | Módulo AMP | Módulo DSP
SoftwareSoftware | Herramientas de desarrollo | TsmCtl | FW_CTL | FW_AIO | Driver ALSA para Linux


El proyecto

EN DESARROLLO...
Una tarjeta de sonido multicanal modular y expansible que se conecta al PC por un puerto USB 2.0 (480Mbps). El sistema está compuesto por varias placas de circuito impreso llamadas módulos que se conectan a un bus local

  • En cada canal de entrada (módulo AI) o de salida (módulo AO), se muestrea la señal de audio analógica a 48kHz, 24 bits
  • Antes de transferir las muestras de los distintos canales al PC se multiplexan mediante un circuito auxiliar implementado en un CPLD. En sentido inverso, el PC envía un flujo de muestras multiplexadas
  • La comunicación con el PC es a través del puerto USB y se hace en modo Isochronous (ancho de banda garantizado para tráfico de tiempo real, latencia mínima) que es lo apropiado para audio
  • Un programa en el PC recibe el flujo de muestras, las procesa y las envía de vuelta al sistema de sonido por USB, también podría grabarlas en ficheros WAV, etc.
  • El diseño es modular y expansible en el sentido de que se pueden añadir más canales de e/s fácilmente. Los distintos módulos van insertos en un chasis igual que ocurre con la instrumentación electrónica VXI basada en el bus VME/Eurocard
  • El hardware incluye, entre otras cosas, un uC Cypress FX2 con puerto USB a 480Mbps, convertidores ADC PCM1802 y DAC PCM1742 de Texas, uC ATmega8, CPLDs XC9536XL de Xilinx, de todo, vamos...

Arquitectura modular expansible

El sistema está compuesto de varias placas de circuito impreso llamados módulos. Este diseño modular tiene las siguientes ventajas:

  • facilita la fabricación ya que cada uno de estas placas es más fácil de fabricar por separado que una gran placa con todos los circuitos, sobre todo si fabricamos a sólo 2 capas/caras.
  • permite añadir fácilmente más módulos con canales de audio sin más que añadir módulos nuevos al bus del sistema (expansible), de igual forma que ocurre con la instrumentación electrónica basada en el bus GPIB (IEEE 488.1) o VME.
  • además de canales de audio, permite añadir módulos de distinto tipo en el futuro, por ejemplo MIDI, receptores S/PDIF (tx por coaxial o fibra óptica), módulos con DSPs, etc.
Módulos de la TSM

Los distintos módulos se conectan al bus del sistema (backplane) que es, simplemente, un cable plano de 40 hilos ATA/33 con varios conectores engastados[1]. Este cable, en realidad, contiene 2 buses diferentes:

  1. Un bus paralelo de alta velocidad, síncrono y de aplicación específica (no permite a los módulos iniciar la transferencia, el control está centralizado en CTL). Está controlado por el módulo CTL y se usa para transferir los datos (muestras de audio o lo que sea) a toda velocidad hacia/desde la FIFO del uC Cypress FX2 y desde ahí al PC por el enlace USB o también entre los distintos módulos
  2. Un bus serie I2C de baja velocidad (400kbps máx) en modo multi-master que sirve para enviar órdenes de control a los microcontroladores a bordo de los distintos módulos. También podría servir como mecanismo de interrupción lenta (para interrupciones esporádicas y que no requieran servicio inmediato) si algún módulo necesita atención específica por parte del control (CTL).

Tipos de módulos

Todos los módulos se apilan en un bastidor (subrack) estándar de 19 pulgadas que a su vez podría ir encajado en un armario rack estándar junto a otros instrumentos lo que representa una forma conveniente de apilar tarjetas en un espacio mínimo y con todos los cables en orden.

Módulo CTL
Contiene un uC Cypress FX2 para la comunicación con el PC por el puerto USB. Contiene la mayor parte de los circuitos de control, genera las señales del bus (síncrono a 12.288MHz) y lo arbitra, proporciona la alimentación (GND, +5V y +3.3V), etc...
Módulo AI (Audio Input)
Contiene 8 canales de entrada (4 chips ADC estéreo) y los registros de desplazamiento necesarios para leer la trama I^2S enviada por los ADC
Módulo AO (Audio Output)
Contiene 8 canales de salida (4 chips DAC estéreo) y los registros de desplazamiento necesarios para escribir la trama I^2S en los DAC
Módulo AMP
Contiene circuitos analógicos para amplificar la señal de micrófonos, pastillas, etc. Es un módulo en principio independiente y no tiene porque ir conectado al bus de sistema, salvo quizá para tomar de él la alimentación.
Módulo DSP
Contiene un DSP (C67x de Texas) y memorias SDRAM de XYZ MB para procesar la señal en tiempo real y hacer al sistema independiente de una conexión al PC. Futurible.

Esquema de direccionamiento

Cada módulo contiene registros de E/S de 16-bits conectados al bus del sistema, cada uno de ellos tiene una dirección de 6 bits que es completamente independiente de la de los otros registros del módulo. Este esquema de direccionamiento se llama direccionamiento lógico[2].

Número máximo de módulos conectables al bus

El bus de direcciones (bus A) es de 6 bits por lo que CTL puede direccionar hasta 64 registros de E/S. Por ejemplo: cada módulo AI o AO tiene 4 registros, i.e, se pueden instalar hasta 64/4=16 módulos (AI o AO) lo que hace un total de 128 canales (de entrada o de salida) que generarían un tráfico ofrecido al enlace USB de 128*48000*24 = 147.456Mbps.


En la práctica, el número máximo de registros que se pueden conectar al bus viene dado por la capacidad parásita de este, que aumenta en unos ~40pF con cada nuevo registro conectado. Aunque el bus A permitiría direccionar hasta 64 de ellos, en la práctica, 20 registros suponen ya una carga muy importante (unos 800pF) para un transmisor CMOS de alta corriente (evelado slew-rate) y un reloj de 12.288MHz. El límite exacto no puede ser estimado de forma teórica porque depende también de la capacidad parásita del cable plano y de las pistas de circuito impreso, hay que comprobarlo empíricamente, en planta.


  1. Lo más corto posible para no disminuir demasiado el ancho de banda y con la señal de reloj rodeada de hilos de tierra para disminuir en lo posible la diafonía. La frecuencia de reloj es 12.288MHz
  2. Existe otro esquema llamado direccionamiento geográfico que asigna una dirección al módulo en el que se encuentra el registro y luego una dirección interna para localizar a ese registro dentro del módulo. Por ejemplo: si la dirección es de 6 bits, podría ser M3M2M1M0R1R0 donde M3M2M1M0 es el selector del módulo y R1R0 es el selector del registro dentro de ese módulo