¿Puedo usar el lenguaje C para programar un CPLD / FPGA?

5

¿Quería saber si puedo programar CPLD / FPGA con lenguaje C? Si es así, ¿se practica comúnmente? ¿Cuáles son los pasos y los requisitos & ¿Herramientas para el mismo?

    
pregunta Arvind Gupta

3 respuestas

8

Generalmente puedes. Hay SystemC gratis para HLS (síntesis de alto nivel). HLS se está volviendo cada vez más popular, pero lo que debe recordar es que no programa los CPLD / FPGA con lenguaje C, sino que describe el hardware con lenguaje C. Para que funcione en hardware real, necesita herramientas HLS específicas del proveedor.

En mi opinión, escribir una descripción sintetizable en C es más difícil que en Verilog / VHDL, pero generalmente es más rápido si estás familiarizado con la sintaxis y sigues algunas reglas adicionales.

    
respondido por el Al Bundy
4

Para FPGAs, sí. No creo que haya muchas herramientas para apuntar CPLD con C (aunque en teoría debería ser perfectamente posible).

Puede que esté hablando de herejía aquí, pero (para mí) la ventaja de C-to-gates es que puede ejecutar una gran cantidad de desarrollo y verificación de su algoritmo en pure-C (usando su entorno de desarrollo C normal, y software de herramientas / depuradores bien entendidos ...) y una vez que esté funcionando a su entera satisfacción, diríjalo a la FPGA.

Entonces, solo tiene que validar la transformación de C-to-gates (es decir, la herramienta) en simulación y hardware. Si escribe su algoritmo en HDL, debe verificar el algoritmo en una simulación muy lenta, y luego verificar y validar su implementación en hardware (y / o incluso en una simulación más lenta a nivel de puerta).

Es posible que tenga que iterar para obtener un rendimiento (pero probablemente haya tenido que hacer esa post-síntesis de todos modos, incluso en HDL, a menos que fuera muy bueno en la optimización de HDL ... y sostengo que después de unos meses puede ser muy bueno en C-for-gates optimización y luego no iterar tanto tampoco)

    
respondido por el Martin Thompson
2

Hay dos formas principales de hacer esto: una es con HLS, donde se escribe una descripción de un algoritmo de alto nivel en c y se traduce a HDL o una lista de redes. Sin embargo, HLS no es realmente aplicable para un diseño completo, generalmente solo algunas piezas. La otra forma es poner una CPU de software en el FPGA, y luego programar que en C. Algunos FPGA también contienen núcleos de CPU duros (Zynq tiene núcleos ARM, varios chips Virtex tienen núcleos PowerPC) y ciertamente se pueden programar en C.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas