Sie sind auf Seite 1von 37

Co-Diseo (Hw-Sw) usando FPGA

Patricia Borensztejn y Marta Mejail Segundo Cuatrimestre 2012

Co-Diseo: Ideas para la materia


El objetivo de esta materia es continuar trabajando con los FPGA , en este caso, centrndonos en el desarrollo de sistemas embebidos sencillos cuya implementacin est formada por: cdigo (instrucciones, software, programa) y lgica (circuitos especficos) La caracterstica de este cuatrimestre es que nos vamos a concentrar en la implementacin de algoritmos de procesamiento de imgenes

Sistemas Embebidos
Un sistema embebido es un sistema computacional embebido dentro de un producto o componente. Por lo tanto, est diseado para realizar una tarea especfica, o un rango de tareas especficas, a menudo con restricciones de tiempo real.

Sistemas Embebidos
Un ejemplo de sistema embebido de procesamiento de imgenes es una cmara de fotos cuyas funciones son: exposicin, control del foco, pre visualizacin, compresin, descompresin.

Sistemas Embebidos de Procesamiento de Imgenes


Adems de poseer todas las caractersticas comunes a los sistemas embebidos: muy bajo consumo, pequeos, livianos, respuesta en tiempo real, etc, los de procesamiento de imgenes tienen una caracterstica mas:

Sistemas Embebidos de Procesamiento de Imgenes


Exhiben mucho paralelismo
Se aplican varios algoritmos uno detrs de otro Se aplica la misma operacin sobre todos los pixels

Paralelismo Temporal
Temporal: varios algoritmos, uno detrs del otro. Se puede explotar asignando un proceso (procesador, circuito hardware, thread, etc) a cada algoritmo. Solo mejora la velocidad si cada uno de los elementos de proceso despues de pasar los datos al siguiente proceso, vuelve a recibir datos. Se llama segmentacin.

Paralelismo Espacial
Se puede explotar enviando partes de la imagen a distintos elementos de proceso (thread, procesador, circuito hardware)

Recursos para explotar paralelismo


Hay muchos:
Instrucciones MMX, SSE, dentro del repertorio de instrucciones de un procesador tpico: misma operacin sobre distintos datos, en paralelo. Paralelismo espacial. Programacin paralela en threads: si el sistema es multicore y los threads operan en distintos cores. Paralelismo espacial y temporal. GPU: procesadores dedicados a imgenes. Explotan paralelismo espacial. DSP: Digital Signal Processors explotan paralelismo espacial (muchos son VLIW: paralelismo explcito) Hardware dedicado: ASICs y FPGA

Lo ms paralelo, mas rpido, de menos consumo y mas pequeo es el hardware dedicado. ASIC y FPGA.

Porque es paralelo el hardware?

Esta es la pregunta del milln Quien me la puede responder?

El hardware es paralelo
Es decir, los transistores , piezas elementales de los circuitos del hardware, funcionan siempre que se les suministre potencia. Y funcionan todos a la vez. Esa es la magia. Normalmente tanto paralelismo es excesivo, y no le sirve a nadie. Por lo tanto, el diseo de sistemas secuenciales es nada mas y nada menos que una manera de controlar el paralelismo.

El hardware es rpido
No solo porque es paralelo sino porque el diseo de un problema est acotado en tiempo por las caractersticas de ese problema, y de ninguno otro mas. Es decir, podemos hacerlo tan ptimo como querramos. Y por supuesto, podemos replicar parte de la solucin, lo cual permite agregar un nivel superior de paralelismo.

Placas de desarrollo con que contamos


Spartan-3E Starter Kit donada por XUP (Xilinx University Program) Spartan-3 Starter Board (Digilent) donada por XUP Xilinx Spartan-3A EVALUATION KIT (Avnet) (propio) Virtex-II Pro Development System (donada por Xilinx University Program) (esta discontinuada) Virtex4 FX12 Evaluation Board (Avnet) con Audio/Visual Card (Avnet) (Propiedad del Grupo de Investigacin: Embebidos) Virtex-5 OpenSPARC Evaluation Platform (Donacin de University Program OpenSparc) Nexys-2 comprada con subsidio UBACYT (2011-2013) Atlys comprada con subsidio UBACYT (2011-2013)

Otros dispositivos
VmodCam: Placa conteniendo dos sensores CCD con cable para

conexin a la placa Atlis Mdulos parlantes y micrfonos

Entorno de Desarrollo
Las herramientas que usamos son:

ISE Webpack 11.1 (xilinx.com) ModelSim PE Student Edition (model.com) ISE Design Suite 14.1 (incluye SDK y EDK) versin

Procesadores
Para la parte software del co-diseo tenemos varias posibilidades: Usar los procesadores embebidos en las FPGA Procesar en la PC Las placas de desarrollo que nosotros tenemos nos permiten utilizar los siguientes procesadores embebidos: Picoblaze (cualquiera) MicroBlaze (cualquiera) PowerPC (virtexII, virtex4) OpenSparc (virtex5)

Software: procesadores
Picoblaze: Es cdigo abierto. Se usa con las herramientas que ya conocemos. ISE 11.1 Se programa en ensamblador MicroBlaze Es un IP core. O sea, es lgica que se sintetiza en la FPGA, pero xilinx no da los fuentes. Est includo en la herramienta EDK-SDK. Necesitamos aprender a usar esa nueva herramienta. La herramienta NO es free. Tenemos algunas licencias dentro del Xilinx University Program. Se programa en C. Mas libreras propias del SDK. PowerPC (virtexII, virtex4) Es hard core. Se usan de manera similar al MicroBlaze, con las herramientas EDK y SDK. Se programa en C. OpenSparc (virtex5) Es soft core y abierto. Tenemos los fuentes. No s si se usa con el EDK-SDK hay que estudiarlo.

La propuesta es entonces
Elegir una aplicacin de procesamiento de imgenes e intentar explotar su paralelismo de cuantas formas se nos ocurra utilizando como plataforma las FPGA. Una posibilidad, ya que el nombre de nuestra materia es co-diseo, es utilizar uno o varios procesadores. (picoblaze, salvo que alguien se anime al microblaze)

Co-Diseo: Ideas para la materia


Lo que necesitamos para hacer un CoDiseo son dos cosas:
Un problema a co-disear Hardware y Software para su implementacin

Co-Diseo
Co-Diseo: Decidir que partes de un diseo sern implementadas por un procesador y que partes sern realizadas por circuitos especficamente diseados. La decisin tiene que ver esencialmente con los requerimientos de tiempos de la aplicacin. Por ejemplo: una instruccin de multiplicacin usando un multiplicador hardware es mas rpida que una rutina que utilice repetidas sumas para multiplicar. Se acuerdan?

Co-Diseo: Ideas para la materia


Esta es la propuesta: Hardware: placa Nexys2 Sofware: PicoBlaze Aplicacin: Dada una imagen de la PC cargarla en la memoria PSRAM de la placa Nexys2, aplicarle un procesado de imagen (a definir) , visualizarla en la VGA y enviar el resultado o la imagen postprocesada a la PC. La transferencia de la imagen de/hacia la PC se realizar utilizando el puerto USB.

O sea:
Imagen en formato raw

Imagen procesada en formato raw

Debemos saber:
Transferir imgenes de/hacia la PC por el puerto usb hacia la memoria externa de la placa nexys2. Como es la memoria externa y como se la lee y se la escribe desde el puerto usb, y desde la aplicacin de la FPGA Como es la memoria de video de la VGA y como se transfieren imgenes a ella. Como acceder a la memoria externa desde el PicoBlaze

Y luego que sepamos todo eso:


Elegir que proceso le haremos a nuestra imagen de entrada Decidir si el proceso se har:
Todo en hardware En hardware y en software: y en ese caso que parte a que sitio Todo en software (y porque no?)

Y luego.
HACERLO! En dieciseis clases Y si, son pocas.

Asi que yo.


Estuve trabajando estas vacaciones de invierno para darles muchas cosas ya hechas. Me bas en una aplicacin desarrollada en Estonia! Pero era para nexys3, asi que tuvimos que adaptarla, y jamas hubiera tenido xito si no fuera por Andres Stoliar, que me ayud un montn. (y aun me sigue ayudando) (ah, no debo decirlo porque eso est prohibido)

La aplicacin elegida
http://www.pld.ttu.ee/~vadim/tty/IAY0570/ Tiene un controlador de memoria El PicoBlaze accede a la memoria hablando con el controlador y modifica la imagen. La aplicacin de video se ocupa de transferir de memoria a un buffer de BRAM, y de all al VGA.

Seria as:
Nexys2

FPGA
PicoBlaze App1 c A Dual Port Memory Controller Video Pipeline App2 c PSRAM

Via USB

PC

Seria as:
Nexys2

FPGA App1
c A Dual Port Memory Controller App2 c PSRAM

Via USB

PC

Una consideracin importante


La aplicacin de Estonia ha sido desarrollada para la placa nexys3. Digilent nexys3 es exactamente igual a nexys2 salvo que:
en lugar de tener una spartan3, tiene una spartan6 El reloj es de 100 MHz, en lugar de 50MHz de nexys2.

Relojes
Como la aplicacin accede a Memoria Externa y a Video, ambos dispositivos con restricciones de tiempos de acceso , no era posible obviar alegremente el detalle del reloj. Por lo tanto, agregamos un IP que se llama DCM (Digital Clock Module) que recibe 50Mhz y lo transforma en 100Mhz.

Spartan6 y PicoBlaze
Spartan6 es una FPGA bastante mas poderosa que Spartan3. Entre otras grandes diferencias, tiene LUTS de 6 direcciones, en lugar de 4 direcciones, y tiene 2 FF por celda bsica. Ken Chapman, el hacedor de PicoBlaze, hizo una nueva version de PicoBlaze: PicoBlaze6. Pero nosotros usamos PicoBlaze3.

PicoBlaze3
El ensamblador de PicoBlaze3 NO funciona sobre windows7!!!!!! Ese problema habra que resolverlo para poder compilar codigo.

Algunas consideraciones sobre la imagen


La transferencia por el puerto USB debe ser de una imagen RAW. En el caso de la aplicacin de muestra, y debido a que el video standard utilizado es VESA 800x600, entonces la imagen utilizada es de esa tamao: 800x600 pixels. La placa nexys tiene solamente 8 seales de color: (3 red, 3 green and 2 blue), o sea que para evitar conversiones adicionales, la imagen RAW que cargamos ya esta convertida a ese formato: pixels de 8 bits.

Algunas consideraciones sobre la imagen


Si lo desean utilizar, el programa de conversion a ese formato, a partir de un BMP de 24 bits y de 800 por 600, est disponible. Tambien estan disponibles los fuentes si lo quieren cambiar, para hacerlo mas flexible. El programa actualmente deja la imagen invertida (porque se hizo en un santiamen, y de onda).

Otras consideraciones
La transferencia por el puerto USB de la imagen no forma parte del mdulo de la aplicacin, sino de un modulo que se precarga que esta en la flash de programacion, y que interactua con Adept software. Si uno quiere incorporar la transferencia por usb dentro de la aplicacin, ser necesario importar esos mdulos, y, segn entiendo, hacer un software propio que corra en la PC.

Ahora la Demo

Das könnte Ihnen auch gefallen