Convertir C a FPGA

1

Soy nuevo en la programación para FPGA, por lo que me recomendaron usar un traductor de C / C ++ a VHDL disponible.

El problema es que hay toneladas de información y casi todos los programas buenos necesitan una licencia costosa.

Me darán un Xilinx FPGA (probablemente un Virtex-6) y así tendré una licencia válida para usar Vivado HLS e ISE. Así que ahora, mi idea sobre cómo convertir un algoritmo C al FPGA es la siguiente:

1 - Convierta el algoritmo de C a VHDL y optimícelo con Vivado HLS (ya comprendido en los tutoriales cómo hacer este paso)

2: use los archivos VHDL recién generados en ISE para generar un flujo de bits (no tengo idea de cómo hacerlo)

3 - Use Xillybus para conectar un programa C con el FPGA (con el flujo de bits) y enviar / recibir información para poder para ver las salidas.

¿Estoy en el camino correcto y me falta algún paso? Acerca del paso 2, es sencillo generar el flujo de bits en ISE o necesito muchos conocimientos sobre el reenvío de puertos.

    
pregunta João Pereira

1 respuesta

1

Respondiendo a tu pregunta de comentario aquí donde tengo más espacio. Supongamos que tiene una aplicación que ha diseñado en una caja de Linux y ejecuta un algoritmo que escribió para contar la cantidad de imágenes de gatos en Internet. Ahora se ejecuta, pero es lento porque hay muchas imágenes de gatos que se pueden pasar, así que debes acelerarlo en hardware.

Entonces, utiliza esta herramienta para escribir código OpenCL que está en C pero con algunas restricciones de forma porque se va a "compilar" para ejecutarse en un FPGA. Los llamamos a esta porción de los núcleos de código. Ahora, estos núcleos se van a sintetizar y ejecutar en el FPGA, quizás tenga 1 o quizás tenga un paralelo de trabajo de 100.

Estás haciendo todo esto correctamente en tu aplicación, en línea, así que cuando llegas al punto de contar realmente los gatos, estás usando sus API para realizar el procesamiento en el FPGA.

Acabo de ver tu otro comentario de que aún no ha salido, sé que las cosas de Altera han estado fuera por un tiempo, puedes encontrar un montón de ejemplos de diseño here

Todo lo que dice que depende de cuál sea tu objetivo aquí, ¿quieres aprender a escribir verilog, probar bancos y ser un diseñador de FPGA? ¿O está buscando simplemente acelerar algoritmos o funciones utilizando hardware sin hacer todo eso?

Al igual que cualquier conjunto de herramientas, cuál utilizar depende del trabajo a realizar.

    
respondido por el Some Hardware Guy

Lea otras preguntas en las etiquetas