Conversión de MATLAB a VHDL

Cómo convertir cualquier código MATLAB (archivo .m) a VHDL (código .hdl). Como tengo que usar mi código de procesamiento de imágenes en un kit FPGA. ¿Alguna solución?

  • Método posible: usar el codificador hdl en simulink, convirtiendo el código original en un código matlab incrustado.

  • Áreas de interés: procesamiento de imágenes, conversión de .m a .hdl, MATLAB INTEGRADO, ¿cómo obtener un archivo de imagen en código MATLAB INTEGRADO?

Por favor, dé algún ejemplo y explique.

Esto suena como una pregunta que deberías hacerle a la gente de Matlab. Seguramente su departamento de marketing puede mostrarle lo fácil que es.
El generador de código de Simulink puede funcionar para un proyecto de investigación único, suponiendo que su FPGA sea lo suficientemente grande y rápido; el código generado no es muy eficiente en recursos. Para un diseño de producción, sería mejor contratar a un consultor que tenga experiencia con este tipo de diseño. ( tos , tos :-)

Respuestas (2)

Mi experiencia de Matlab a HDL (usando AccelDSP que luego compró Xilinx) no ha sido tan buena. Uno de mis problemas siempre ha sido que Matlab no ofrecía ninguna forma agradable de instanciar un módulo (entidad en términos de VHDL, objeto en términos de OO) más de una vez si tenía estado dentro. Tenías que pasar el estado antiguo como parámetro y el nuevo estado saldría como resultado. puaj. Ahora puede ser que la sintaxis OO más nueva de Matlab sea compatible con el codificador HDL, pero apuesto a que no, ya que todas las herramientas HDL parecen limitar drásticamente las partes del lenguaje que puede usar.

Simulink es un asunto ligeramente diferente: si usa el entorno Xilinx System Generator, puede usar todo el poder de Matlab en el lado de verificación de las cosas, y el extremo FPGA está limitado a lo que XSG le proporciona bloques para - la mayoría de los cuales son muy bajo nivel y eficiente. Sin embargo, descubrí que todo era de un nivel demasiado bajo y que crear bloques de IP parametrizables era un problema, así que volví a VHDL. ¡Sin embargo, extraño poder llamar imreada cualquier archivo de imagen antiguo de mi banco de pruebas!

Su área de preocupación con respecto a "obtener un archivo de imagen" debería hacer sonar las alarmas. Los FPGA casi siempre se utilizan para el procesamiento de imágenes en línea (es decir, tomar una imagen de una cámara en tiempo real). Para hacer esto, deberá comprender cómo funcionan los pines del chip generador de imágenes (o cualquiera que sea su fuente de datos en tiempo real) y escribir código para interactuar con ellos.

Como dijo alguien más, si tiene un FPGA grande y rápido, solo está creando algunos sistemas y está listo para la curva de aprendizaje (los FPGA son mucho más que simplemente presionar el botón de compilación... a diferencia del software), entonces A por ello. De lo contrario, puede usar su Matlab como una especificación para alguien experto en la materia.

De hecho, he usado Matlab como especificación y fuente de datos de prueba en el pasado... desarrollar un algoritmo en Matlab (con FPGA en mente, pero sin codificar de forma similar a FPGA). Use esto para crear datos de prueba con resultados dorados (exportados como archivos VHDL). Luego, cree un modelo VHDL que se comporte con la misma precisión de bit que el Matlab (comprobado con los datos de referencia dorados). He encontrado esto mucho más productivo (incluso con solo uno de mí) que usar generadores HDL "mágicos" :)

Estoy totalmente de acuerdo: desarrollar un diseño de referencia de MATLAB y una implementación de VHDL/Verilog en paralelo es la forma en que la mayoría de las personas que conozco abordan este tipo de problema.
El problema con el codificador HDL de simulinks es que tiene fragmentos de código para cada bloque, por lo que termina con un diseño MUY ineficiente SI ese código se envió a un FPGA. Sin embargo, en QUÉ sobresale es en la generación automática de bancos de prueba para luego verificar ciertas implementaciones

La conversión de código matlab a vhdl requiere que cree un código de función matlab y un script de archivo de prueba que pruebe la función matlab, o puede crear un modelo simulink y convertir ese modelo a vhdl o verilog.

aquí hay un tutorial: conversión de matlab a vhdl

pero hay situaciones en las que no es fácil convertir el código de matlab a vhdl, por ejemplo, si su código de matlab contiene funciones exponenciales o de registro, afortunadamente hay otras formas, pero requiere un aprendizaje adicional para hacerlo