A lo largo de su carrera, ha diseñado FPGA y, más recientemente, System-on-Chips (SoC) integrados en una amplia gama de aplicaciones, desde sistemas de seguridad SIL 4 hasta sistemas de imágenes y aplicaciones espaciales. A lo largo de los años, he sido testigo de la evolución de la tecnología FPGA. La tecnología FPGA se usó para implementar una pequeña cantidad de “lógica de pegamento” alrededor de la periferia del sistema y se convirtió en el corazón del sistema.
A lo largo de su carrera, ha diseñado FPGA y, más recientemente, System-on-Chips (SoC) integrados en una amplia gama de aplicaciones, desde sistemas de seguridad SIL 4 hasta sistemas de imágenes y aplicaciones espaciales. A lo largo de los años, he sido testigo de la evolución de la tecnología FPGA. La tecnología FPGA se usó para implementar una pequeña cantidad de “lógica de pegamento” alrededor de la periferia del sistema y se convirtió en el corazón del sistema.
Este rol en el corazón del sistema surgió cuando la tecnología FPGA comenzó a ofrecer una solución más receptiva y reconfigurable que los enfoques tradicionales basados en CPU. Esto se debe al paralelismo de la lógica programable y la naturaleza flexible de las celdas de E/S (entrada/salida), lo que permite conexiones de cualquiera a cualquier con el PHY correcto.
La creciente capacidad y funcionalidad de estos dispositivos, así como los cambios en la forma en que se utilizan, significan que el método tradicional de utilizar lenguajes de descripción de hardware (HDL) para desarrollar aplicaciones principales está llegando a su fin. De hecho, en los últimos años, la síntesis de alto nivel (HLS) finalmente se generalizó, lo que permitió el diseño con C, C++ y OpenCL. Sin embargo, al diseñar HLS y objetivos de dispositivos lógicos programables, es necesario poder usar los mismos marcos y bibliotecas de código abierto que se usaron para crear los modelos algorítmicos originales. Si puede hacer esto, puede reducir significativamente su tiempo de desarrollo y, por lo tanto, su tiempo de comercialización (y tiempo de monetización).
La razón por la que menciono esto es el recientemente anunciado revisión La pila de Xilinx le permite hacer esto para el desarrollo de la visión integrada cuando usa Zynq y Zynq MPSoC (consulte la nota a continuación). Lo que es realmente emocionante para mí es que esto no solo le permite usar OpenVX y OpenCV, sino que también le permite aprovechar muchas funciones que se ejecutan en núcleos ARM y acelerarlas moviéndolas a lógica programable.
Nota: En teoría, todos los Zynq se pueden clasificar como MPSoC (SoC multiprocesador). Esto se debe a que incluso el Zynq 7000 original (a eso nos referimos cuando decimos Zynq) tiene dos núcleos de procesador ARM Cortex-A9 de 32 bits además de los núcleos de procesador programables. Lógica y un sinfín de comunicaciones y periféricos.
Sin embargo, utilizo el término Zynq MPSoC para referirme a los dispositivos Zynq de última generación que combinan núcleos ARM Cortex A53 duales o cuádruples de 64 bits con núcleos ARM Cortex-R5 duales de 32 bits (algunos dispositivos son ARM Mali GPU (unidad de procesamiento de gráficos) y códec hardcore h264). El Zynq MPSoC es una bestia (haga clic aquí para leer sobre mis aventuras poniéndolo en marcha).
Esto significa que puede escribir aplicaciones usando OpenCV y usar lógica programable para acelerar el rendimiento de sus algoritmos. No tienes que escribir una sola línea de HDL. Para demostrarlo, utilicé funciones OpenCV aceleradas para realizar el desenfoque del filtro mediano. Esta es una primera etapa común en muchos algoritmos de procesamiento de imágenes. A continuación, tomamos la imagen de referencia tradicional de Lenna y aplicamos el filtro mediano tanto a HLS como a OpenCV para mostrar la diferencia entre los dos. Como puede ver, no hay una diferencia real entre los dos resultados.
Creé un ejemplo de detección de esquinas de Harris para proporcionar otra prueba usando un algoritmo más complejo. El resultado se ve así para un patrón de tablero de ajedrez simple:
Generar estas muestras e imágenes fue rápido y fácil. Como dije antes, no tuve que escribir una sola línea de código HDL. Esto significa que ahora puede obtener resultados más rápido en sus proyectos de desarrollo.
Pronto anunciaremos cómo HLS y OpenCV se pueden usar juntos para aplicaciones de visión integrada. Conferencia de Sistemas Embebidos (ESC) en Boston. Espero verte allí. Mientras tanto, agradecemos sus preguntas y comentarios.