Filtrado mediante hardware evolutivo de imágenes de tamaño arbitrario sobre plataforma Zynq

González Presto, Carlos (2017). Filtrado mediante hardware evolutivo de imágenes de tamaño arbitrario sobre plataforma Zynq. Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S.I. Industriales (UPM).

Descripción

Título: Filtrado mediante hardware evolutivo de imágenes de tamaño arbitrario sobre plataforma Zynq
Autor/es:
  • González Presto, Carlos
Director/es:
  • Torre Arnanz, Eduardo de la
  • Mora de Sambricio, Javier
Tipo de Documento: Proyecto Fin de Carrera/Grado
Grado: Grado en Ingeniería en Tecnologías Industriales
Fecha: 2017
Materias:
Escuela: E.T.S.I. Industriales (UPM)
Departamento: Automática, Ingeniería Eléctrica y Electrónica e Informática Industrial
Licencias Creative Commons: Reconocimiento - Sin obra derivada - No comercial

Texto completo

[img]
Vista Previa
PDF (Document Portable Format) - Se necesita un visor de ficheros PDF, como GSview, Xpdf o Adobe Acrobat Reader
Descargar (3MB) | Vista Previa

Resumen

EL Trabajo de Fin de Grado (TFG) presentado en este documento consiste en la actualización del filtro de imágenes mediante un array sistólico desarrollado en el “CEI-UPM” y en la ampliación de sus capacidades. El objetivo de este trabajo consiste en alcanzar la escalabilidad de la imagen a filtrar manteniendo los resultados de filtrado obtenidos con el filtro actual y empleando la comunicación mediante buses AXI4, para lo cual se utilizaran BRAMs y registros como interfaz entre el microprocesador y el filtro. La motivación de este TFG surge a raíz de tres líneas principales: 1) La implantación de la especificación AXI4 como estándar de comunicaciones en las nuevas FPGAs, debido a la mayor rapidez en las comunicaciones que permiten y al menor consumo de silicio que requieren las han convertido en el estándar de comunicaciones más empleado actualmente. 2) La utilización de placas, como la Zybo utilizada durante el desarrollo de este proyecto, de bajo coste y prestaciones reducidas dentro de su gama. 3) La ampliación de las funcionalidades y capacidades existentes en el filtro, siendo la escogida para este proyecto la escalabilidad de imagen en tiempo real. El filtro que existe actualmente funciona mediante un array sistólico reconfigurable capaz de minimizar la diferencia entre una imagen con ruido conocido, llamado de sal y pimienta, a un valor concreto de la Suma de los Errores Absolutos (SAE) entre sus píxeles y los de una imagen de referencia y utilizando como comunicaciones buses PLB en un FPGA Virtex-5. La metodología adoptada para la consecución de los objetivos planteados ha sido el desarrollo del hardware de control desde cero, con el objetivo de adaptarlo a la escalabilidad de la imagen, manteniendo el bloque del array sistólico y utilizando unas BRAM capaces de recibir y enviar datos mediante la técnica de ráfagas, esto es, transferencias de datos a gran velocidad gestionadas por un DMA que permite al procesador realizar otras tareas durante este intercambio de datos. A nivel de software se reutiliza el algoritmo evolutivo existente para el array sistólico, elaborando el código necesario para el control de la comunicación entre las memorias y el DMA, la comunicación con los registros y el uso de los modos implementados en el hardware. Trabajos realizados y dificultades superadas: La escalabilidad de la imagen se consiguió mediante un registro de datos compuesto por dos pilas FIFO regulables a través de software según la especificación de resolución de imagen introducida por el usuario. El estándar AXI4_full emplea buses de tamaño 32 bits o superior, mientras que los píxeles de la imagen son de 8 bits. Esta diferencia de tamaño constituyó el primer obstáculo, ya que en cada posición de memoria de las BRAM se encuentran almacenados 4 píxeles, los cuales se deben desempaquetar al sacarlos de la memoria, antes de introducirlos en el registro de desplazamiento y volver a ser empaquetados a la salida del Array sistólico, justo antes de introducirlos de nuevo en la BRAM. Esta solución se consiguió mediante el uso cambiadores de ancho basados en multiplexores y demultiplexores, respectivamente. El segundo obstáculo encontrado se debió al tamaño limitado de la memoria. Esta memoria está dividida en tres particiones. La primera partición está destinada a almacenar la imagen a filtrar, la segunda contiene la imagen sin ruido (utilizada como referencia de la calidad del filtro) y en la tercera partición se guarda la imagen filtrada. Además, por motivos de generalidad en la codificación, se generaba una cuarta memoria vacía que no se utilizaba. Por estos motivos, el máximo tamaño de imagen que era posible almacenar eran imágenes de 180x180, con lo que la escalabilidad conseguida resultaba de poca utilidad ante imágenes tan pequeñas. Esta limitación de la memoria máxima disponible en el dispositivo llevó a la modificación del diseño hardware inicial que fue adaptado para poder extraer información, a través de los registros, de la posición de memoria de la que se están extrayendo o introduciendo datos. De esta forma, se desarrolla un nuevo modo de funcionamiento de filtrado, mediante una máquina de estados software, capaz de controlar el filtro introduciendo y extrayendo datos de la imagen de forma cíclica, mientras el filtro realiza su función en paralelo. De esta forma, las memorias pasan a tener dos modos de funcionamiento, uno como memorias normales, y otro, utilizando la máquina de estados desarrollada, como memorias cíclicas. A raíz del desarrollo de las memorias cíclicas surge el problema de la falta de tiempo a la hora de realizar la lectura y escritura de estas en tiempo real. El funcionamiento completo e ideal del filtro (tanto en su funcionamiento cíclico como no cíclico) requiere de la interacción simultánea con las tres memorias, por lo que en el funcionamiento cíclico el controlador DMA debe ser capaz de escribir los datos que va a necesitar extraer el filtro de las memorias que almacenan la imagen con ruido y la de referencia antes de que sean solicitados, y extraer los datos que se van depositando en la memoria que almacena la imagen filtrada antes de que sean sobrescritos. Se comprobó que solo era posible un funcionamiento parcial, debido a la incapacidad del controlador DMA de realizar las ráfagas de escritura y lectura a mayor velocidad así como de las memorias de almacenar datos de mayor tamaño que 32 bits, con lo que se hubieran conseguido los resultados esperados, utilizando solo las memorias de la imagen de referencia y la de la imagen con ruido durante el entrenamiento del filtro, y cambiando la de referencia por la de la imagen filtrada durante la fase de misión. Sin embargo, este funcionamiento distaba de ser el ideal, por lo que se introdujeron dos modificaciones centradas en solucionar los dos cuellos de botella descritos en el párrafo anterior, que aplicadas por separado permiten el funcionamiento de las tres memorias de forma simultánea, y consiguiendo unos resultados óptimos de rendimiento y tiempo de procesamiento al utilizarlas en conjunto. Estas modificaciones fueron: 1) Uso de dos regiones de reloj en el filtro: Esta modificación soluciona la limitación de velocidad de trabajo del DMA, permitiendo que los datos sean introducidos y extraídos del filtro al doble de la frecuencia a la que este realiza el filtrado, consiguiéndose no solo el funcionamiento de las tres memorias de forma simultánea, si no llevar a la FPGA a su máxima capacidad de procesamiento, 200MHz en la zona de las memorias que interactúa con el DMA y 100MHz el resto del filtro. 2) Aumento del bus de datos del filtro: Esta modificación consiste en la parametrización del filtro y su interfaz, permitiendo la introducción y extracción de datos en grupos de 32, 64, 128, etc. bits, con lo que se consigue, para el funcionamiento óptimo con el DMA (64 bits por transferencia), introducir datos al doble de velocidad, trabajando el filtro a la misma frecuencia. El filtro posibilita el uso de estas modificaciones tanto de forma separada como conjunta, consiguiendo, en este último caso, transferir las imágenes en un tercio del tiempo de filtrado. La introducción de estas soluciones y el problema original de falta de memoria en la FPGA llevaron a la búsqueda de la optimización de la cantidad de memoria reservada para el filtro, para lo que se realizó una la modificación final del hardware original, eliminando la necesidad de generar una cuarta memoria vacía. Con esta mejora se consigue minimizar los recursos de la placa empleados para esta aplicación concreta de filtrado. Finalmente, el filtro desarrollado es capaz de realizar las funciones del filtro en que se basa, llegando a valores de la SAE, después de un proceso evolutivo, iguales a los ya obtenidos, mediante el estándar de comunicaciones AXI, y consiguiendo unos tiempos de filtrado para los tamaños de imagen fijados (formatos QCIT, QVGA, CIF y VGA) competitivos y una utilización optimizada de los recursos de la placa.

Más información

ID de Registro: 45517
Identificador DC: http://oa.upm.es/45517/
Identificador OAI: oai:oa.upm.es:45517
Depositado por: Biblioteca ETSI Industriales
Depositado el: 19 Abr 2017 06:40
Ultima Modificación: 19 Abr 2017 06:40
  • Open Access
  • Open Access
  • Sherpa-Romeo
    Compruebe si la revista anglosajona en la que ha publicado un artículo permite también su publicación en abierto.
  • Dulcinea
    Compruebe si la revista española en la que ha publicado un artículo permite también su publicación en abierto.
  • Recolecta
  • e-ciencia
  • Observatorio I+D+i UPM
  • OpenCourseWare UPM