Sistema de Visualización de Imágenes a 8 Colores Implementado

Anuncio
Avances de Ingeniería Electrónica 2013
Sistema de Visualización de Imágenes a 8 Colores Implementado en FPGA
Felipe Santiago Espinosa, Rolando Ruiz Carbajal
Universidad Tecnológica de la Mixteca, Carretera a Acatlima Km 2.5, Huajuapan de León, Oaxaca, México;
(01-953) 53-203-99 (ext. 5555), [email protected], [email protected],
[email protected].
Resumen
En el presente trabajo se plantea el desarrollo e implementación de un sistema flexible y escalable para
la visualización de imágenes, el sistema está basado en FPGA y se sintetizó en la tarjeta de desarrollo
Digilent Spartan-3; permite la visualización, en un monitor VGA de resolución de 640 x 480 pixeles,
de un conjunto de imágenes simplificadas a 8 colores, almacenadas en un banco de memorias
NVRAM; estableciendo una interacción con el usuario al permitirle el avance y retroceso dentro del
conjunto de imágenes, así como una señalización en la imagen actual, mediante el uso de un ratón de
computadora. El sistema se complementa con un programa de computadora que permite la
simplificación de las imágenes a 8 colores y su envío a la tarjeta Spartan-3, por medio del puerto serie
RS-232, para su almacenamiento. El diseño se hizo bajo un enfoque modular, codificando los módulos
en VHDL, con la intención de aportar descripciones de hardware que por naturaleza tienen la
capacidad de rediseño, en pro de su optimización; además de las facilidades de reutilización,
favoreciendo el desarrollo de nuevos sistemas que requieran el manejo de los mismos periféricos.
Palabras Clave: FPGA, NVRAM, PS/2, RS-232, VGA.
I.
hardware se convierta en algo que pueda ser
compartido y reutilizado.
Introducción
Los dispositivos de lógica programable más
versátiles son los FPGA (Field Programmable
Gate Array), ya que permiten realizar diseños a
medida y con bajo costo de desarrollo. Sus
bloques lógicos y sus recursos de interconexión
son configurables, características por las que son
ampliamente empleados al realizar prototipos e
incluso para la producción de pocas unidades [1].
Así mismo, la existencia de lenguajes de
descripción de hardware (HDL, Hardware
Description Languages) tales como ABEL,
Verilog y VHDL hacen que los diseños sean
archivos de texto, que contienen el “código
fuente” del circuito. Esto ha llevado a que el
proceso de diseño de hardware se parezca cada
vez más al del software; lo que conduce, a que el
El presente trabajo expone el desarrollo de un
sistema que permite la visualización en un
monitor o dispositivo estándar VGA de un
conjunto imágenes, simplificadas a 8 colores,
almacenadas en un banco de memorias NVRAM,
empleado como base un FPGA, realizando, pero
no limitando a esta plataforma,
la
implementación sobre una tarjeta de desarrollo
Digilent Spartan-3 [2].
II.
Metodología de Diseño.
La metodología que se plantea corresponde a un
diseño Top-Down, planteando la creación de un
diseño modular jerárquico, que consiste en
construir un nivel de descripción funcional de
diseño debajo de otro, de forma que cada nuevo
nivel posea una descripción más detallada del
sistema [3].
ISBN: 978-607-28-0126-4
563
Avances de Ingeniería Electrónica 2013
III. Diseño del Sistema
IV.
Considerando la metodología de diseño, en la
figura 1 se aprecia el marco de trabajo general
que permite definir los módulos que integran el
sistema y sus interfaces, la división se realiza en
partes
funcionalmente
independientes,
especificando la división del sistema en sus
componentes Hardware y Software.
Fig. 1. Diagrama a bloques General del Sistema.
El diseño del sistema, centrado en la descripción
funcional, mostrado en la figura 2, se establece en
3 elementos y tareas principales:
1. Interfaz de Video: Provee la funcionalidad de
recuperar la información almacenada para
desplegarla mediante el empleo de un puerto
VGA, así como el control de una interfaz que
permite el uso de un ratón estándar PS/2.
2. Interfaz Serie: Provee la capacidad de
comunicación serial mediante el protocolo RS232 (ANSI/EIA 232), recibe y discrimina la
información para ser almacenada.
3. Almacenamiento de Imágenes: Provee la
funcionalidad de escribir y leer información en
un arreglo de memorias NVRAM.
Desarrollo e Implementación del Módulo
de Interfaz de Video
Teniendo en cuenta que la descripción en VHDL
se desarrolla con el estilo estructural, la
integración de las instancias:
Divisor de Frecuencia
genera el módulo interfaz de Video, que presenta
la funcionalidad especificada en el proceso de
diseño a partir del comportamiento de conjunto
de cada uno de los componentes instanciados, en
donde:
El componente Divisor de Frecuencia, del que se
muestra su diagrama funcional en la figura 3,
divide la frecuencia principal de la señal de reloj
a la mitad de la frecuencia de la señal de reloj de
50 MHz provista por la tarjeta de desarrollo.
Fig. 3. Diagrama a bloques de la descripción
funcional del componente Divisor de Frecuencia.
Fig. 2. Diagrama a bloques de las descripciones de hardware.
ISBN: 978-607-28-0126-4
564
Avances de Ingeniería Electrónica 2013
El componente Memoria de Video SRAM
proporciona la interfaz de acceso para la escritura
y lectura de una memoria SRAM de 256Kx16
ISSI IS61LV25616AL-10T [4], la cual, por las
prestaciones de desempeño en los tiempos de
acceso de lectura y escritura, se emplea como
memoria de refresco de video, en tanto la
implementación se puede llevar a cabo en un solo
estado, como se muestra en la máquina de
estados de la figura 4, sin la consecuente
necesidad de agregar retardos, como ocurre en
otras tecnologías
Fig. 4. Máquina de estados de accesos para
Lectura y Escritura de la memoria de video
SRAM.
El componente Interfaz Mouse PS/2 proporciona
una interfaz bidireccional síncrona entre el
controlador y un ratón estándar PS/2, registrando
los eventos del dispositivo: desplazamiento y
pulsación del botón izquierdo o derecho.
La implementación se basa en el protocolo de la
interfaz PS/2 [5] y en la secuencia de eventos que
se establecen para lograr la interacción con los
modos de operación [6] y eventos del Mouse,
movimiento y pulsación de botones, los cuales se
comunican mediante el protocolo PS/2 al
controlador. En la figura 5 se establece el
diagrama a bloques que brinda la operación de la
interfaz Mouse PS/2.
El componente Cursor, (ver figura 6), realiza la
representación de la posición del ratón en la
pantalla, con la funcionalidad de ofrecer 8 estilos
de cursor y un color dinámico, que cambia para
resaltar en función del color de fondo.
Fig. 5. Diagrama a bloques de la descripción
funcional del módulo de la interfaz del Mouse
PS/2.
Fig. 6. Diagrama a bloques de la descripción de
hardware módulo Cursor.
En la implementación se generan las imágenes
que se sobrepondrán en la posición del cursor a
partir de lógica combinacional; el diseño de la
imagen se realiza en el eje cartesiano, lo que
permite determinar la posición de cada pixel
referenciado al punto cartesiano (0,0), que será la
posición actual del ratón, para dar forma a los
cursores que se muestran en la figura 7.
Fig. 7. Cursores del ratón y posición de selección.
ISBN: 978-607-28-0126-4
565
Avances de Ingeniería Electrónica 2013
El componente Controlador VGA es compatible
con el estándar VGA [7], por lo tanto funciona en
la gama de monitores CRT y LCD, el
componente provee las señales de sincronismo y
tiempos de video para generar una imagen en un
modo de 3 bits, o profundidad de 8 colores, con
una resolución de 640 x 480 píxeles. Se manejan
imágenes únicamente de 8 colores porque la
tarjeta Spartan 3 destina un bit para el rojo, uno
para el verde y otro para el azul, con 3 bits
únicamente se alcanzan 8 colores diferentes.
Por flexibilidad, la implementación (ver figura 8)
considera la ubicación de la memoria de video
fuera del componente; así, ésta puede ser una
memoria de video dedicada o compartida en el
sistema.
Fig. 8. Diagrama a bloques de la descripción
funcional del módulo Controlador VGA.
En la implementación, para dibujar la imagen se
cuenta con las señales R, G y B que dependen de las
consideraciones de tiempo de las señales de control de
Sincronismo Vertical y Horizontal, por lo que se
trasladan a ciclos del reloj de entrada (CLK), ya que
el diseño quedará estrechamente ligado a la frecuencia
del reloj con que opera el controlador, arrojando los
tiempos que se muestran en la tabla 1.
imagen activa a la memoria de video, que por su
alta tasa de refresco, proporciona la información
que debe desplegar el Controlador VGA.
Sincronismo
Vertical
Sincronismo
Horizontal
Símbolo
Tiempo
(µS)
Ciclos
Reloj
Tiempo
(mS)
Ciclos
Reloj
Líneas
A
32
800
16.7
416,800
521
B
25.6
640
15.36
384,000
480
C
3.84
96
64
1,600
2
D
0.64
16
320
8,000
10
E
1.92
48
928
23,200
29
Tabla 1. Tiempos de operación y ciclos de reloj de
las señales de sincronismo para un reloj de 25
MHz.
La Interfaz Mouse PS2 establece la interfaz con
el usuario, su integración hace posible el
retroceso entre imágenes con la presión del botón
derecho del ratón o el avance con la presión del
botón izquierdo, así como el despliegue y
redibujo del desplazamiento del puntero sobre la
imagen activa.
La información que se procesará por la interfaz
de video se encuentra almacenada en la memoria
de video NVRAM, agrupada en un arreglo de
61,440 direcciones por imagen, considerando
65,535 direcciones por página (ver figura 9).
El componente Control de Video genera las
señales de control para los componentes memoria
NVRAM, memoria de video, VGA, cursor e
interfaz PS2.
La implementación tiene la finalidad de
establecer las secuencias que permitan obtener la
información de la memoria NVRAM, que
contiene imágenes descompuestas en sus
elementos básicos, y copiar la información de la
Fig. 9. Segmentación de la memoria NVRAM en
páginas.
ISBN: 978-607-28-0126-4
566
Avances de Ingeniería Electrónica 2013
V.
Desarrollo e Implementación del Módulo
Interfaz Serie
Este módulo contiene los componentes de la
interfaz de comunicación serial asíncrona y es el
encargado de establecer la comunicación a través
de la interfaz de hardware RS232C [8],
permitiendo intercambiar datos binarios entre el
FPGA y otro dispositivo a través de una conexión
punto a punto. El cual se genera de la
instanciación de los componentes:
de la memoria en páginas de 61,440 direcciones ó
983,040 bytes.
VI.
Desarrollo e Implementación del Módulo
para el almacenamiento de Imágenes.
El módulo contiene los componentes para el
acceso a la memoria no volátil externa a la tarjeta
Spartan-3. Se integra de dos componentes, uno
para la interfaz física y otro para el control,
Componente NVRAM
Componente Control de Memoria
Componente UART
Componente Control Serie
Los cuales se ligan directamente en el módulo de
mayor jerarquía, en donde:
En donde:
El componente UART, provee una interfaz
programable de comunicación serie asíncrona.
La implementación, ver figura 10, considera que
el diseño está orientado a emular de forma parcial
el funcionamiento de los dispositivos de
recepción-transmisión universal asincrónica,
UART, con una PILA (FIFO, First Input First
Output) de datos, que permite convertir los datos
seriales a paralelos; y además ofrecer una
velocidad de transferencia configurable desde
9600 bps a 115.2 Kbps.
El componente NVRAM, provee la interfaz de
acceso para la escritura y lectura en un arreglo de
2 memorias DALLAS NVRAM (Non-Volatile
Random Access Memory, Memoria de acceso
aleatorio No Volátil) DS1265W [9] de 8 Mb ó
DS1270W [10] de 16 Mb, un tipo de memorias
que no pierde la información almacenada al
cortar la alimentación eléctrica y por sus
características será empleada como memoria de
almacenamiento de imágenes de 16 Mb ó 32 Mb
de capacidad.
La comunicación entre las memorias y el FPGA
se realiza mediante los conectores de expansión
A2 y B1 de la tarjeta de desarrollo Digilent
Spartan-3 (ver figura 11).
Fig. 10. Diagrama a bloques de la descripción
funcional del componente UART.
El componente Control Serie, tiene como
finalidad integrar el componente serial e
interactuar con el componente NVRAM, para
establecer las secuencias que permiten recibir
datos del puerto serial y almacenar esta
información en la memoria, segmentando el total
Fig. 11. Hardware del componente NVRAM [5].
ISBN: 978-607-28-0126-4
567
Avances de Ingeniería Electrónica 2013
El componente NVRAM incluye los bloques
mostrados en la figura 12, para la interacción con
la memoria, permitiendo las funcionalidades de
lectura y escritura de los datos persistentes.
VIII. Software
El Sistema Software, codificado empleando como
lenguaje de desarrollo C++, se estructura de
manera que permite el mantenimiento y
modificación de la funcionalidad durante el ciclo
de desarrollo y pruebas, para ello se emplean
funciones que realizan tareas específicas y
funciones que responden a eventos concretos.
Dentro de las funciones se tienen:
uerto Serie
Fig. 12. Bloques del componente Control de
Memoria.
El componente Control de Memoria, se concibe
para interactuar con la parte superior de la
estructura jerárquica, evitando que exista un
conflicto en el acceso a la memoria por parte de
los módulos Serie e Interfaz de Video, ya que los
módulos son concurrentes en su operación, el
acceso para lectura y/o escritura en la memoria
NVRAM debe coordinarse, el componente
básicamente consiste en una descripción
combinacional.
VII. Integración del Sistema FPGA
El sistema de visualización de imágenes se
genera, de acuerdo a la metodología jerárquica,
mediante la instanciación de los módulos:
Interfaz NVRAM
La implementación en la tarjeta de desarrollo
requiere la conexión física con el módulo
NVRAM y la definición de los puertos de salida
y entrada del FPGA para los dispositivos Ratón
PS/2 y Serial, proceso que se realiza en la etapa
de implementación conocida en el ciclo de diseño
como: Colocación y Ruteo [11]; que básicamente
consiste en adaptar el diseño a un hardware en
concreto, que en este caso corresponde al FPGA
Xilinx Spartan-3 XC3S200.
e
La gestión de la interfaz serie RS-232 se realiza
empleando la estructura del Bloque de Control de
Dispositivos (DCB, Device Control Block) que
define la configuración de control para un
dispositivo serie dentro del Sistema Operativo
Microsoft Windows [12, 13], mediante las
funciones asociadas se declaran los parámetros de
configuración de comunicación tales como:
número de puerto, baud rate, paridad, tamaño de
palabra y bits de paro.
La simplificación de imágenes se realiza tomando
cada uno de los pixeles que estructura la imagen
(640 x 480 = 307,200 pixeles), para luego
descomponerlo en sus componentes de color
(RGB), para así discriminar cada una de esas
componentes fijando un umbral que corresponde
a la mitad del espectro con que se represente el
color, que corresponde a un valor numérico que
se encuentra dentro del intervalo de [0-255]; así,
la componente se incluye si presenta una
saturación por encima del umbral, ya que indica
mayor presencia de tal componente de color, en
caso contrario se descarta.
Esto se hace para cada uno de los tres colores,
obteniendo una representación simplificada de
cada pixel únicamente en 3 bits. En la figura 13, a
manera de ejemplo, se muestra el espectro del
color verde.
ISBN: 978-607-28-0126-4
568
Avances de Ingeniería Electrónica 2013
Fig. 13. Representación numérica del espectro de
Color Verde.
memoria NVRAM. El programa cuenta con la
opción para simplificar la imagen a 8 colores,
esta simplificación se realiza automáticamente si
el usuario solicita enviar una imagen y no ha
ejecutado el comando.
El sistema ofrece la prestación de visualizar tanto
la imagen original como la imagen simplificada,
que será transmitida y almacenada en el hardware
del sistema (NVRAM).
La transmisión se establece tomando como base a
la imagen actualmente seleccionada, de la cual se
envía la versión simplificada, considerando la
ubicación que se le dará en la memoria, a la que
se denomina página. En el hardware del sistema
se tiene una capacidad de 32 posiciones, de la 0 a
la 31, lo que permite almacenar 32 imágenes.
Se establece un protocolo, en donde el primer
byte que se envía al hardware indica el comando
de operación a realizar y el número de página
sobre la cual se va a efectuar la operación, como
se muestra en la figura 14.
Fig. 15. Elementos de la interfaz visual de la
aplicación.
IX.
Resultados
El sistema resultante cumple con los objetivos
planteados, en la figura 16 se muestra su
implementación.
Fig. 14. Byte de Comando y Número de Página.
En el caso del comando que corresponde a la
operación de escribir, se ejecuta un bucle de
lectura y transmisión de cada uno de los 61,440
bytes almacenados en una matriz durante el
proceso de simplificación de una imagen.
La interfaz de usuario se desarrolló de manera
que es posible visualizar el avance en el proceso
de transferencia, las imágenes originales y las
imágenes simplificadas, en la figura 15 se
muestra la interfaz de la aplicación, en la tira de
imágenes se puede revisar el contenido. La
ubicación de una imagen en la tira corresponde
con la ubicación en la página dentro de la
Fig. 16. Sistema de Visualización de Imágenes en
funcionamiento con periféricos conectados.
La implementación del diseño emplea una
proporción menor al 50 % de los recursos del
FPGA 3S200FT256, en la tabla 2 se muestran los
recursos que el sistema emplea del dispositivo.
ISBN: 978-607-28-0126-4
569
Avances de Ingeniería Electrónica 2013
Recurso
Cantidad Usada Porcentaje
SLICEs
865 de 1920
45%
IOBs
93 de 173
53%
GCLKs
1 de 8
12%
Tabla 2. Recursos empleados por el sistema en un
FPGA 3S200FT256.
En términos de almacenamiento de información,
la implementación del sistema con memorias
NVRAM DS1265W permite el almacenamiento
de 32 imágenes y de 64 imágenes con la memoria
DS1270W.
La transferencia máxima que se establece en la
transmisión de datos, se limita por el puerto serie
a 115,200 bps, ya que durante la fase de pruebas
éste es el valor que permite la estabilidad de la
aplicación y transferencia efectiva de la
información en los diferentes equipos que se
realizaron las pruebas de comunicación;
adicionalmente de que este valor se establece
como la máxima tasa de transferencia de la
mayoría de puertos seriales incorporados en PCs
comerciales. Obteniendo bajo esta configuración,
la transferencia de una imagen completa en 12
segundos por los tiempos de retraso agregados en
Software.
El sistema Software ofrece compatibilidad de
operación con los sistemas Windows 95, 98,
2000, XP, 7 y 8; adicionalmente se realizaron
pruebas con un adaptador de USB macho tipo
“A” a serial (BD9) USB-RS232, para la
transferencia de imágenes en PCs que únicamente
contaban con puertos tipo USB; permitiendo la
transferencia de las imágenes con un demora de 5
segundos durante el proceso de la transmisión en
sistemas con Windows 7.
X.
Conclusiones y trabajos futuros
Los resultados alcanzados conllevan a las
siguientes conclusiones:
1. La versatilidad en los FPGAs permite la
creación de sistemas complementados con
interfaces basadas en programas de
computadora, en este caso, el sistema se
completa con un software que permite la
manipulación de imágenes y la comunicación
con el puerto serial. El modelo incremental
resulta conveniente para el desarrollo de
aplicaciones de esta naturaleza, en donde el
programa se va adecuando para ir cubriendo
los diferentes requerimientos.
2. La organización modular del sistema permite
la reutilización y/o adaptación de las
descripciones de hardware diseñadas para el
sistema de visualización de imágenes, para el
desarrollo de otras aplicaciones sobre
dispositivos reconfigurables.
3. El puerto VGA de la tarjeta Spartan-3
establece una limitante en la profundidad del
color en las imágenes, al contar únicamente
con 1 bit para cada uno de los colores.
Sin embargo, el análisis de los resultados permite
el planteamiento de mejoras sobre el sistema
implementado,
perspectivas
de
trabajos,
aplicaciones y desarrollos a futuro en diversas
líneas de investigación, tales como:
1. Implementación
de
procesamiento
de
imágenes dentro del FPGA, que permita
obtener características relevantes de las
imágenes, para ser empleadas en otros
procesos, o en sistemas de reconocimiento de
patrones, formas o entornos.
2. Empleo del sistema de visualización de
imágenes para pantallas informativas, donde
se integre un módulo y controlador de interfaz
de red Ethernet, permitiendo a un software
central
proveer información
relevante
mediante imágenes del clima, programación
televisiva, recordatorios, estado del tráfico,
etc.
3. La evaluación de técnicas que permitan la
generación de un número mayor de colores,
variando dinámicamente los colores básicos en
un pixel.
ISBN: 978-607-28-0126-4
570
Avances de Ingeniería Electrónica 2013
XI.
Research
Methods,
Instruments,
Computers, 36(1), 107-112. 2004.
Referencias
&
[1] Pérez, S., Soto, E. y Fernández, S.: Diseño
de sistemas digitales con VHDL.
THOMPSON, 2002.
[14] R. González and R. Woods, Digital Image
Processing, 3rd. Edition. Prentice-Hall,
2008.
[2] Página de la tarjeta de Desarrollo Digilent
Spartan-3.
http://www.digilentinc.com/
Junio, 2013.
XII. Autores
[3] Pardo, F. y Boluda, J.: VHDL, Lenguaje
para síntesis y modelado de circuitos.
Alfaomega, 3ª edición, 2000.
[4] Integrated Silicon Solutions Inc., “Data
sheet IS61LV25616AL”, December, 2011.
[5] Digilent: User Guide Digilent Spartan-3
Starter Kit Board Board, Digilent, April,
2004.
[6]
M. C. Felipe Santiago Espinosa es Maestro en
Ciencias con especialidad en Electrónica por
parte del INAOE, incorporado al Instituto de
Electrónica y Mecatrónica (IEM) de la
Universidad Tecnológica de la Mixteca (UTM),
en donde es Profesor-Investigador desde 1998.
M.T.I. Rolando Ruíz Carbajal es Maestro en
Tecnologías de la Información por parte de la
Universidad Anáhuac e Ingeniero en Electrónica
por la UTM.
Edwards, V., Courtney, M. y Yang, K.: “A
FPGA
Paint
Brush
Application”,
Information Systems Education Journal,
Vol. 7, No. 36, Abril, 2009.
[7] Página de la VESA, Video Electronics
Standards Association,
http:// www.vesa.org, Mayo, 2013.
[8] Maleki, N., & Haghighi, B. Design of a
simple and stand-alone RS-232c interface.
Journal Of Chemical Education, 72(4),
A78.1995.
[9] Maxim Integrated: “Datasheet DS1265W”,
November, 2010.
[10] Maxim Integrated: “Datasheet DS1270W”,
November, 2010.
[11] Grout, Ian: Digital Systems Design with
FPGAs and CPLDs. ELSEVIER, 2008.
[12] Página
descriptiva
API
Microsoft
Windows,
http://msdn.microsoft.com/enus/library/windows/desktop/aa363214(v=vs
.85).aspx. Junio 2013.
[13] Monteiro, A., & Jordan, T. R.
Implementing communication between
Windows PCs and test equipment using RS232 and Borland C++ Builder. Behavior
ISBN: 978-607-28-0126-4
571
Descargar