ACE16k-DS - Instituto de Microelectrónica de Sevilla

Anuncio
ACE16k-DS: Un Sistema Autónomo Programable
para el Preprocesamiento de Imágenes en Tiempo Real
L. Carranza, Francisco Jiménez-Garrido, Gustavo Liñán-Cembrano, Elisenda
Roca, Servando Espejo Meana, y Angel Rodríguez-Vázquez
Instituto de Microelectrónica de Sevilla - CNM-CSIC
Edificio CICA-CNM Avda./ Reina Mercedes s/n, 41012 Sevilla, SPAIN
[email protected]
Resumen. Este artículo describe un sistema electrónico autónomo y programable,
denominado ACE16k-DS, que permite sensar y procesar imágenes en tiempo real. La
arquitectura del sistema está basada en el chip ACE16k y en la FPGA Xc4028xl de
Xilinx en la que se han sintetizado una Unidad de Control Programable de propósito
específico y un generador de vídeo digital. Las imágenes son sensadas y procesadas, en
modo analógico, en el chip ACE16k, siguiendo instrucciones secuenciadas por la
Unidad de Control Programable. El generador de vídeo digital permite visualizar, en
una pantalla TFT, las imágenes procesadas en tiempo real.
1 Introducción
El continuo aumento de las densidades de integración de las tecnologías CMOS VLSI han
hecho posible el desarrollo de sistemas electrónicos cada vez más potentes y compactos. La
posibilidad de integrar circuitería analógica y digital CMOS dentro del mismo substrato
semiconductor ha permitido la realización de sistemas completos de propósito específico
“on” chip (SoC). Un ejemplo claro de estos sistemas son los procesadores programables
masivamente paralelos de señal mixta para el preprocesamiento de imágenes. La complejidad
y potencia de estos chips ha ido en aumento en los últimos años [1]-[4]. Estos circuitos,
debido a su complejidad y versatilidad, son difíciles de testar y programar, pasos previos
necesarios para el desarrollo de aplicaciones completas de visión artificial para las que están
diseñados.
Hasta la fecha, los sistemas electrónicos para el desarrollo de aplicaciones con estos chips
de señal mixta se han llevado a cabo apoyándose en microprocesadores de propósito general
y potentes DSPs [5]. Esta estrategia presenta numerosas ventajas, la principal de ellas es que
las arquitecturas basadas en microprocesadores y DSPs comerciales incluidas en estas
plataformas cuentan con sistemas operativos, librerías, potentes paquetes de aplicación y
ayudas para la programación que facilitan el desarrollo de aplicaciones. Sin embargo, hacen
difícil la programación fina, de bajo nivel, de los chips preprocesadores, consumen mucha
energía, no están pensadas para estudiar arquitecturas optimizadas de futuros Sistemas de
Visión “on” Chip (VSoC) y no suelen estar diseñadas teniendo en cuenta la naturaleza
analógica del núcleo de los chips preprocesadores de imágenes, lo que obliga a un diseño
cuidadoso de los circuitos impresos de las plataformas que los soportan.
El chip ACE16k [4] está compuesto, esencialmente, por un array de 128 x 128 elementos
de sensado y procesamiento analógico diseñado para realizar tareas de preprocesamiento de
imágenes a muy alta velocidad con una resolución de 7 bits. Otros bloques de circuito
incluidos en el chip, principalmente bancos de memoria estática y juegos de conversores AD
y DA permiten, por una parte, almacenar instrucciones y datos en el ACE16k con el fin de
prepararlo para realizar determinadas tareas, y por otra, integrarlo en un sistema
completamente digital. Las instrucciones y datos, previamente almacenados en los bloques
de memoria, se seleccionan y transmiten al array de procesamiento en paralelo, siguiendo una
secuencia establecida desde el exterior del ACE16k.
En este artículo, se presenta el sistema de desarrollo ACE16k-DS, que está compuesto por
elementos de hardware y software y ha sido diseñado para programar y ejecutar algoritmos
de preprocesamiento de imágenes usando el chip ACE16k. El sistema incluye un núcleo
digital, sintetizado en una FPGA, compuesto por una Unidad de Control Programable, un
generador de vídeo digital y un selector de memoria de imágenes. Dos bloques de memoria
permiten almacenar y leer las imágenes preprocesadas por el ACE16k. Un conversor DA y
un mezclador generan vídeo compuesto analógico a partir de las señales proporcionadas por
el módulo de vídeo digital y una tarjeta de memoria de programa almacena las rutinas que
ejecuta la Unidad de Control. Las herramientas de programación, escritas en C sobre el
sistema operativo Linux, permiten desarrollar rutinas de preprocesamiento de imágenes,
obtener código binario directamente ejecutable en el sistema y descargarlo en la tarjeta de
memoria del ACE16k-DS.
La descripción del sistema se presenta en la sección 2, mientras que los elementos
centrales del ACE16k-DS se detallan posteriormente: las principales características del chip
ACE16k en la sección 3 y el núcleo digital en la sección 4. En la sección 5 se describen las
herramientas de programación desarrolladas y las conclusiones finales del trabajo en la
sección 6.
2 Descripción del Sistema
La Fig. 1 ilustra un diagrama de bloques del sistema ACE16k-DS. Una placa de circuito
impreso principal contiene los elementos centrales: el ACE16k y su circuitería de
polarización, una FPGA Xc4028xl de Xilinx, una tarjeta de memoria de programa, dos
memorias de imágenes, una placa con un conversor DA y un mezclador de vídeo, un
generador de reloj, pulsadores, un display de 7 segmentos, una EEPROM y diodos LEDs que
monitorizan algunas señales del ACE16k. La placa principal incluye además un soporte en el
que se coloca un zócalo ajustable sobre el ACE16k; en este zócalo se instala un objetivo tipo
C. Tres tornillos de ajuste permiten alinear el objetivo sobre el ACE16k.
En la FPGA se han sintetizado cuatro subsistemas. Un divisor de reloj, que genera relojes
de 40, 20 y 10 Mhz a partir del generador principal externo de 80 Mhz, un generador de vídeo
digital, un selector de memoria de imágenes y una Unidad de Control Programable con un
juego de instrucciones específico. La Unidad de Control permite programar y secuenciar
instrucciones en el ACE16k, modificar el contenido de algunos registros del generador de
vídeo, y sincronizar la frecuencia de salida de imágenes del ACE16k con la frecuencia de
salida de imágenes del generador de vídeo. Los programas que ejecuta la Unidad de Control
están almacenados en una placa de memoria secundaria conectable a la placa principal.
La tarjeta de memoria de programa contiene una memoria RAM estática de 256Kx16bits,
baterías y circuitería de sensado y control, cuya función es conectar las líneas de alimentación
Fig. 1. Diagrama de bloques del ACE16k-DS
de la RAM a las baterías cuando la alimentación externa, suministrada por la placa principal,
no está presente. En la memoria estática se pueden almacenar hasta 8 rutinas de
preprocesamiento de imágenes. La tarjeta de memoria se conecta primero a un PC y con la
ayuda de las herramientas de programación desarrolladas y un puerto de entrada/salida
universal se almacena el código binario de las rutinas a ejecutar por el ACE16k-DS en la
SRAM. Una vez hecho esto se desconecta la tarjeta del PC y se inserta en el sistema. Después
del encendido, la selección de una de las rutinas, entre las 8 disponibles, se realiza
secuencialmente usando el pulsador de cambio de programa. El display LED de 7 segmentos
monitoriza el número del programa que se está ejecutando en cada momento.
Dos memorias RAM estáticas de 512Kbyte se usan para escribir y leer las imágenes
procesadas por el ACE16k. El selector de memoria de imágenes conmuta entre las funciones
de lectura y escritura de las memorias de manera que la unidad de almacenamiento de
imágenes, incluida en la Unidad de Control, tenga siempre accesible, en modo escritura, una
de las memorias, para almacenar una nueva imagen procesada por el ACE16k y el generador
de vídeo tenga siempre accesible, en modo lectura, la memoria en la que se almacenó la
imagen procesada en un momento anterior. Puesto que no todas las rutinas de
preprocesamiento de imágenes invierten el mismo tiempo de ejecución, se ha incluido una
instrucción especial, en el juego de instrucciones de la Unidad de Control que, por una parte,
sincroniza el generador de vídeo y la unidad de almacenamiento de imágenes y, por otra,
gobierna el selector de memoria.
La circuitería de la tarjeta de vídeo está compuesta básicamente por un convertidor DA de
vídeo, un conmutador analógico CMOS, desplazadores de niveles y amplificadores. Estos
circuitos mezclan las señales de sincronía y de imagen, producidas por el generador de vídeo
digital, y generan vídeo compuesto monocromo estardard PAL. La salida de esta tarjeta se
conecta a la entrada de una pequeña pantalla TFT, no incluida en la placa de circuito impreso
principal.
La configuración de la FPGA se realiza a través de una EEPROM serial, aunque si se
desea depurar funciones o añadir nuevos bloques al núcleo digital es posible hacerlo usando
un conector JTAG incluido junto a la EEPROM. La placa de circuito impreso principal
contiene microinterruptores que permiten cambiar el esquema de configuración de la FPGA,
haciendo operativo el conector JTAG cuando es necesario.
La Fig. 2 muestra la placa principal del sistema una vez terminada.
Fig. 2. Placa principal del ACE16k-DS
3 Descripción del ACE16k
El ACE16k está compuesto por los siguientes bloques funcionales: el núcleo central
formado por un array de 128x128 celdas elementales junto con un anillo de celdas que lo
rodean, que sirven para establecer las condiciones de contorno espaciales para el
procesamiento analógico; la circuitería de programación, compuesta por bloques de memoria
digitales estáticas donde se almacenan instrucciones y datos; el bloque de entrada/salida que
contiene conversores AD y DA y permiten integrar el núcleo central de procesamiento en un
entorno completamente digital; bloques de testado y un sistema autónomo y síncrono de
direccionamiento de celdas.
Cada celda del array incluye las siguientes funciones: sensado óptico programable,
procesamiento analógico (esencialmente convoluciones locales), procesamiento digital
(operaciones lógicas) y memoria analógica (para almacenar resultados de forma temporal).
Los parámetros analógicos de convolución, la circuitería digital lógica de procesamiento y los
fotoreceptores se programan con los mismos valores en todas las celdas del array.
En una rutina de preprocesamiento de imágenes típica para este chip, los bloques de
memoria del ACE16k se escriben por completo con las instrucciones y los datos necesarios
para realizar dicha rutina. El orden de almacenamiento no es importante, puesto que las
instrucciones y datos son seleccionados (esto es, ejecutados en el array de procesadores
analógicos) en un orden que se establece desde el exterior del chip.
4 El Núcleo Digital
Como se mencionó anteriormente, el núcleo digital, sintetizado en la FPGA, está
compuesto por un divisor de reloj, un generador de vídeo digital, un selector de memoria de
imágenes y una Unidad de Control Programable. Además se han añadido registros de entrada/
salida en pipeline para aumentar la velocidad de intercambio de datos entre el ACE16k y la
Unidad de Control y entre el selector de memoria y las memorias de imágenes.
4.1 Generador de Vídeo Digital
Este sub-bloque se ocupa de la generación de las señales de sincronía e imagen de vídeo.
Las señales de sincronía horizontal y vertical se obtienen a partir de la información
almacenada en una memoria ROM sintetizada en la FPGA y las señales de imagen a partir
del contenido de la SRAM de imagen elegida por el selector de memoria.
La Unidad de Control tiene acceso a un registro interno del generador de vídeo (que se
usa para cambiar de vídeo normal a vídeo inverso) y a la información de sincronía (que
permite a la Unidad de Control sincronizar la frecuencia de salida de imágenes de ACE16k
con la frecuencia de salida de imágenes del generador).
4.2 Unidad de Control
La Unidad de Control interactúa con el ACE16k, así como con la memoria de programa,
las memorias de imágenes, el selector de memoria, el generador de vídeo digital, los
pulsadores de reset y de cambio de programa y el display de 7 segmentos. El juego de
instrucciones específico que ejecuta está diseñado para controlar todas las unidades a la que
está conectada y hacer sencilla la programación del sistema. Ha sido completamente diseñada
en VHDL sintetizable y se ha realizado un testado post-síntesis exhaustivo con ayuda de las
herramientas de programación desarrolladas como parte del ACE16k-DS. La Unidad de
Control tiene las siguientes características:
• Dispone de una unidad de búsqueda de instrucciones, otra de decodificación, optimizada
para la decodificación rápida de las instrucciones que secuencian operaciones en el
ACE16k y dos unidades de ejecución que permiten la realización en paralelo de procesos
de descarga y escritura de imágenes.
• Las instrucciones y los datos residen en la misma memoria, no existe separación estricta
entre memoria de instrucciones y de datos.
• Usa el formato big endian.
• Sólo acepta una línea de interrupción de hardware: el pulsador de cambio de programa,
que se comprueba durante la búsqueda de cada nueva instrucción.
Juego de instrucciones de la Unidad de Control. El juego de instrucciones de la Unidad
de Control se puede clasificar en tres grupos:
• Instrucciones de control y programación del ACE16k. Estas instrucciones se usan para
programar el ACE16k, secuenciar instrucciones previamente almacenadas en su
memoria y descargar imágenes. La Unidad de Control está diseñada para decodificar las
instrucciones que secuencian las operaciones del ACE16k más rápido que cualquier
otra, con el fin de incrementar el rendimiento de las rutinas de preprocesamiento de
imágenes.
• Instrucciones de Control de flujo de ejecución. Estas incluyen llamadas a subrutinas
saltos incondicionales y bucles anidados.
• Instrucciones relacionadas con la generación de imágenes de vídeo. Permiten invertir la
señal de vídeo y sincronizar la salida de imágenes del ACE16k con la del generador de
vídeo.
5 Herramientas de Programación
Las herramientas de programación, ensamblador, cargador y grabador de memoria,
escritas en C sobre el sistema operativo Linux, han sido desarrolladas para hacer posible la
programación y depuración de rutinas para el ACE16k-DS y para facilitar el testado postsíntesis de su núcleo digital.
5.1 Ensamblador
El ensamblador genera tres ficheros distintos a partir del código fuente de entrada. Es un
ensamblador de dos pasadas; en la primera crea la tabla de símbolos y en la segunda usa la
tabla de símbolos y el resto del código fuente para generar tres ficheros de salida codificados
en hexadecimal, formato de impresión de listado (PRN) y código VHDL comportamental. El
analizador de código del ensamblador detecta errores de programación en la segunda pasada,
cuando ya está creada la tabla de símbolos.
Las características principales del ensamblador son las siguientes:
• Permite al usuario asignar nombres a posiciones de memoria y permite el uso de
comentarios en el código fuente.
• Ordena al cargador almacenar los programas en cada uno de los 8 bloques de memoria
de acuerdo con las preferencias del programador.
• Detecta 9 tipos de errores comunes.
• Genera código hexadecimal que representa el contenido de la memoria de programa y
código PRN para tareas de depuración.
• Genera un fichero VHDL comportamental de toda la circuitería del sistema excluyendo
el núcleo digital. En este fichero la memoria de programa contiene el código binario
correspondiente al código fuente de entrada del ensamblador, de esta manera es posible
realizar simulaciones post-síntesis de los bloques de circuito sintetizados en la FPGA.
5.2 Cargador y Grabador de Memoria
El cargador genera código binario directamente ejecutable por el sistema a partir del
código hexadecimal que produce el ensamblador. El programa grabador de memoria controla
el puerto de entrada/salida de propósito general que escribe y verifica el código binario en la
tarjeta de memoria de programa del sistema, además comprueba la carga de las baterías de
salvaguarda.
6 Conclusiones
Se ha presentado un sistema autónomo programable para el preprocesamiento de
imágenes en tiempo real basado en elementos de hardware y software de propósito
específico: un chip de procesadores analógicos masivamente paralelos, un núcleo digital
programable sintetizado en un circuito integrado de lógica reconfigurable y un paquete de
herramientas de programación desarrollado para este sistema. La naturaleza flexible del
diseño del ACE16k-DS lo deja abierto a mejoras arquitecturales y funcionales tales como la
inclusión de memoria caché, etapas de pipeline en la secuencia búsqueda-decodificación-
ejecución de instrucciones y una ampliación en el repertorio de instrucciones de la Unidad de
Control para tareas de postprocesado de imágenes, toma de decisiones y actuación
Agradecimientos
Los autores agradecen a Carlos Jesús Jiménez Fernández y a José Miguel Mora Gutiérrez
la dedicación, ayuda e interés prestados en la configuración y uso de las herramientas de
síntesis digital y sus consejos y orientaciones para explotar los recursos de las FPGAs de
Xilinx.
Este trabajo ha sido financiado parcialmente por los proyectos IST2001 – 38097
(LOCUST), TIC2003 – 09817- C02 – 01 (VISTA), y ONR-NICOP N000140210884.
Referencias
1. R. Domínguez-Castro, S. Espejo, A. Rodríguez-Vázquez, R. Carmona, P. Foldesy, A.
Zarándy, P. Szolgay, T. Sziranyi, and T. Roska: A 0.8µm CMOS programmable mixed-signal
focal-plane array processor with on-chip binary imaging and instructions storage, IEEE J.
Solid-State Circuits, vol. 32, (1997) 1013–1026
2. G. Liñán, S. Espejo, R. Domínguez-Castro, and A. Rodríguez-Vázquez: ACE4k: An
analog I/O 64x64 visual microprocessor chip with 7-bit analog accuracy, Int. J. Circuit
Theory Applicat., vol. 30, no. 2/3 (2002) 89–116
3. T. Roska and A. Rodríguez-Vázquez (Editores): Towards the Visual Microprocessor, John
Wiley & Sons Ltd. (2000)
4. Angel Rodríguez-Vázquez, Gustavo Liñán-Cembrano, L. Carranza, Elisenda RocaMoreno, Ricardo Carmona-Galán, Francisco Jiménez-Garrido, Rafael Domínguez-Castro,
and Servando Espejo Meana: ACE16k: The Third Generation of Mixed-Signal SIMD-CNN
ACE Chips Toward VSoCs, IEEE Transactions on Circuits and Systems—I: Regular Papers,
vol. 51, no. 5 (2004) 851-863
5. Akos Zarandy and Csaba Rekeczky: Bi-i: a Standalone Cellular Vision System, Part I.
Architecture and Ultra High Frame Rate Processing Examples, aceptado para ser presentado
en la CNNA 2004, Budapest (Hungría), 22-24 de Julio de 2004. Se publicará en los
Proceedings de la CNNA 2004.
Descargar