Beruflich Dokumente
Kultur Dokumente
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.
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)
Lo ms paralelo, mas rpido, de menos consumo y mas pequeo es el hardware dedicado. ASIC y FPGA.
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.
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
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
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?
O sea:
Imagen 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.
HACERLO! En dieciseis clases Y si, son pocas.
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
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.
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