- Ejemplo practico y educativo del uso de una vieja PC como DSP -
El primer modo digital con el que trabaje, allá por el año 2000, fue PSK y desde ese momento quede maravillado por su funcionamiento e intrigado en saber como, con la tarjeta de sonido de la PC, era posible decodificar este tipo de transmisión.
Esta curiosidad me llevo a investigar sobre el tema por lo que no tarde mucho en toparme con el Procesamiento Digital de Señales (DSP) cuyas técnicas son la clave para que la magia del PSK (y otros modos digitales) sea posible.
Dado que el mundo DSP es muy amplio (y complejo por cierto) considere que tenia que buscar la forma practica que me ayudara a fijar los conocimientos adquiridos durante la lectura de libros y artículos relacionados con este tema. Para lograrlo, decidí construir, en diferentes etapas, mis propias herramientas de hardware y software con las funciones básicas necesarias para realizar en forma practica el procesamiento de señales.
Por esta razón emprendí el diseño y construcción de mi propia tarjeta de adquisición de datos y utilizar una vieja PC Pentium 133 como procesador. La tarjeta en cuestión debía constar básicamente de al menos un conversor analógico-digital (ADC), un conversor digital-analógico (DAC) y sus filtros activos asociados ademas de la lógica adicional necesaria para que los conversores estén disponibles en el mapa de I/O de la PC.
Con el tiempo y una vez que comencé a experimentar el procesamiento de señales en cuadratura incorpore el segundo conversor digital-analógico para poder así producir diferentes tipos de modulación
Esta tarjeta, que bautice ADAC, se instala en un slot ISA de 8 o 16bits de la PC y utiliza 2 interrupciones, IRQ7 y IRQ2. La primera corresponde al temporizador de muestras y la segunda al conversor ADC que informa a través de esta cuando finalizo un ciclo de conversión.
Los registros del ADC y ambos DACs están disponibles en el espacio de de direcciones de I/O del procesados y mas precisamente dentro del rango reservado para tarjetas experimentales.
Dirección Dispositivo
0x300 ADC
0x308 DAC-1
0x310 DAC-2
Las siguientes imágenes contienen los esquemáticos de cada sección de la tarjeta ADAC.
En primer lugar esta la lógica clásica de interface con el bus ISA. El mismo consta de los drivers correspondiente al bus de datos (U1) y los del bus de direcciones (U2 y U3). U4 y U5 son los decodificadores de direcciones que generan las señales de selección de chip (CS) en las salidas Y0 a Y2 de U5. Las compuertas de los integrados U6 y U7 generan una señal interna ( CRD-SEL) que habilita el driver del bus de datos solo cuando el bus de direcciones contiene una dirección de I/O dentro del rango 0x300 - 0x31F.
El circuito del ADC esta basado en un ADC0820. Este conversor de 8bits posee una interface digital que le permite interactuar directamente con un microprocesador y una
sección track-hold que le permite operar con señales que cambian rápidamente ( < 100mV/µs ).
El filtro antialiasing (U8 y componentes asociados) son del tipo Butterworth pasa bajos que constan de 2 etapas implementadas con la topologia "Sallen-Key".
Estos filtros poseen una pendiente 24dB por octava en su banda de transición y una respuesta plana en su banda de paso lo que los hace indicados esta función.
Las ecuaciones para el calculo de sus componentes fueron extraídas del libro Operational Amplifiers for Everyone de Texas Instruments (ver Referencias al pie de pagina).
El siguiente gráfico representa la respuesta en frecuencia de los filtros activos los que calcule originalmente con una frecuencia de corte de 3KHz asociada
a la frecuencia máxima admitida en un modulador de BLU. Los valores obtenidos para representar la respuesta fueron medidos en la practica sobre el filtro ya armado.
Como conversor digital-analógico utilice el DAC0830. Este integrado es también compatible con microprocesadores lo que simplifica su interconexión con el bus ISA. Los filtros pasa bajos de reconstrucción son iguales a los descritos anteriormente.
El siguiente circuito es el encargado de generar el temporizador de muestreo. El mismo consta de un oscilador a cristal (U10) de 32,768KHz y dos divisores de frecuendia
implementados con dos Flip-Flop tipo D (U15). El primer divisor nos permite generar una frecuencia de muestreo de 16KHz y el segundo de 8KHz seleccionables mediante J1.
La señal de muestreo dispara la interrupción IRQ7 del procesador que es servida dentro programa para iniciar en el ADC la secuencia de conversión. Una vez que el ADC finaliza
la conversion, este activa la IRQ2 informando al programa que una nueva muestra esta disponible para ser procesada.
Mas información sobre la programación de esta tarjeta y el procesamiento de señales en esta pagina: ADAC - Programación y ejemplos.
Las siguientes fotos muestran el ADAC construido.. El circuito fue armado sobre un tarjeta prototipo de 15x10cm a la que se le adoso el conector de borde extraído de una vieja tarjeta ISA de 16bits.
El cableado del circuito fue hecho punto a punto con cable del tipo denominado de "wire-wrap".
Referencias:
Operational Amplifiers for Everyone http://www.ti.com/lit/an/slod006b/slod006b.pdf
Hoja de datos DAC0830 http://www.ti.com/lit/ds/symlink/dac0830.pdf
Hola de datos ADC0820 http://www.ti.com/lit/ds/symlink/adc0820-n.pdf
ADC-DAC Glosario http://www.maxim-ic.com/app-notes/index.mvp/id/641