Oscar Ordaz, Arturo Rico, José Arceo y Lizbet González: Procesador Elem ental en FPGA
1
Implementación de un Procesador Elemental en unFPGA 1, 2
1
1
Oscar Osvaldo Ordaz García , Arturo Aref Rico Sabag , José Guadalupe Arceo Olague y 1 Lizbet Jacqueline González Carrillo . 1
2
Unidad Académica de Ingeniería Eléctrica, Universidad Autónoma de Zacatecas, Av. Ramón López Velarde # 801; C.P. 98060 Zacatecas, Zac, México. Tel. +(492) 9256690 Ext. 1512 y 1511.
Departamento de Arquitectura de Computadoras y Tecnología Electrónica, Universidad de Córdoba. Edificio Leonardo Da Vinci. Campus de Rabanales. Ctra. Madrid - Cádiz (N-IVa) km. 396. 14071-Córdoba, España. Tel. + 34 957 21 83 27. correo-e:
[email protected],
[email protected],
[email protected] [email protected].
Resumen — El presente trabajo tiene como objetivo la implementación del Procesador Elemental (PE) de un microprocesador para el procesamiento de imágenes en un FPGA. Se realiza un análisis de la arquitectura del microprocesador Xetal (fabricado por Philips) para el procesamiento de imágenes. La arquitectura y el set de instrucciones del PE se describen en el lenguaje de descripción de hardware Handel-C. El diseño descriptivo se exportó utilizando la herramienta XilinxISE. Esta herramienta sintetiza los lenguajes descriptivos para implementar los circuitos digitales sobre un FPGA. Los resultados obtenidos de la implementación se establecen en términos de la cantidad de elementos utilizados, como son las compuertas lógicas y el conjunto de recursos usados en el FPGA requeridos para la implementación del hardware. Abstract – The objective of this work is the implementation in a FPGA of the Processor Element (PE) of a microprocessor for image processing. Is performed an analysis of the Xetal’s (manufactured by Philips) microprocessor architecture for image processing. For the description of the PE and its instruction set was used the language of hardware description Handel-C. The description of the hardware was exported using the Xilinx-ISE. This tool synthesizes the descriptive languages to implement the digital circuits on a FPGA. The implementation’s results are established in terms of the quantity of used elements like logical floodgates and the group of resources used in the FPGA, required for the hardware implementation.
Descriptores — FPGA (Field Programable Gate Array), HDL (Hardware Description Language), PE (Elemental Processor), SIMD (Single Instruction, Multiple Data).
I. INTRODUCCIÓN
OS seres humanos poseemos cinco sentidos, de los cuales la vista es el más importante, ya que es el sentido humano más perfecto y evolucionado; éste nos permite conocer mediante impresiones luminosas el volumen, la forma, el color, el tamaño y las demás cualidades de los objetos que nos rodean. Por lo tanto el estudio de la tecnología de formación de visualizaciones en pantallas (ya sea video cámaras, monitores, video consolas, etc.) tiene una amplia investigación, teniendo en cuenta que las visualizaciones actuales se muestran en tiempo real, éstas se basan en unidades de procesamiento de imágenes, desarrolladas principalmente para procesar datos gráficos en video cámaras y otros dispositivos visuales.
L
El proceso de representar imágenes en tiempo real, es un gran reto, al igual que la detección de rostros es un ámbito de investigación muy activo, durante más de 25 años [1] han surgido nuevas técnicas basadas en esta tecnología.
Encuentro de Investigación en IE, 25 — 26 de Marzo, 201 0
El procesamiento de video es una tarea difícil, ya que involucra el uso de sistemas de alta eficiencia. [2] Por otra parte, hay una creciente migración de sistemas de video analógico a digital, por el interés que existe en las tecnologías inteligentes para diversas aplicaciones comerciales, industriales o militares. [3] Este tipo de aplicaciones necesitan hardware de propósito específico. [4] En base a estos requerimientos y más, han surgido microprocesadores con arquitecturas paralelas. El Xetal es un microprocesador paralelo desarrollado por Philips Research y NXP Research, fue concebido en 1999. Este microprocesador contiene una combinación de sensores CMOS y CCD (dispositivo acoplado por carga) en el mismo chip, con la captura y procesamiento de imágenes combinadas en la misma etapa, en él es posible el paralelismo para procesar imágenes, hasta el nivel en que cada píxel tiene una lógica de procesamiento dedicado. El procesamiento paralelo del microprocesador es realizado por 320 Procesadores Elementales (PE’s), los cuales tienen, cada uno, una memoria de 16 líneas. En la actualidad con este tipo de microprocesadores se pueden ejecutar algoritmos de visión, tales como el reconocimiento y seguimiento de objetos, usado en una máquina de juego de pinball, además de procesamiento de video en tiempo real para control de robots. [5] A partir de lo anterior, es fundamental conocer como esta organizada la arquitectura de un microprocesador paralelo y analizar el funcionamiento de los procesadores elementales que están dentro de él, para facilitar éste análisis se utilizó un lenguaje de descripción de hardware, el cual permite implementar diseños en FPGA’s; además de otras herramientas necesarias para la compilación. Los lenguajes HDL’s, son para descripción de hardware, es decir “Describen un comportamiento propio de un circuito en sentido amplio”. Para implementar las descripciones es necesario utilizar módulos programables, en particular se utilizó un FPGA (Field Programmable Gate Array). Un modulo lógico programable ó FPGA, es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad se pueden programar. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una compuerta lógica o un sistema combinacional, hasta complejos sistemas que están dentro de un chip. [6]
77
Este trabajo se enfocó en implementar el PE de un microprocesador paralelo, empleando un lenguaje descriptivo y un software para la compilación y exportación de éste hacia un FPGA. El artículo esta organizado de la siguiente manera, en el apartado II se menciona los tipos de paralelismo y sus clasificaciones, en el III se muestra un análisis del microprocesador Xetal, en el IV se comentan las herramientas necesarias para éste trabajo. La implementación del PE en el FPGA se desarrolla en el V, en el VI los resultados obtenidos y finalmente las conclusiones. II. PARALELISMO
La computación paralela es una forma de computación en la que muchos cálculos se llevan a cabo simultáneamente, [7] trabajando bajo el principio de que “grandes problemas pueden ser divididos en pequeños”, que entonces son resueltos concurrentemente. Hay varias y distintas formas de computación paralela: a nivel bit, de instrucción, de datos y de tarea. El paralelismo se emplea en computación de alto rendimiento, y el interés ha crecido debido a las limitaciones físicas que restringen la ampliación de frecuencia. [8] El consumo de energía de las computadoras se ha convertido en una preocupación en los últimos años, [9] la computación paralela es el paradigma dominante de las arquitecturas de computadoras, principalmente en forma de procesadores multi-núcleo. [10] Con el paso del tiempo, se ha buscado una clasificación del paralelismo en computadoras y programas para lograr que el flujo de datos fuera el deseado, a estas clasificaciones se les llamo taxonomía de Flynn. A. Taxonomía de Flynn. Michael J. Flynn creo un sistema de clasificación para computadoras y programas en paralelo (y secuenciales), conocido como taxonomía de Flynn; ésta se basa en atender el flujo de datos e instrucciones en un sistema. Un flujo de instrucciones es el conjunto de rutinas secuenciales que son ejecutadas por un procesador, y una serie de datos es el flujo secuencial de datos requeridos por las instrucciones. Flynn clasificó los programas y las computadoras que funcionan usando un conjunto simple o múltiple de instrucciones, y se especifica sí éstas instrucciones usan un conjunto simple o múltiple de datos.
78
Oscar Ordaz, Arturo Rico, José Arceo y Lizbet González: Procesador Elem ental en FPGA
Además de la taxonomía de Flynn existen otras clasificaciones de arquitecturas paralelas, y al igual que en la de Flynn, en éstas existen las Arquitecturas Sistólicas, ya sea como Arreglos Sistólicos o Arreglos de Procesadores Sistólicos, lo que hace notar que éstos arreglos son un tema de importancia para desarrollar investigación. Las Arquitecturas Sistólicas son estructuras interconectadas por unidades de procesamiento llamadas celdas. Ésta es una forma especial de computación paralela, donde las celdas (es decir, procesadores) calculan y almacenan datos de manera independiente. En general un arreglo sistólico esta compuesto, por una matriz con filas de unidades de procesamiento de datos llamadas celdas. Las Unidades de Procesamiento de Datos (DPU’s) son similares a las Unidades Centrales de Procesamiento (CPU’s). Cada celda comparte la información con sus celdas vecinas.
clasificación SIMD, así como conocer la arquitectura del microprocesador.
Para apreciar la diferencia entre una arquitectura convencional y una matriz sistólica, la Figura 1 presenta ambas arquitecturas en bloques. La arquitectura monoprocesador a), y una matriz sistólica lineal b). Se puede ver que la matriz sistólica lineal reemplaza a un solo PE por un conjunto de PE’s de las mismas características. Dirigiendo así el flujo de datos para obtener un alto rendimiento con menos acceso a memoria. [11]
B. Arquitectura.
Figura 1. Diagrama a bloques de; a) Arquitectura Monoprocesador y b) Matriz Sistólica Lineal Un arreglo sistólico consiste en un gran número de PE’s simples e idénticos, los cuales están interconectados únicamente con procesadores adyacentes (comunicación local) y con los cuales interactúan.
A. SIMD.
En computación, SIMD (Single Instruction, Multiple Data) es una técnica empleada para obtener paralelismo a nivel de datos. El Xetal se puede considerar también como un chip SIMD que trabaja en paralelo. [12] Este tipo de microprocesadores contiene varios PE’s combinados dentro de un LPA (Linear Processor Array)). Cada PE realiza la misma operación pero con diferentes datos. Un PE generalmente tiene una AU (Arithmetic Unit) y MU (Memory Unit). El flujo del programa es controlado por el GCP (Global Control Processor), el cual controla al contador del programa y el paso de instrucciones a cada PE’s del LPA.
El LPA del Xetal contiene 320 PE’s, cada uno con su propia AU y MU. La AU contiene un acumulador, un sumador y un multiplicador con instrucciones de comparación, suma, resta y multiplicación acumulativa [13], [14]. Los PE’s tienen una bandera que se utiliza para instrucciones de paso condicional. El Xetal usa el modelo de memoria compartida de conexión limitada. Una descripción del microprocesador Xetal se observa en la Figura 2. La AU opera con dos columnas de memoria para una imagen de 640 píxeles de ancho. Cada elemento de memoria es de 10 bits. Una sola imagen contiene 480 líneas y la AU puede ejecutar un máximo de 1,560 instrucciones por PE. Cada AU tiene acceso a las MU’s de sus vecinos directos, lo que hace posible leer desde ellas. Puesto que no existe ningún vecino izquierdo del PE 1 y ningún vecino derecho del PE 320, la lectura de un vecino se traduce en la lectura de su propia MU.
Como un caso particular de las arquitecturas sistólicas, se puede considerar al microprocesador Xetal fabricado por Philips, el cual se usó como referencia para la implementación, en éste trabajo. III. MICROPROCESADOR XETAL
El paralelismo y el flujo de datos tienen diferentes formas. En esta investigación se considera la
Figura 2. Descripción del Microprocesador Xetal.
Encuentro de Investigación en IE, 25 — 26 de Marzo, 201 0
Los 320 PE’s son un número óptimo con respecto al formato básico de datos del patrón de Bayer de 2 * 2 píxeles. De hecho, un diseño de un LPA con 640 elementos sería ineficaz con respecto al área de silicio necesaria para su construcción, ya que la mitad de los PE’s permanecerían inactivos. En realidad, el cálculo sólo se realiza una vez en un color. Debido a la programación del LPA, el formato de entrada puede ser de diferente tipo, lo que permite una gran flexibilidad de acceso en el formato de entrada [15]. Una vez que se obtuvo la información necesaria del funcionamiento del microprocesador Xetal, es necesario conocer las herramientas para realizar la implementación. IV. HERRAMIENTAS PARA LA IMPLEMENTACIÓN DEL PROCESADOR ELEMENTAL EN EL FPGA
Para el diseño de circuitos o de microprocesadores, existen los lenguajes de descripción de hardware que facilitan el trabajo a los ingenieros y permiten el desarrollo de grandes diseños. Por esto, se comentan las principales herramienta utilizadas. Los HDL’s son lenguajes alfanuméricos comprensibles, para describir circuitos electrónicos en un sentido amplio. La introducción de los HDL’s como métodos de descripción de circuitos han enriquecido el proceso de creación de diseños, lo que ha acelerado y abaratando los costos de desarrollo. Aunque existen diferentes lenguajes de descripción de hardware, este trabajo se desarrolló en Handel-C. Este lenguaje tiene un software para el diseño, compilación y sintetización, el cual se menciona a continuación.
profesional para el diseño de circuitos que permite, entre otras funciones la realización de desarrollos esquemáticos, la descripción de hardware y agregar códigos realizados en lenguajes descriptivos de otras plataformas; para su posterior simulación y síntesis. El Xilinx ISE exporta el diseño descriptivo que se quiere simular e implementar en el FPGA. C. Tarjeta de desarrollo con FPGA.
Una vez concluido el diseño y la compilación se realiza el sintetizado, el cual es necesario transferirlo al FPGA para hacer las pruebas y mejoras necesarias. La tarjeta de desarrollo usada en el proyecto es una BASYS, la cual contiene un FPGA de Xilinx, Spartan 3-E XC3S250ETQ144 con 250,000 compuertas. El FPGA dispone de multiplicadores de 18 bits y bloques de memoria RAM con puerto dual de rápido acceso. La tarjeta de desarrollo cuenta además con un puerto USB para la configuración del FPGA y la transferencia de datos, puede trabajar con frecuencias de 25, 50, y 100 MHz, dispone de 8 LED’s, 4 display de siete segmentos, cuatro botones que se activan mediante pulsos, 8 interruptores, un puerto PS/2, y un puerto VGA. El software para la intercomunicación con una computadora personal esta disponible mediante descarga gratuita. [16] Con todas estas herramientas se llevó a cabo la implementación. V. IMPLEMENTACIÓN DE UN PROCESADOR ELEMENTAL EN UN FPGA.
El diseño se realizó en base a lo comentado en el apartado III y para lo cual se utilizó como referencia funcional el diagrama del Arreglo Lineal de Procesadores, éste se puede observar en la Figura 3.
A. Software de desarrollo Celoxica.
El software de diseño DK de Celoxica, es un paquete de bibliotecas, herramientas y código fuente para ayudar a los usuarios en el diseño de hardware con lenguaje Handel-C y para el uso de otras plataformas de hardware a las que puede dar servicio. Este software se utilizó para la descripción del PE en Handel-C. B. Software de desarrollo Xilinx.
Para la sintetización del proyecto y su exportación hacia el FPGA, se utilizó el entorno de desarrollo Webpack, que ofrece el paquete informático Project Navigator ISE® de XILINX Inc. versión 8.2i. La herramienta Xilinx ISE (por sus siglas en inglés Integrated Software Environment) es una herramienta
79
Figura 3. Arreglo Lineal de Procesadores.
80
Oscar Ordaz, Arturo Rico, José Arceo y Lizbet González: Procesador Elem ental en FPGA
Figura 4. Diseño de Bloques para la Descripción del PE’s
Se implementó el repertorio de instrucciones del PE del Xetal. En la descripción del PE se incluyeron señales para visualizar la ejecución de las instrucciones en forma individual. El diseño se basó en un diagrama de bloques único, el cual sirvió para la descripción en las herramientas expuestas. A. Proceso de diseño y pruebas
En la Figura 4 se muerta el diseño generado, el cual sirvió como base metodológica para su descripción en el lenguaje. En éste se puede ver el GCP, el PE y sus respectivas líneas de comunicación para acceder a su memoria. El proceso para generar una instrucción, es controlado por las posiciones de los interruptores con los que cuenta la tarjeta de desarrollo. Una sola instrucción determina la operación a realizar, la selección de la memoria a utilizar, ya sea su propia memoria, la memoria derecha ó izquierda, de donde obtendrá la información para el procesamiento de cada píxel. El código de instrucciones del PE cuenta con 16 operaciones. El análisis de la arquitectura del microprocesador dio pauta para diseñar el proyecto de la siguiente forma: en un bloque de memoria (ésta hace la función del GCP) se almacenan las instrucciones del PE, las cuales definen que operación
del PE se realizará y también determina los datos con los que se efectuaran los cálculos, esto debido a que el PE puede tomar datos de las memorias de sus vecinos adjuntos, de su memoria, o datos generados por un coeficiente; la instrucción precisa que canal de la memoria (impar o par) se usa. La instrucción en el diseño se genera en 7 bits, los cuales son seleccionados a través de los interruptores de la placa, como se ilustra en la Figura 5. El proceso de selección de la instrucción de las memorias a utilizar derecha, izquierda o central, de dirección en la memoria, la visualización del acumulador y la ejecución de la instrucción, son funciones que corresponden al GCP. Una vez que el GCP (este caso la memoria) tiene almacenadas las instrucciones estas pueden ser ejecutadas por el PE. Al momento de ingresar los datos a la memoria del programa se puede visualizar la dirección de memoria en los dos primeros display BCD de siete segmentos de la placa de desarrollo, y también se puede visualizar el contenido de la instrucción en los siguientes display. Cabe hacer mención que los leds 0 y 1 de la placa son usados para visualizar los dos bits más significativos de la dirección de memoria.
Encuentro de Investigación en IE, 25 — 26 de Marzo, 201 0
81
Los resultados de la síntesis se obtienen del informe “FPGA Design Summary”. En estos informes se ve la cuantificación de los recursos necesarios. En la Figura 6 se muestran los resultados del “Static Timing Report”, que es el reporte generado después del “Place & Route”. La Figura 7 muestra el resumen de la síntesis del diseño generado en la herramienta de Xilinx. El reporte de tiempos del “Place & Route” se puede observar en la Figura 8.
Figura 5. Diagrama de Interruptores. Los interruptores de la placa de desarrollo son fundamentales, pues a partir de estos se insertan los valores para la instrucción. La placa de desarrollo también cuenta con 4 botones los cuales tienen dos formas de trabajar, bajo la perspectiva de carga o programación de la memoria, y bajo la perspectiva de ejecución del programa. El botón BTN3 se encarga de seleccionar el modo de funcionamiento, ya sea programación o ejecución. El botón BTN2 funciona de dos diferentes formas, en programación ejecuta el decremento de la dirección de memoria, y en ejecución realiza el RESET. El botón BTN1 funciona de dos maneras, en programación se encarga de efectuar el incremento de la dirección de memoria, y en ejecución visualiza el contenido del acumulador. El botón BTN0 solo funciona en modo de programación, se encarga de escribir en memoria la instrucción generada por los interruptores y realiza el avance a la siguiente dirección de memoria. VI. RESULTADOS.
Una vez realizada la descripción del proyecto, fue exportado al Xilinx ISE a través de un archivo .EDF para poder realizar la síntesis; para esto se ejecuta la opción “Synthesize” que se encuentra dentro del área de procesos del Xilinx cuando en la ventana del proyecto esté seleccionado el archivo principal. Esto nos ayuda también a ver el procedimiento de síntesis.
Figura 6. “Static Timing Report” Los resultados de la síntesis muestran que el diseño del procesador elemental ha consumido aproximadamente el 28% de los slices y el 25% de las LUT con los que cuenta el FPGA de Xilinx, Spartan 3E XC3S250E-TQ144, en la que se implementó el PE. En lo que respecta al porcentaje de bloques RAM’s utilizadas, es del 33% de las que tiene el FPGA. Por tal motivo, para implementar un número mayor de PE’s es necesario una tarjeta con mayor capacidad. En el Reporte de Tiempos del “Place & Route” se puede observar que “Net Skew” es de 0.052 ns, se trata de la diferencia de los retardos de tiempo para la asignación de la ruta mínima y máxima del circuito diseñado y el retraso máximo es de 0.121 ns. El retardo promedio de conexión para este diseño es: 1,064 ns. La demora máxima de conexión en un PIN es de: 5,116 ns.
82
Oscar Ordaz, Arturo Rico, José Arceo y Lizbet González: Procesador Elem ental en FPGA
En el lenguaje Handel-C se puede realizar paralelismo a nivel de instrucción, este punto es valioso para la implementación del PE. Este lenguaje también puede ser utilizado para descripciones de proyectos que requieran operaciones paralelas. Este es funcional porque permite expresar el paralelismo en una forma natural, pero son conceptualmente diferentes a los lenguajes secuenciales.
RECONOCIMIENTOS Este trabajo es parte de los proyectos de investigación con registro UAZ-2009-35667 y UAZ-2009-35600, éste último apoyado por PROMEP. REFERENCIAS Figura 7. Resumen de la Síntesis del Diseño. El retardo promedio de conexión en las 10 peores rutas para este circuito es: 4,056 ns. La estimación de restricciones para la frecuencia del reloj, en el peor caso de inactividad se de 0.974ns, y en el mejor caso factible es de 34.770 ns.
Figura 8. Reporte de Tiempos del “Place & Route”.
VII. CONCLUSIONES
Se implementó el procesador elemental del Xetal mediante la descripción en Handel-C, lo cual resultó conveniente para el diseño y comprensión de procesadores paralelos. La programación secuencial limita la realización de procesos, puesto que cada línea de código se ejecuta después de la anterior. El paralelismo a menudo entra en conflicto con componentes realizados en lenguaje secuencial, eliminando algo de funcionalidad y limitando el ámbito de mejoras.
[1] Jeanne, Vincent., Jegaden, Francois-Xavier., Kleihorst, Richard., Danilin, Alexander., Schueler, Ben. (2006). REAL-TIME FACE DETECTION ON A "DUALSENSOR"SMART CAMERA USING SMOOTHEDGES TECHNIQUE. DSC 2006 (Workshop on Distributed Smart Cameras), Boulder, CO, USA, October 31 2006. ISEN (Institut Superieur d_Electronique et du Numerique). 29 rue Cuirasse Bretagne, 29200 Brest, France. Philips Research Laboratories, High Tech Campus 5, 5656 AE, Eindhoven, The Netherlands http://www.iti.tugraz.at/dsc06/CR/ dsc06 p12 cr.pdf [2] Jeanne, Vincent., Jegaden, Francois-Xavier., Kleihorst, Richard., Danilin, Alexander., Schueler, Ben. (2006). REAL-TIME FACE DETECTION ON A "DUALSENSOR"SMART CAMERA USING SMOOTHEDGES TECHNIQUE. DSC 2006 (Workshop on Distributed Smart Cameras), Boulder, CO, USA, October 31 2006. ISEN (Institut Superieur d_Electronique et du Numerique). 29 rue Cuirasse Bretagne, 29200 Brest, France. Philips Research Laboratories, High Tech Campus 5, 5656 AE, Eindhoven, The Netherlands http://www.iti.tugraz.at/dsc06/CR/ dsc06 p12 cr.pdf. [3] Dockstader, S Shiloh L., Tekalp, Murat A. (2001). On the Tracking of Articulated and Occluded Video Object Motion, Real-Time Imaging, 7: 415-432. [4] Haritaoglu, Ismail, Harwood, David, Davis, Larry S. (2000). W4: Real-Time Surveillance of People and Their Activities, IEEE Trans. on Pattern Analysis and Machine Intelligence, 22: 809-830. [5] Kronenberg, I.R. Kleihorst, R.P. (mentor) Abbo, A.A. (mentor) 2003, Opti- cal Character Recognition with Xetal, Philips Research Technical Note.Unclassi_ed Koninklijke Philips Electronics N.V. 2003 http://www.extra.research.philips.com/publ/rep /nlur/PR-TN2003-00759.pdf [6] Clive Max_eld, May 15, 2006, "Xilinx un- veil revolutionary 65nm FPGA architecture: the Virtex-5 family", , International Conf. on Programmable Logic DesignLine.
Encuentro de Investigación en IE, 25 — 26 de Marzo, 201 0 [7] Almasi, G.S. and A. Gottlieb (1989). Highly Parallel Computing. Benjamin-Cummings publishers, Redwood City, CA. Source IBM Systems Journal. Volume 29. Issue 1. Pages: 165 - 166. ISSN:0018-8670. [8] Adve, Sarita V., Adve, Vikram S., Agha, Gul. and others. (2008). "Parallel Computing Research at Illinois: The UPCRC Agenda"Parallel@Illinois, University of Illinois at Urbana-Champaign. Department of Computer Science. Department of Electrical and Computer Engineering. Coordinated Science Laboratory. November 2008. http://www.upcrc.illinois.edu/documents/ UPCRC Whitepaper.pdf [9] Asanovic et al. Old [conventional wisdom]: Power is free, but transistors are expensive. New [conventional wisdom] is [that] power is expensive, but transistors are "free". [10] Asanovic, Krste., Bodik, Ras., Catanzaro, Bryan Christopher ., and others. et al. (2006). "The Landscape of Parallel Computing Research: A View from Berkeley". University of California, Berkeley. Technical Report No. UCB/EECS-2006-183. December 18, 2006. http://www.eecs.berkeley.edu/Pubs/TechRpts/ 2006/EECS-2006-183.html [11] Sosa Savedra, Julio C_esar., Pardo Carpio, Fernando., y Boluda Grau, Jose Antonio. (2007). Sistema de visi_on basado en procesado guiado por cambios y l_ogica recon_gurable para el an_alisis de movimiento de alta velocidad Departamento de Inform_atica. Escuela T_ecnica Superior de Ingenier__a. Universidad de Valencia. [12] Kleihorst, R.P.; Abbo, A.A.; van der Avoird, A.; Op de Beeck, M.J.R.; Sevat, L.;Wielage, P.; van Veen, R.; van Herten, H. (2001). Xetal: a lowpower highperformance smart camera processor. In IEEE Int. Symposium on Circuits and Systems (ISCAS) Volume 5. pages 215-218, Sydney, NSW, Australia, May. [13] Abbo, Anteneh., and Kleihorst, Richard. (2001). Xetal Software Framework Programming Guidelines. Philips Research Laboratories, NatLab. [14] Kleihorst, Richard, Lee, Mi-Suen., Abbe, Anteneh., Cohen-Salal, Eric. (2001). Real time skinregion detection with a single-chip digital camera. In ICIP 2001, Thessaloniki, Greece. [15] Abbo, Anteneh., & Kleihorst, Richard. (2002) Xetal Software Framework (programming guidelines) Philps Natlab Technical Note. /410. [16] Reference Manual. Digilent Basys Board. Revision: August 18, 2007. http://www.digilentinc.com/Data/Products/BASYS/BA SYS E RM.pdf
83