Tarjeta digitalizadora de video desarrollada utilizando FPGA

Anuncio
Tarjeta digitalizadora de video desarrollada utilizando FPGA
Raúl Acosta, Gabriel Eirea, Sergio Louro
Resumen
Se ha desarrollado una tarjeta para el bus ISA capaz de digitalizar información de video. Esta tarjeta permite al usuario adquirir un cuadro de una señal de video monocromático y transferirla a la memoria de una PC. En imágenes con poco contraste, se puede seleccionar una ventana en la información de luminancia que es amplificada y presentada al conversor A/D ocupando todo el rango de adquisición, optimizando de esta manera el proceso de cuantificación. Cada cuadro es almacenado en una memoria SRAM dentro de la tarjeta y luego pasada a la memoria de la PC mediante DMA. El bloque de control se ha implementado en una FPGA. La tarjeta fue enteramente desarrollada en el Instituto de Ingeniería Eléctrica de la Facultad de Ingeniería (Universidad de la República, Uruguay), resultando su desempeño comparable al de otras tarjetas comerciales.
I.
Introducción
En el marco de un proyecto de fin de carrera para Ingeniero Electricista, en la Facultad de Ingeniería (Universidad de la República, Uruguay), se realizó el desarrollo de esta tarjeta adquisidora de video, con la finalidad de atender una necesidad del Grupo de Imágenes del Instituto de Ingeniería Eléctrica (IIE) de dicha Facultad. Para este Grupo, ciertas imágenes que eran adquiridas con tarjetas comerciales, no satisfacían los requerimientos de calidad que eran necesarios. Tal era el caso de, por ejemplo, las imágenes provenientes de microscopios electrónicos donde tejidos neuronales exhibían un contraste muy pobre, resultando entonces una imagen digitalizada en la que la mayor parte de los niveles de cuantificación no eran utilizados. Vale decir que, para tales imágenes, la resolución efectiva de conversión análogo­
digital era de menos bits que los que la tarjeta permitía.
Para resolver dicho problema, se planteó la necesidad de procesar la señal de luminancia en forma analógica, es decir previo a la digitalización, y de acuerdo a los comandos dados por el usuario desde el programa. Este procesamiento consiste en la amplificación y el desplazamiento adecuados de la señal de luminancia, para que la ventana que se desea adquirir (que incluye las tonalidades de gris que interesan) ocupe todo el rango de cuantificación del conversor A/D.
El objetivo inicial era adquirir un cuadro, es decir una fotografía, de la señal de video. Se debían soportar tanto las normas de 625 líneas y 25 cuadros por segundo (compatibles con PAL) como las de 525 líneas y 30 cuadros por segundo (compatibles con NTSC).
Se debió desarrollar tanto el hardware de la tarjeta como el software que hiciera posible esta adquisición. En el caso del hardware, debieron afrontarse problemas relacionados con el uso de tecnologías nunca antes utilizadas en el IIE, como ser el uso de una FPGA de gran porte, la tecnología de montaje superficial y el diseño de circuitos impresos de elevada complejidad. El proyecto comenzó en octubre de 1995 y terminó en agosto de 1997, obteniéndose un producto terminado que cumplía con los requerimientos planteados inicialmente.
En el próximo capítulo se presentan las características generales del diseño y una descripción a nivel de bloques tanto del hardware como del software. A continuación, en el capítulo III se describe con más detalle el diseño de la etapa de control, basado en una FPGA. El capítulo IV explica el proceso de construcción y prueba de la tarjeta. Finalmente, en el capítulo V se exponen las principales conclusiones y las posibles mejoras para futuros desarrollos.
II.
Descripción general del diseño
Hardware
El diseño del hardware se realizó en base a los bloques de la figura 1.
a) Etapa acondicionadora de señal Tiene como cometido llevar la señal de video a niveles de tensión adecuados para su posterior digitalización, de acuerdo a el rango de tonalidades de gris que haya sido seleccionada por el usuario. En esta etapa también se realiza el filtrado necesario previo al muestreo de la señal; dicho filtro cumple con las exigencias de la Recomendación 601­2 del CCIR.
La selección del rango de tonalidades de gris a cuantificar se hace en base a un amplificador de ganancia variable, de manera de llevar dicho rango a un valor de 2 Vpp, que es el ancho de la ventana de conversión del A/D. Posteriormente se suma una tensión continua de valor adecuado, para llevar el rango a coincidir con la ventana de 1,6 V a 3,6 V que utiliza el conversor A/D. En ambos casos los voltajes de referencia provienen de la Etapa de control.
Las características del filtro, dadas por la Rec.601­2, son bastante exigentes e hicieron necesario recurrir a un filtro de Legendre de orden 8. El diseño se realizó en base a 4 etapas colocadas en cascada, de orden 2 cada una, lo cual determinó que el ajuste de su respuesta frecuencial fuera muy difícil, a la hora de construir físicamente este filtro.
El ruido total introducido por esta etapa analógica, depende de la ganancia del amplificador variable. Con los componentes elegidos, este ruido es despreciable frente al ruido de cuantificación para ganancias de hasta 18 (es decir para la adquisición de rangos de gris 18 veces más pequeñas que el rango total de la señal de luminancia).
b) Etapa adquisidora
Es la encargada de muestrear la señal de video a una frecuencia de 13,5 MHz y codificarla en 10 bits. La elección de la frecuencia de muestreo se realizó de acuerdo a la Recomendación antes mencionada; esta frecuencia determina un muestreo ortogonal para las dos normas de interés (625x25 y 525x30), además de cumplir con el teorema de muestreo.
Para la definición de la ventana de conversión se utilizaron componentes de referencia de tensión muy precisos.
c) Etapa de memoria
En ella se almacena temporalmente la imagen adquirida, previo al envío de la información a la memoria de la PC mediante DMA. Está compuesta por memoria estática con la capacidad y velocidad suficientes como para almacenar un cuadro de video completamente.
Durante la adquisición del cuadro, la información es almacenada en esta memoria. Una vez finalizado el cuadro, se inicia el DMA y los datos se transfieren de la memoria al bus ISA a través de la Etapa de control.
d) Etapa separadora de sincronismo
Esta etapa obtiene, a partir de la señal de video compuesto, las señales de sincronismo de campo video
Etapa
acondicionadora
de señal
Etapa
adquisidora
Etapa de
memoria
Etapa de control
Etapa
separadora de
sincronismo
Etapa
generadora de
base de tiempos
bus ISA
Figura 1 ­ Diagrama en bloques del hardware
(sincronismo vertical) y de línea (sincronismo horizontal). dicha imagen en un archivo para su posterior procesamiento por medio de otras aplicaciones.
Se ha utilizado un separador de sincronismo monolítico, de muy buenas prestaciones. Adicionalmente, esta etapa entrega una salida de sincronismo compuesto, para sincronizar esta tarjeta con algún otro dispositivo externo.
Las funciones incorporadas permiten:
e) Etapa generadora de la base de tiempos
Proporciona la señal de reloj de 13,5 MHz. Esta señal es estable y está en fase con el sincronismo horizontal, garantizando el muestreo ortogonal.
Para lograr la sincronización entre el reloj y la señal de sincronismo horizontal, se recurrió a un PLL configurado como multiplicador de frecuencia. En dicha configuración, la salida del VCO se divide por un número N y se inyecta en la entrada del comparador de fase, junto con la señal de referencia (en nuestro caso, el sincronismo horizontal). La división de frecuencia se hace dentro de la FPGA de la Etapa de control, siendo el número N dependiente de la norma de video que se esté utilizando; es decir que sin importar la frecuencia de horizontal, el reloj tendrá una frecuencia constante de 13,5 MHz.
f) Etapa de control
Se encarga de realizar la interfaz con el bus ISA, generar las señales de control de las etapas adquisidora y de memoria, así como también fijar los valores de tensión que utiliza la etapa acondicionadora de señal para la selección del rango de tonalidades de gris a cuantificar. Esta última función se realiza con dos conversores D/A de 8 bits, quienes determinan la tensión que controla el amplificador de ganancia variable (ganancia) y la que controla el desplazamiento que se adiciona a la señal de video (offset), ambos valores dados por sendos registros de 8 bits que son escritos desde el bus ISA.
El resto de la etapa de control está implementada en base a una FPGA, y su diseño será descrito ampliamente en el siguiente capítulo.
Software
Se ha desarrollado un programa que presenta al usuario una interfaz sencilla, de fácil manejo y cuya única finalidad es la de permitir la adquisición de la imagen, utilizando todas las prestaciones de la tarjeta, y la grabación de • la adquisición de una imagen completa.
• la visualización de la imagen en escalas 1:1, 2:1 y 3:1.
• la visualización de la imagen en tiempo real con menor resolución.
• la visualización de un histograma de la imagen para ver qué tan bien aprovechado está el rango de cuantificación.
• la grabación de la imagen a un archivo.
• la reinicialización de la tarjeta.
• la modificación interactiva del rango de adquisición.
• el cambio de la norma de la señal de video a adquirir.
El programa fue desarrollado en el lenguaje C++, con algunas rutinas en Assembler. Trabaja en entorno DOS y utiliza un controlador de memoria extendida para el almacenamiento de la imagen adquirida. El manejo de la memoria de video (VGA) se realiza a bajo nivel para optimizar el tiempo de puesta en pantalla de la imagen.
La imagen se puede grabar en un archivo en formato raster, el cual es prácticamente un volcado de la memoria en un archivo. Mediante un programa externo, se puede convertir este archivo en un archivo a formato BMP, de uso universal.
III.
Etapa de control basada en una FPGA
Acerca del desarrollo
Se utilizó el ambiente de desarrollo Max+Plus II de Altera, por ser el que se encontraba disponible en el IIE. En consecuencia, se utilizaron chips de Altera, en particular la familia MAX7000, programable mediante tecnología EPROM, fuera del circuito. Cuando el proyecto se estaba iniciando, surgía la posibilidad de utilizar la famila FLEX8000, configurable con tecnología SRAM, pero se decidió utilizar igualmente la familia MAX7000 dado que se disponía de poca información acerca de esa nueva tecnología. Como se verá más adelante, la tecnología SRAM hubiera sido más apropiada para el proceso de desarrollo porque el proceso de extracción y reinserción del chip en el zócalo, según nuestra experiencia, daña la integridad de la soldadura y las pistas del circuito impreso.
•
El chip utilizado fue el EPM7192, en encapsulado PQFP de 160 patas. La cantidad de regrabaciones del mismo chip durante todo el proceso de desarrollo fue del orden de 25.
•
Funciones
•
Como se ha visto en el capítulo anterior, las principales funciones que cumple la etapa de control son:
•
• divisor de frecuencia del PLL
• manejar las patas de control del conversor A/D
• manejar las patas de control de la memoria SRAM
• interfaz con el bus ISA:
∗ puerto de entrada para programación de funciones
∗ puerto de salida para mostrar el estado de la tarjeta
∗ puerto de salida para la transferencia DMA
∗ protocolo de transferencia DMA
∗ protocolo de solicitud de interrupción al finalizar la transferencia DMA
Diseño de la FPGA
El diseño se realizó en base a los bloques de la figura 2.
a) Bloque BPC
b) Bloque BVIDEO
En este bloque se sincorniza la adquisición de datos, con los tramos de la señal de video en que hay información útil. Esto es necesario para descartar (no muestrear) las líneas que no llevan información, y los tramos de cada línea que corresponden al sincronismo, backporsche, etc. De esta manera, todas las muestras adquiridas contienen información de imagen.
En definitiva, este bloque recibe las señales de sincronismo y la información acerca de la norma, que ha sido programada en el BPC, y controla el conversor A/D. Además, envía información al bloque BSRAM para que los datos que están siendo adquiridos sean guardados adecuadamente en la memoria, y avisa al bloque BPC cuando la adquisición termina, para que éste inicie la transferencia por DMA.
c) Bloque BSRAM
En este bloque se implementa la interfaz entre la tarjeta y el computador, a través del bus ISA. Sus principales características son:
sincronismo
contiene un registro de control donde se programan los distintos comandos (escribir offset, escribir ganancia, inicio de adquisición, adquisición continua y reset).
direcciones de E/S programables por hardware (mediante jumpers)
realiza transferencias por DMA, iniciadas por indicación del bloque BVIDEO al finalizar la adquisición de un cuadro.
genera una interrupción al finalizar la transferencia de datos por DMA.
Todo el control de las memorias SRAM se realiza en este bloque, que está sincronizado con BVIDEO, de forma tal que los datos que son control A/D
BVIDEO
BSRAM
ISA
datos SRAM
config. dir.
BPC
del VCO
(reloj global)
DIVISOR
control SRAM
control D/A
al comp. fase
Figura 2 ­ Diagrama en bloques del diseño de la FPGA
adquiridos se almacenan en direcciones sucesivas de memoria.
Por otra parte, este bloque también controla la lectura de las memorias durante la transferencia DMA, de acuerdo a las indicaciones dadas por el bloque BPC, quien sincroniza este proceso.
d) Bloque DIVISOR
Este bloque forma parte del sintetizador de frecuencia, responsable de generar la señal de reloj maestro de 13,5 MHz a partir de la señal de sincronismo horizontal. Su función es dividir la frecuencia del reloj maestro y dar a la salida una señal de la misma frecuencia que el sincronismo horizontal. Para que esto sea posible, el divisor debe depender de la norma que se está utilizando; esta información es proporcionada por el bloque BPC de acuerdo a cómo haya sido programado su registro de comandos.
Proceso de adquisición de una imagen
A modo ilustrativo, se enumeran a continuación los distintos eventos que se suceden durante el proceso de adquisición de una imagen:
1) El usuario ordena al programa el inicio de la adquisición.
2) El registro de comandos del BPC es escrito con la orden de inicio. Uno de los bits de esta palabra indica la norma a ser utilizada.
3) El bloque BVIDEO espera al comienzo de un nuevo cuadro de video.
4) Durante todo el cuadro, el bloque BVIDEO controla al conversor A/D y el bloque BSRAM controla a las memorias para almacenar cada muestra de la imagen.
5) Al finalizar el cuadro, el bloque BPC solicita al computador el inicio de las transferencias DMA.
6) Durante el DMA, el bloque BSRAM controla las memorias para leer cada muestra, mientras el bloque BPC transfiere estos valores al bus ISA.
7) Al finalizar el DMA, el programa presenta en pantalla la imagen adquirida.
IV.
Construcción y pruebas
La construcción de la tarjeta se realizó en base a dos circuitos impresos:
1) La etapa acondicionadora de señal se construyó en un circuito impreso construido en el taller del IIE. Se trata de un impreso doble faz con un mínimo de agujeros pasantes, los cuales fueron resueltos artesanalmente.
2) El resto del circuito (digital prácticamente en su totalidad), se construyó en un circuito impreso de mayor calidad, fabricado en el extranjero, sobre el cual se acopla la etapa acondicionadora de señal, mediante la utilización de un conector de tipo header de dos hileras.
Esta separación permitió desarrollar la parte analógica, probarla y ajustar el filtro, en paralelo con el diseño y la fabricación de la tarjeta principal. Cabe mencionar que el ajuste del filtro, por tratarse de un Legendre de orden 8, consumió mucho tiempo.
El montaje de los componentes se realizó paso a paso. Al soldar cada componente se fue verificando su correcto funcionamiento. El último componente en montarse en la tarjeta principal fue la FPGA, cuando todos los componentes accesorios ya habían sido verificados.
Para probar en el circuito el correcto funcionamiento del complejo circuito digital programado en la FPGA, se utilizaron varias técnicas:
a) se programó una señal de entrada TEST que, al activarse, manejaba unos multiplexores internos que permitían probar cada bloque interno de la FPGA por separado.
b) se previeron en el impreso 5 señales de entrada y 5 señales de salida multipropósito, que en distintas etapas de la prueba se asignaban a señales internas que se deseaban acceder.
c) se utilizaron pequeños programas que activaban determinadas funciones del bus ISA que deseaban ser probadas.
Finalmente, probadas todas las funciones y corregidos los errores encontrados, se procedió a realizar la adquisición de una imagen completa y a observar minuciosamente sus características para detectar posibles fallas en el proceso de adquisición. En esta etapa se utilizaron imágenes de prueba provenientes de un generador de patrones, las cuales permitieron detectar y corregir algunas constantes internas de la FPGA, el ancho de banda de un amplificador y algunos otros detalles menores.
V.
Conclusiones
Se ha desarrollado y construido un prototipo de prestaciones similares a productos comerciales. El resultado es altamente satisfactorio, habida cuenta la inexistencia de antecedentes en el IIE con respecto a las tecnologías utilizadas (FPGA de gran porte, componentes de montaje superficial y circuitos impresos de alta complejidad).
A continuación se enumeran las características principales del producto obtenido:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
adquisición de imágenes de video
normas: 625 líneas x 25 cuadros/seg.
525 líneas x 30 cuadros/seg.
monocromático
entrada BNC, 75 ohms, señal de video estándar sin componentes de croma, 1Vpp
salida BNC, 75 ohms, sincronismo compuesto extraido de la entrada, 4,2 Vpp
resolución por muestra = 10 bits
frecuencia de muestreo = 13,5 Mhz
selección por programa del brillo y contraste previo a la adquisición
formatos de archivo: raster 8 bits
raster 16 bits
BMP 8 bits
tamaño de la imagen: 720 x 576 pixels
720 x 486 pixels
modos de visualización:
alta calidad (1,5 seg. por cuadro, imagen completa, 64 tonos de gris)
continuo (5 cuadros/seg., 270x200 pixels submuestreados, 64 tonos de gris)
cálculo y visualización del histograma
bus ISA 16 bits
dirección de puertos y canal de DMA configurables por jumpers
sistema operativo DOS
De este trabajo se concluye la importancia de adquirir herramientas para el trabajo con tecnologías de punta en el diseño electrónico, como ser FPGA, SMT y PCB complejos. Estas tecnologías, fuera de nuestro alcance hasta hace pocos años, actualmente son accesibles y permiten fabricar prototipos de buena calidad y a precios razonables.
Dentro de esta línea, se puede pensar en mejorar el prototipo para incorporar mejores prestaciones, como ser:
•
•
•
•
•
cuantificación con 12 bits
utilización del bus PCI
adquisición del color
incorporación de funciones adicionales en el hardware (p.ej. adquisición de una zona de la imagen)
drivers para otros sistemas operativos (Windows, X­Windows, interfaz TWAIN, etc.)
Descargar