Você está na página 1de 7

130

IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 2, JUNE 2008

Prcticas de laboratorio para estudiantes de ingeniera con FPGA


A. Castillo, J. Vzquez, J. Ortegn y C. Rodrguez
precio accesible y que dan la posibilidad de ser fcilmente adquiridos por las universidades. As tambin, existen programas acadmicos elaborados por parte de compaas fabricantes de FPGA; beneficiando a universidades por medio de donaciones de tarjetas para prcticas de laboratorio [2]. El FPGA es un dispositivo reconfigurable y programable por el usuario que contiene componentes capaces de realizar funciones lgicas mediante compuertas and, or, xor, etc. Tambin, cuenta con elementos de memoria interna y componentes embebidos por el fabricante como microcontroladores. El FPGA es un dispositivo de fcil programacin mediante Lenguajes de Descripcin de Hardware (HDL), se permite la programacin concurrente y su principal ventaja es que puede programarse mltiples veces bajando los costos cuando en el diseo se encuentran fallos y se requiera que sea reprogramado. Una vez que los FPGA estuvieron al alcance de las universidades, muchas de ellas empezaron a adecuar sus programas de asignatura para incorporar como parte del curso el diseo con FPGA [3]. En paralelo a la aparicin de estos dispositivos, la bibliografa bsica y reconocida se fue adecuando al incorporar a los FPGAs dentro de sus prcticas y ejercicios propuestos [4]. El problema surge cuando se quiere incorporar la enseanza de los FPGA en programas de ingeniera y solamente se dispone de un curso de diseo electrnico digital dentro de todo su programa de estudios. Algunas universidades lo han resuelto y han propuesto estrategias para carreras de ingeniera con esa problemtica. El caso anterior se considera vlido tratarlo como se ha propuesto en [5], estableciendo lecturas de material ya disponible en servidores web y auto-enseanza de VHDL por parte del alumno. Para carreras donde se dispone de diversas asignaturas de electrnica, se da la posibilidad de incorporar de manera ms detallada la enseanza de los circuitos digitales. Primeramente introduciendo asignaturas con circuitos no programables y posteriormente, el curso de electrnica digital con dispositivos programables y reconfigurables como los FPGA. As, ste ltimo puede ser llevado de manera ms provechosa y producir resultados con mayor xito en el estudiante como diseador. Cuando se ha decidido incorporar a los FPGA, se cuestiona que tipo de prcticas deben ser llevadas a cabo, por lo general en una primera instancia se experimenta con circuitos sencillos como diseo de circuitos sumadores, restadores y multiplexores, hasta llegar a implementar sistemas mnimos

Resumen Este artculo presenta la implementacin de ejemplos de prcticas de laboratorio relacionadas con el rea de procesamiento de imgenes utilizando procesadores embebidos en FPGA (Field Programmable Gate Array). Con la implementacin de estos ejemplos, el alumno aprender a realizar diseos con el enfoque hardware/software e incrementar sus habilidades como ingeniero, al integrar sus conocimientos en electrnica digital sobre procesadores embebidos en arquitecturas reconfigurables, y de informtica, al programar los algoritmos en C/C++. Los algoritmos propuestos en estos ejemplos de laboratorio para el procesamiento de las imgenes se ejecutan en el microcontrolador embebido Microblaze de Xilinx. Palabras Clave Canny, Educacin, FPGA, Microblaze, Sobel.

oy en da, el diseo de circuitos digitales ha cobrado real importancia dentro de los programas de asignatura en las ingenieras y es parte fundamental de la formacin bsica del estudiante. Hasta hace unos cuantos aos, la formacin prctica que se proporcionaba al alumno en el rea de diseo electrnico digital era el llevar a cabo prcticas de laboratorio con circuitos no programables. En estos programas, el alumno implementaba arquitecturas de diseos digitales como sumadores, multiplicadores, restadores, los cuales eran, si no difciles, s laboriosos de realizar, lo que en ocasiones daba como resultado diseos con desempeo muy pobre, debido a que apenas alcanzaban a procesar nmeros binarios de pocos bits. Lo anterior haca que la complejidad de implementacin de diseos con rendimientos mayores se incrementara, lo que ocasionaba que no se pudieran desarrollar en un solo curso de electrnica digital. En un contexto de globalizacin y competencia laboral, es necesario que los estudiantes tengan acceso a tecnologa emergente [1]. La evolucin en los dispositivos ha venido a mejorar el diseo e implementacin con circuitos digitales, disminuyendo el tiempo para el desarrollo de aplicaciones. Actualmente los FPGAs (Field Programmable Gate Array) representan dispositivos verstiles, de fcil programacin,
A. Castillo y C. Rodrguez pertenecen a la Universidad Autnoma de Yucatn, C.60 #491-A por 57 Col. Centro, Mrida, Yucatn, Mxico, (correo e.: acastill@uady.mx; crodrig@uady.mx). J. Vzquez y J. Ortegn pertenecen a la Universidad de Quintana Roo, Boulevard Baha s/n esq. Ignacio Comonfort, Col. Del Bosque, Chetumal, Quintana Roo, Mxico, (correo e.:jvazquez@uqroo.mx; jortegon@uqroo.mx).

I.

INTRODUCCIN

CASTILLO ATOCHE et al.: LABORATORY PROJECTS

131
PSM I/O PSM PSM I/O

como microcontroladores. Posteriormente, se pueden implementar dispositivos ms complejos como son encriptadores de datos, codificadores y decodificadores para procesamiento de voz [6], hasta llegar a aquellos en los cuales el diseo estar regido por alguna norma o estndar [7]. Si se hace una bsqueda de lo que se ha implementado hoy en da sobre FPGA, se hace notar que existe mucho desarrollo sobre el rea de procesado de seales y de comunicaciones. Con la facilidad de programacin de los FPGAs, se pueden implementar desde algoritmos muy sencillos hasta los ms complejos; convirtindolos en sistemas embebidos para aplicaciones especficas, que tendrn caractersticas de eficiencia en cuanto a velocidad de procesamiento, dando la posibilidad de implementar paralelismo y as mejorar el desempeo del sistema diseado. Analizando los diversos campos de aplicacin y sobre los cuales se estn enfocando las universidades en sus prcticas de laboratorio para la enseanza de los FPGA, se hace notorio que el procesamiento sobre imgenes se ha estado desarrollando en algunas de ellas. En [8], se hace un procesamiento para aplanar imgenes en tiempo real. En [9], [10] se lleva a cabo procesamiento de imgenes utilizando herramientas adicionales como Xilinx System Generator [2], que es una herramienta utilizada en conjunto con Simulink de Matlab y que tiene la facilidad de realizar Co-Simulacin en el FPGA. As, en este artculo, se proponen dos ejemplos para desarrollar prcticas de laboratorio del rea de procesamiento de imgenes utilizando FPGA. Los ejemplos presentados pueden ser implementados por estudiantes de ingeniera que hayan recibido formacin para realizar diseo sobre FPGA. As tambin, debern contar con conocimientos generales sobre matemticas, debido a que los algoritmos de procesamiento de imgenes que se implementarn requieren de matemtica bsica para ser comprendidos. Adicionalmente, sern necesarios conocimientos de programacin en C++, por lo que este curso se recomienda para alumnos de carreras de ingeniera de semestres finales. II. HERRAMIENTAS DE DISEO La evolucin de los circuitos programables para llegar a los FPGA ha sido larga; comenzando con los dispositivos PLA (Programmable Logic Array), PAL (Programmable Array Logic), SPLD (Simple Programmable Logic Device), CPLD (Complex Programmable Logic Device) y recientemente la aparicin de los FPGA. Bsicamente la arquitectura interna de un FPGA es la mostrada en la Fig. 1.

CLB

CLB

CLB

CLB

I/O

I/O

PSM

PSM

PSM

Fig. 1. Arquitectura interna de un FPGA

Se puede observar a tres elementos esenciales: los CLBs (Configurable Logic Blocks), IOBs (Input/Output Blocks) y los PSMs (Programmables Switch Matrix). Los diseos que se implementen en un FPGA sern llevados a cabo programando a cada uno de estos elementos ya mencionados. La Fig. 2 muestra la estructura interna de un CLB de manera muy generalizada, la cual depende de la complejidad de su diseo por parte del fabricante. Puede observarse un elemento importante, el LUT (Look-Up Table) que ser el encargado de implementar las funciones booleanas requeridas. La cantidad de entradas a este elemento depender del tipo de integrado FPGA y al nmero de bloques de entrada/salida del mismo. Lo anterior se encuentra asociado a la granularidad del dispositivo. As tambin, en la salida del LUT se puede observar un elemento de memoria, el cual es importante para mantener a las salidas en sincrona; por lo general es un elemento de memoria tipo D con entrada de reloj (Flip-Flop).
Memoria de 1 bit F F-F D FQ

A B C F

LUT Funcin Booleana de 4 variables

CLB

Fig. 2. Estructura interna de un CLB

La unidad PSM realizar la conmutacin de las salidas de los CLB hacia otros elementos de este mismo tipo, hasta llegar con la seal correcta a los bloques de salida del FPGA. Para mayor aprendizaje de los dispositivos programables, vase [11]. Ahora bien, Cmo realizar el diseo de alguna arquitectura? Lo primero es conocer los requerimientos del elemento a disear y posteriormente implementarlo con algn lenguaje de programacin de descripcin de hardware como lo puede ser VHDL o Verilog. Posterior a ello, seguir el flujo de diseo como es propuesto en [12], el cual contina con la sntesis, implementacin, verificacin de restricciones de tiempo y finalmente la programacin del FPGA con el diseo implementado. Las ejemplos de laboratorio a llevarse a cabo se implementarn difiriendo del procedimiento de diseo mencionado en [12], debido a que estarn diseadas en el EDK (Embedded Development Kit) de Xilinx, el cual tiene todo lo relacionado a la creacin de proyectos para sistemas embebidos y su lenguaje de programacin es mediante C/C++. Se aprovechan as las ventajas de este lenguaje de

132

IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 2, JUNE 2008

programacin. Otra opcin sera utilizar el procesador embebido NIOS, de Altera [13]. Esta herramienta implementa un microcontrolador embebido en el FPGA llamado Microblaze, el cual contendr el cdigo de cada uno de los ejemplos de laboratorio a ser diseados. Una vez que se hayan implementados los cdigos en C/C++, estos sern convertidos a un flujo de bits, realizando la programacin del dispositivo. En [14] puede encontrarse una comparativa entre el flujo de diseo tradicional y el flujo de diseo asistido por computadora para sistemas programables en un chip (SOPC, por sus siglas en ingls), como se realiza en este trabajo. A. Tarjeta de desarrollo Para realizar la implementacin de los algoritmos de procesamiento de imgenes, se har uso de la tarjeta Spartan 3E (Fig. 3) y del software para desarrollar sistemas embebidos de Xilinx. Este ltimo ha sido adquirido mediante el programa universitario de la compaa Xilinx. Las caractersticas esenciales de esta tarjeta son las siguientes: FPGA xc3s500e 232 pines de entrada/salida Arriba de 10,000 celdas lgicas Reloj oscilador de 50 Mhz 64 Mbyte de DDR SDRAM Flash serial SPI de 16 Mbits Flash paralelo de 128 Mbits Pantalla LCD de 2 lneas Puerto PS2, VGA, RS-232, Ethernet, interfaz USB, DAC/ADC, LEDs, Switches, push-buttons, puertos de expansin, entre otros. Puede ser utilizado para realizar prototipos de manera general: Aplicaciones de telecomunicaciones, servidores embebidos, transmisin de datos, procesado digital de seales, etc.

abrir el programa principal del EDK llamado Xilinx Platform Studio. Una vez abierto el programa, aparecer un asistente para la creacin de proyectos que incluir al procesador embebido Microblaze. En el asistente se deber especificar la ruta en donde el proyecto ser creado y posterior a ello, configurar el fabricante de la tarjeta (Xilinx), nombre de la tarjeta (Spartan-3E Starter Board) y revisin (C). En la siguiente ventana se presentarn las opciones de microprocesadores disponibles a usar en el diseo. Para esta tarjeta solamente estar disponible el procesador Microblaze. Microblaze es un procesador RISC de 32 bits basado en arquitectura Harvard, con buses separados para instrucciones, datos y posibilidad de usar memorias cach independientes para cada bus. Esta arquitectura est optimizada para su implementacin sobre FPGA de Xilinx. Su conjunto de instrucciones incluye instrucciones de 32 bits con tres operandos y dos modos de direccionamiento. Microblaze usa un bus especfico (LMB) para acceder a las memorias de bloque disponibles en el FPGA, mientras que emplea el bus estndar OPB de IBM para conectar memoria externa y perifricos. La estructura de Microblaze se presenta en la Fig. 4.

Fig. 4. Arquitectura del Procesador Microblaze y perifricos aadidos.

Fig. 3. Tarjeta de desarrollo Spartan-3E, soporta 500,000 compuertas dentro del FPGA de Xilinx. Puede incorporar un ncleo como el procesador embebido Microblaze de Xilinx.

Para mayor informacin sobre las caractersticas fsicas, ver [15]. B. Metodologa para la creacin de proyectos en el EDK Ahora se describirn los pasos para la creacin de un proyecto en la versin 8.1 del EDK. Primeramente se debe

Una vez que se ha elegido a la tarjeta deseada y el procesador, se proceder a seleccionar los perifricos que sern anexados como parte del microcontrolador Microblaze. En las siguientes ventanas se debern elegir las opciones que se presentan a continuacin: una memoria local de 32KB, elegir la opcin no debug, habilitar solamente al dispositivo RS 232 DCE con su respectiva interrupcin y deshabilitando el dispositivo DTE. As tambin, los diodos emisores de luz debern elegirse para ser utilizados como medio de sealizacin en los algoritmos a disear. Como se podrn implementar diversos algoritmos, debern elegirse los elementos tipo switches. Esto servir para indicar que algoritmo diseado ser el que funcionar en el momento deseado. Finalmente la Fig. 5 muestra las opciones elegidas y configuradas a travs del asistente. Se deber presionar generar para concluirlo. Una vez que el asistente ha terminado, el procesador Microblaze y sus perifricos estarn estructurados como el presentado en la arquitectura de la Fig. 4. Ahora, en la pantalla del programa de software de diseo aparecern varias divisiones, las cuales sern el rea de trabajo. En la pestaa de aplicaciones, aparece la leyenda TestApp_Memory

CASTILLO ATOCHE et al.: LABORATORY PROJECTS

133

expandible. Expandiendo la leyenda, aparecer una subleyenda nombrada Sources conteniendo la ruta del archivo fuente en donde se ubicar cualquier diseo que requiera ser implementado y que estar alojado en el procesador Microblaze. En nuestro caso, este archivo es donde se implementarn los algoritmos de procesamiento de imgenes propuestos mediante el lenguaje de programacin C/C++. Ver Fig. 6.

A. Laboratorio 1: Sobel Objetivo: Implementar el algoritmo de Sobel para la deteccin de bordes utilizando la plataforma del procesador embebido Microblaze en el FPGA. El procedimiento debe tener como parmetro de entrada una imagen de por lo menos 128 x 128 pxeles (escala de grises) considerando los gradientes X-Y. B. Algoritmo Sobel El concepto fundamental para llevar a cabo el algoritmo de Sobel es la derivada, ya que los bordes representan realmente cambios de intensidad en una localizacin espacial determinada. Se pueden manejar dos rdenes de derivada: la primera y segunda derivada. A continuacin se presenta una breve explicacin sobre el concepto de derivada en la extraccin de bordes [16], [17]. En la Fig. 7, se observa con respecto al perfil de intensidad de lnea horizontal y el clculo de la primera derivada. El mismo comportamiento predecible aparece cuando se aplica la segunda derivada.
Imagen con bordes

Fig. 5. Opciones elegidas en el asistente para la creacin de proyecto en EDK


Perfil de intensidad de una lnea hor izontal

P rim e ra d e riva d a

S e g u nd a d e riva d a

Fig. 6. Ruta para alojar el cdigo del procesador Microblaze

Fig. 7. Deteccin de bordes mediante operadores derivativos

Cuando un diseo ha sido implementado en el lenguaje C/C++ y fue especificado correctamente, es momento de convertir la implementacin en un flujo de bits para lograr la configuracin del FPGA y as ste se comporte segn el diseo requerido. Para hacerlo se debe realizar lo siguiente: Construir el proyecto, generar el flujo de bits (generate bitstream) y finalmente descargar el flujo de bits al FPGA (download bitstream). De esta manera el FPGA contendr el diseo de manera fsica. Por cuestiones de espacio, no es posible describir lo anterior de forma grfica, adems de no ser el objetivo del presente artculo. III. MODELO DE PRCTICA DE LABORATORIO PARA PROCESAMIENTO DE IMGENES: ALGORITMO SOBEL Y CANNY. Estos ejemplos proponen la implementacin de los algoritmos Sobel y Canny. Estos algoritmos, se enfocan en la deteccin de bordes y/o esquinas. Los puntos de borde, o simplemente bordes son pxeles alrededor de los cuales la imagen presenta una variacin brusca en los niveles de gris. El objetivo consiste en dada una imagen, localizar los bordes ms probables generados por elementos de la escena y no por ruido. Se consideran como esquinas los puntos donde convergen los bordes de varias direcciones.

El vector gradiente de una funcin f(x,y) indica la direccin y magnitud del cambio mximo en la imagen, y est dado por la primera derivada. Para nuestro caso, el clculo del gradiente se realiza mediante mscaras de 3x3 y convolucionando a estas con la imagen a procesar. Las mscaras de Sobel (Fig. 8) se utilizan para realizar el clculo del gradiente de Gx y Gy.
z1 a) z 4 z 7 z2 z5 z8 z3 1 0 1 1 2 1 z 6 b) 2 0 2 c) 0 0 0 z9 1 0 1 1 2 1

Fig. 8. (a) Regin de la imagen de 3x3, (b) Mscara usada para obtener Gx en el punto central de la regin de 3x3, (c) Mscara usada para obtener Gy en el mismo punto.

Tanto Gx como Gy, reciben el nombre de operadores Sobel. El requisito bsico de un operador de derivacin es que la suma de los coeficientes de la mscara sea nula, para que la derivada de una zona uniforme de la imagen sea cero. La Fig. 9, describe la implementacin del pseudocdigo del algoritmo de Sobel. C. Laboratorio 2: Canny Objetivo: Implementar el algoritmo de Canny para la deteccin de bordes utilizando la plataforma del procesador

134

IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 2, JUNE 2008

embebido Microblaze en el FPGA. El procedimiento debe tener como parmetro de entrada una imagen de por lo menos 128 x 128 pxeles (escala de grises). Se deber considerar la implementacin de los algoritmos de supresin de nomximos y de umbralizacin.

vecinos. Ver Fig. 10. Para el paso e) se utiliza una doble umbralizacin donde los bordes que no rebasen el umbral inferior son eliminados y aquellos que sobrepasen el umbral superior son resaltados, los pxeles que se encuentren entre ambos umbrales son analizados y en caso de tener conexin con un pxel de alto brillo son marcados como pxeles fuertes. La Fig. 11, muestra la implementacin del pseudocdigo del algoritmo de Canny.

Sea : Mask = Sobel_X Mask1 = Sobel_Y m=1 Para cada i,j: x =0; y =0; Para p = - m:m Para q = - m:m

x = x + image_in(i+p,j+q)* Mask (p+m+1,q+m+1); y = y + image_in(i+p,j+q)* Mask1 (p+m+1,q+m+1);


Imangen_out(x, y) =

fin Fin fin

( x (i, j))2 + ( y (i, j))2

Fig. 10. Supresin de No-Mximos

Fig. 9. El Algoritmo Sobel implementa una convolucin entre la imagen de entrada y la mscara Sobel Gx y Gy.

IV. RESULTADOS DE ALGORITMOS IMPLEMENTADOS En la Fig. 12. a), se puede observar la imagen de entrada al FPGA. En la Fig. 12. b) se observa el resultado del laboratorio Sobel y en 12. c) el resultado del laboratorio Canny. Los diseos en C/C++ han sido implementados para la tarjeta Spartan 3E y estn disponibles bajo demanda, la solicitud puede ser hecha a los autores. Los algoritmos implementados hasta ahora son: Filtrado de imgenes a travs del filtro Gausiano (implementa la convolucin), Deteccin de Bordes a travs del algoritmo de Sobel, Canny, SUSAN, Realce de imgenes con el algoritmo Laplaciano, entre otros. Para poder realizar cada uno de los ejemplos propuestos, es necesario contar con una interfaz grfica, la cual sea capaz de enviar cada una de las imgenes a ser procesadas por el FPGA y posteriormente recibirlas de nueva cuenta para la visualizacin de los resultados. Esta interfaz grfica se ha diseado en software y es la encargada de enviar el flujo de imgenes al FPGA para su procesamiento y su posterior visualizacin. Dicha interfaz ha sido implementada en los laboratorios de la facultad de Ingeniera en Mecatrnica de la Universidad Autnoma de Yucatn. La interfaz del sistema se presenta en la Fig. 13. La imagen a tratar se elige desde la computadora personal y una vez configurada la velocidad de transmisin, con interfaz serial RS-232, es enviada al FPGA para su procesamiento segn el algoritmo elegido. V. ANLISIS DE IMPLANTACIN DEL CURSO

D. Algoritmo Canny El algoritmo de Canny est considerado como uno de los mejores mtodos de deteccin de contornos mediante el empleo de mscaras de convolucin, optimizando los tres criterios de deteccin, localizacin y respuesta nica ante un borde. Este algoritmo combina un operador diferencial con un filtro gaussiano. El algoritmo consiste bsicamente en cinco etapas: a) Suavizar la imagen mediante un filtro Gaussiano para reducir los efectos del ruido. b) Convolucionar la imagen con los operadores de gradiente direccionales (Sobel X,Y). c) Encontrar la magnitud y direccin del gradiente de la imagen. d) Suprimir los gradientes que no son mximos en la direccin del contorno. e) Umbralizar los bordes para eliminar aquellos que tengan poca relevancia en la imagen. Los incisos a) y b) fueron explicados anteriormente en la seccin anterior. Para hallar la magnitud del gradiente se suman los cuadrados de las respuestas en ambas direcciones. Computacionalmente resulta ms eficiente utilizar la suma de los valores absolutos de las respuestas en x e y, esto es:
2 image( x, y ) = 2 x image( x, y ) + y image( x, y )

x image( x, y ) + y image( x, y )

(1)

Para simplificar el algoritmo de supresin de no mximos es posible aproximar las direcciones a slo cuatro ngulos; 0, 45, 90 y 135. En el paso d) se analizan los vecinos que se encuentren sobre la misma direccin del gradiente y se conservan nicamente aquellos que sean mayores (en intensidad) que sus

Como se ha visto, el tema del procesamiento de imgenes con FPGA no es nuevo. Sin embargo, ste no ha sido significativamente explotado, desaprovechndose las ventajas del procesamiento paralelo que es una de las caractersticas principales de estos dispositivos, la velocidad de procesamiento, y la posibilidad de ser utilizado como elemento embebido para aplicaciones especficas en el rea de procesamiento de imgenes. Otros cursos incorporan a los dispositivos FPGA dentro de su programas acadmicos. Por

CASTILLO ATOCHE et al.: LABORATORY PROJECTS

135
image(i, j ) =0;

ejemplo, [18] hace uso de sesiones prcticas de laboratorio para el diseo de Unidades Aritmtico Lgicas, unidades de memoria y unidades de control a travs de Handel-C. As tambin, contempla sesiones para la enseanza de la paquetera ISE de Xilinx y el uso de Visual C++. En [19], [20] se puede encontrar un curso de asignatura que busca la integracin de sistemas completos que incluyan el uso de todos los conocimientos del alumno aprendidos con la implementacin de soluciones a travs de FPGA. El tipo de proyectos finales es variado: implementaciones relacionadas con las comunicaciones, control y procesamiento de imgenes, entre otras. Ninguno de los cursos se ha dedicado exclusivamente al procesamiento de imgenes con FPGA.
Sea : Image_in una imagen de NxM // Sobel X x image _ in ( i , j ) // Sobel Y y image _ in ( i , j ) Para cada (i,j) Angulo(i,j)=arctan( x image _ in(i, j ) / yimage _ in(i, j ) )* (180/pi) Si Angulo(i,j) < 22.5 Angulo =0 Si no Angulo(i,j) < 67.5 Angulo =45 Si no Angulo(i,j) < 112.5 Angulo =90 Si no Angulo =135 fin
image(i, j ) =

fin fin fin fin fin

Fig. 11. Implementacin del pseudocdigo del algoritmo de Canny.

a) Imagen de entrada

( x image _ in(i, j ) )2 + ( y image _ in(i, j ) )2


b) Sobel c) Canny Fig. 12. Resultado del laboratorio de deteccin de contornos

fin Pixel_izq= 0; Pixel_der= 0; Para i = 2:N-1 Para j =2:M-1 Si Angulo(i,j) == 0 Pixel_izq= image(i, j + 1) ; Pixel_der= image(i, j + 1) ; Si no Angulo(i,j) == 45 Pixel_izq= image (i + 1, j 1) ; Pixel_der= image(i 1, j + 1) ; Si no Angulo(i,j) == 90 Pixel_izq= image(i + 1, j ) ; Pixel_der= image(i 1, j ) ; Si no Angulo(i,j) == 135 Pixel_izq= image(i 1, j 1) ; Pixel_der= image(i + 1, j + 1) ; fin Si image(i, j ) >= Pixel_izq & image (i, j ) >= Pixel_der
image(i, j ) =255;

Fig. 13. Interfaz del sistema de transmisin de imgenes por puerto serial implementado para las prcticas de laboratorio.

Si no
image(i, j ) =0;

fin fin fin Para cada (I,j) Si image (i, j ) > t1


image (i, j )

= 255;

Si no image (i, j ) < t2 image (i, j ) = 0; Si no Para (p=-1; p<2; p++) Para (q=-1; q<2; q++) num2 = image (i + p, j + q ) ; Si num2 >= t1 image(i, j ) =255; Si no

Los ejemplos de laboratorio para el desarrollo de prcticas de laboratorio han sido llevados a cabo en la Universidad Autnoma de Yucatn, Mrida, Mxico; en la asignatura de Microcontroladores Embebidos. Esta asignatura es impartida en Ingeniera en Mecatrnica, posterior a las asignaturas de Sistemas Digitales y Microcontroladores. Los resultados obtenidos al final del curso, han sido satisfactorios en cuanto enseanza-aprendizaje debido a que los alumnos en generaciones pasadas solamente haban hecho diseo sobre FPGA en tpicos relacionados a comunicaciones, procesamiento de seal y nunca sobre imgenes, lo cual los estimul para el desarrollo de temas posteriores mucho ms complejos sobre este rea de trabajo.

136

IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 2, JUNE 2008

VI. CONCLUSIONES El artculo presenta una revisin del campo acadmico en diseo de circuitos lgicos con FPGA. As tambin, plantea dos ejemplos para desarrollar prcticas de laboratorio para el rea de procesamiento de imgenes, lo cual no ha sido aprovechado por las universidades que introducen FPGA en sus programas de estudio, limitndose a aplicaciones en el rea de telecomunicaciones y procesamiento digital de seales. Los algoritmos propuestos forman parte de un programa de laboratorio para la enseanza de los FPGA orientado al procesamiento de imgenes. Para una mayor funcionalidad en el procedimiento de envo y recepcin de imgenes hacia el FPGA, se ha implementado una interfaz grfica en los laboratorios de la Universidad Autnoma de Yucatn. Estos ejemplos de laboratorio brindarn al estudiante el desarrollo de sus habilidades, conocimiento y razonamiento indispensables para desarrollarse en un futuro como diseador de circuitos programables. REFERENCIAS
[1] A. Hernandez Ferreira, Z. Arevalo Velosa, Experiencias y reflexiones sobre la enseanza de la Electrnica en tiempos de grandes cambios cientficos, tecnolgicos y de globalizacin. IEEE Latin America Trans., Vol. 5, No. 1, pp. 62-69, March 2007. Programa Universitario de Xilinx (XUP). Disponible en: http://www.xilinx.com/univ/ J. Cerda, M. Martnez, M. Larrea, R. Gadea and R. Colom, An active methodology for Teaching Electronic System Design. IEEE Trans. On Education, Vol. 3, pp. 355-359, August 2006. M. M. Mano and C. R. Kime, Logic and Computer Design Fundamentals. Second Edition, Prentice Hall, 2000. J. Amaral, P. Berube and P. Mehta, Teaching Digital Design to Computing Science Students in a Single Academic Term. IEEE Trans. On Education, Vol. 48, pp. 127- 132, February 2005. E. Garca, M. Guzman and D. Torres, A Hardware Implementation of Punctured Convolutional Codes to Complete a Viterbi Decoder Core. Journal of Applied Research and Technology Vol. 3 No. 2, pp. 77-88. August 2005. D. Torres, A. Castillo, J. Moreno, J. Vzquez and J. Verdn, A 2.5 Gbps SONET STS-48/SDH STM-16 Add Drop Multiplexer. VIII Workshop Internacional. Guadalajara, Jalsco, Mxico. Abril 2002. C. F. S. Paez, H. Gellon, J. D. D. Gazzano, M. A. Guarnes, Implementacin de un mtodo de aplanado de imgenes por transformacin inversa utilizando diferentes recursos. IEEE Latin America Trans., Vol. 2, No. 2, pp. 114-119, June 2004. A. Toledo, P. Navarro, F. Soto et al, Experiences on Developing Computer Vision Harware Algorithms using Xilinx System Generator, Microprocessors and Microsystems 29, p. 411-419, Elsevier, 2005. C. Rodrguez, R. Rivero, A. Castillo, J. Vzquez, Procesamiento de Imgenes con Xilinx System Generator, Primer Congreso Internacional de Sistemas Computacionales y Electrnicos (CISCE2006), Instituto Politcnico Nacional, Escuela Superior de Cmputo, Ciudad de Mxico, Agosto, 2006. A. K. Sharma, Programmable Logic Handbook: PLDs, CPLDs, and FPGAs. McGraw-Hill, 1999. S. Yalamanchili, Introductory VHDL: From Simulation to Synthesis. Prentice Hall, 2000. http://www.altera.com/education/univ/unv-index.html T. Hall and J. Hamblen, System-on-a-Programmable-Chip Development Platforms in the Classroom. IEEE Trans. On Education, Vol. 47, pp. 502-507, November 2004. Xilinx UG 230 Spartan-3E Starter Kit Board User Guide, 2007. G. Pajares, Visin por Computador. Imgenes Digitales y Aplicaciones Alfaomega Grupo Editor, Febrero 2003. R. Gonzalez, R. Woods, Digital Image Processing Using MATLAB, Prentice Hall; 1st edition, September 5, 2003.

[18] J. Granado, M. Vega, J. Ballesteros, J. Snchez, J. Gmez, Using an FPGA Implementation of the Multicycle MIPS Machine to Teach Reconfigurable Computing in the new EHEA, Congreso en Tecnologas Aplicadas a la Enseanza de la Electrnica 2006, UPM, Madrid, Espaa, 2006. [19] J. Tombs, M. Aguirre, A. Torralba, L. Garca, Experiencias de la Utilizacin de FPGAs en la Enseanza de la Microelectrnica Digital, Jornadas sobre Computacin Reconfigurable y Aplicaciones 2001, Alicante, Espaa, 2001. [20] S. Merchant, G. D. Peterson, and D. Bouldin, Improving Embedded Systems Education: Laboratory Enhancements Using Programmable Systems on Chip, IEEE Proceedings of the International Conference on Microelectronic Systems Education (MSE05), 2005.

Alejandro Arturo Castillo Atoche es Maestro en Ciencias por el Centro de Investigacin y de Estudios Avanzados del I.P.N. (2002) en Mxico, Ingeniero en Electrnica por el Instituto Tecnolgico de Mrida, Mxico (2000). Actualmente es profesor en la Universidad Autnoma de Yucatn y en el Instituto Tecnolgico de Mrida en los departamentos de Mecatrnica y Electrnica respectivamente. Sus reas de inters son: diseo en microelectrnica digital y tratamiento digital de seales. Javier Vzquez Castillo es Maestro en Ciencias por el Centro de Investigacin y de Estudios Avanzados del I.P.N. (2002) en Mxico con la especialidad en telecomunicaciones, Ingeniero en Electrnica con especialidad en sistemas digitales por el Instituto Tecnolgico de Mrida, Mxico (2000). Actualmente es profesor de la Universidad de Quintana Roo. Sus reas de inters son: diseo en microelectrnica digital, tratamiento digital de seales y diseo de dispositivos para telecomunicaciones. Jaime Silverio Ortegn Aguilar es Doctor en Ciencias por el Centro de Investigacin y de Estudios Avanzados del I.P.N. (2007) con la especialidad en Ingeniera Elctrica, Maestro en Ciencias por el mismo centro (2002) en la especialidad en Ciencias de la Computacin, Licenciado en Ciencias de la Computacin por la Facultad de Matemticas de la Universidad Autnoma de Yucatn, Mxico(2000). Actualmente es profesor de la Universidad de Quintana Roo. Sus reas de inters son: tratamiento digital de seales, visin por computadora y diseo de dispositivos para telecomunicaciones. Carlos Rodrguez Cruz es Ingeniero Fsico con tesis en "Procesamiento de Imgenes en Hardware Reconfigurable" por la Facultad de Ingeniera de la Universidad Autnoma de Yucatn, Mxico (2006). Actualmente es tcnico acadmico en los laboratorios de Ingeniera en Mecatrnica de la Facultad de Ingeniera de la Universidad Autnoma de Yucatn. Sus reas de inters son el procesamiento de imgenes en hardware reconfigurable, los sistemas empotrados y la instrumentacin.

[2] [3] [4] [5] [6]

[7] [8]

[9] [10]

[11] [12] [13] [14] [15] [16] [17]

Você também pode gostar