Desarrollo de un Framework para la generación rápida de rutas de datos segmentadas para el procesamiento de imágenes en FPGAs
Loading...
Official URL
Full text at PDC
Publication date
2023
Authors
Advisors (or tutors)
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citation
Abstract
La gran cantidad de información contenida en las imágenes hace que su procesamiento demande gran capacidad de computación. Por suerte, la naturaleza de las mismas, divididas en píxeles, hace que las operaciones a realizar sean repetitivas en tiempo y espacio. El procesamiento en pipeline se adapta perfectamente a estas características y consigue unos rendimientos excelentes. Sin embargo, el proceso de desarrollo de un proyecto de estas características es complejo y requiere una importante inversión de tiempo. En este Trabajo de Fin de Grado se ha creado un framework que agiliza y simplifica esta tarea. El framework será capaz de generar rápidamente pipelines segmentados que mantengan el rendimiento de aquellos obtenidos con un desarrollo tradicional. Por un lado, creamos una biblioteca de módulos que sigan un estándar diseñado específicamente para las condiciones de este framework. Este estándar permite la fácil conexión y comunicación entre los módulos al mismo tiempo que asegura que los propios módulos sean los encargados de mantener la segmentación necesaria para un rendimiento cercano a una muestra por ciclo. Por otro lado, se ha diseñado un lenguaje que permita describir de manera sencilla arquitecturas complejas construidas a base de la conexión de los módulos de la biblioteca. El framework procesa archivos en este lenguaje, de nombre afw, generando los módulos en lenguaje VHDL que definen el kernel descrito. Por último, para comprobar la capacidad generativa del framework y la validez de los kernels generados, se aborda el desarrollo de un filtro de imágenes. Usando al framework, creamos un kernel de convolución de imágenes que procesa imágenes con un rendimiento cercano al ciclo.
por muestra. El desarrollo demuestra ser mucho m´as sencillo que empleando los m´etodos HDL
habituales, escribiendo en torno a 250 sencillas l´ıneas de c´odigo afw, frente a las m´as de 1250
de VHDL necesarias para definir el mismo m´odulo.
A partir de los resultados obtenidos para el kernel de procesamiento de im´agenes se eval´ua
el proyecto analizando el proceso de desarrollo, las caracter´ısticas del framework resultante y
reflexionando sobre posibles trabajos futuros.
The large amount of information contained in the images makes their processing very computationally demanding. Fortunately, the nature of these images, divided into pixels, means that the operations to be performed are repetitive in time and space. Pipeline processing is perfectly adapted to these characteristics and achieves excellent performance. However, the development process of such a project is complex and requires a significant investment of time. In this Final Degree Project a framework has been created to speed up and simplify this task. The framework will be able to quickly generate segmented pipelines that maintain the performance of those obtained with traditional development. On the one hand, we created a library of modules that follow a standard designed specifically for the conditions of this framework. This standard allows for easy connection and communication between modules while ensuring that the modules themselves are responsible for maintaining the segmentation necessary for near sample-per-cycle performance. On the other hand, a language has been designed to describe in a simple way complex architectures built based on the connection of the library modules. The framework processes files in this language, named afw, generating the modules in VHDL language that define the described kernel. Finally, to test the generative capability of the framework and the validity of the generated kernels, the development of an image filter is addressed. Using the framework, we create an image convolution kernel that processes images with a performance close to one cycle per sample. The development proves to be much simpler than using the usual HDL methods, writing around 250 simple lines of afw code, compared to the more than 1250 lines of VHDL code needed to define the same module. From the results obtained for the image processing kernel, the project is evaluated by analyzing the development process, the characteristics of the resulting framework and reflecting on possible future work.
The large amount of information contained in the images makes their processing very computationally demanding. Fortunately, the nature of these images, divided into pixels, means that the operations to be performed are repetitive in time and space. Pipeline processing is perfectly adapted to these characteristics and achieves excellent performance. However, the development process of such a project is complex and requires a significant investment of time. In this Final Degree Project a framework has been created to speed up and simplify this task. The framework will be able to quickly generate segmented pipelines that maintain the performance of those obtained with traditional development. On the one hand, we created a library of modules that follow a standard designed specifically for the conditions of this framework. This standard allows for easy connection and communication between modules while ensuring that the modules themselves are responsible for maintaining the segmentation necessary for near sample-per-cycle performance. On the other hand, a language has been designed to describe in a simple way complex architectures built based on the connection of the library modules. The framework processes files in this language, named afw, generating the modules in VHDL language that define the described kernel. Finally, to test the generative capability of the framework and the validity of the generated kernels, the development of an image filter is addressed. Using the framework, we create an image convolution kernel that processes images with a performance close to one cycle per sample. The development proves to be much simpler than using the usual HDL methods, writing around 250 simple lines of afw code, compared to the more than 1250 lines of VHDL code needed to define the same module. From the results obtained for the image processing kernel, the project is evaluated by analyzing the development process, the characteristics of the resulting framework and reflecting on possible future work.
Description
Trabajo de fin de Grado en Ingeniería de Computadores, Facultad de Informática UCM, Departamento de Arquitectura de Computadores y Automática, Curso 2022/2023.