Resumen:
El procesamiento de imágenes y video es una tarea intensiva que requiere una gran capacidad
de cómputo para llevarse a cabo. En particular, el procesamiento de video en con restricciones
de tiempo real requiere que este cómputo se realice en un tiempo determinado, esto es, el tiempo
transcurrido entre la generación de cuadros. Esta restricción reduce las opciones al elegir una
unidad de procesamiento para esta tarea. Dentro de las disponibles destacan los FPGAs. Estos
ofrecen una gran flexibilidad, pero su programación requiere mayores tiempos de desarrollo,
además de conocimientos de diseño de hardware.
En el afán por mitigar esta desventaja se han desarrollado herramientas que puedan hacer
síntesis de alto nivel (HLS), esto es, generar arquitecturas hardware a partir de un lenguaje de
alto nivel. Para esto se pueden usar lenguajes de programación para procesadores de propósito
general o lenguajes de dominio específico (DSL). En el laboratorio de VLSI de la Universidad
de Concepción se desarrolló un modelo de cómputo, que dio paso a un DSL para el dominio del
procesamiento de imágenes y video.
En este trabajo se desarrolló una herramienta capaz de generar una descripción de hardware
para FPGAs a partir del lenguaje antes mencionado, herramienta que lleva por nombre SALTT
(SALTT is A Language Translation Tool). La herramienta cuenta con un analizador léxico y
uno sintáctico cuyo fin es reconocer el texto estructurado de entrada y generar la salida. De esta
forma, la herramienta desarrollada tiene la capacidad de transformar código desde el lenguaje
de SALTT al HDL SystemVerilog.
La herramienta se probó transformando código para filtros de media, mediana y transformaciones de espacios de colores. Los códigos se sintetizaron e implementaron en una tarjeta
de desarrollo Nexys Video de Digilent. La tarjeta se conectó a un monitor y se comprobó que
las salidas correspondían a lo esperado, demostrando así el correcto funcionamiento del código
generado. Además del código generado, se escribieron equivalentes de estos códigos en SystemVerilog y se compararon los resultados, observándose un similar uso de recursos, consumo de
potencia y frecuencia máxima de operación en la gran mayoría de los casos. También se observó
un reducción en el número de líneas de código requeridas.