Quería saber si puedo programar CPLDs/FPGAs usando lenguaje C. Si es así, ¿se practica comúnmente? ¿Cuáles son los pasos y las herramientas requeridas para el mismo?
Generalmente puedes. Hay SystemC gratuito 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 CPLD/FPGA usando lenguaje C, sino que describe el hardware usando 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 suele ser más rápido si está familiarizado con la sintaxis y sigue algunas reglas adicionales.
Para FPGA, sí. No creo que haya muchas herramientas para apuntar a 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 parte de su desarrollo y verificación de algoritmos en C puro (utilizando su entorno de desarrollo C normal y un software bien entendido). herramientas/depuradores...) y una vez que esté funcionando a su satisfacción, apúntelo al FPGA.
Luego, solo tiene que validar la transformación 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 una simulación más lenta a nivel de puerta).
Es posible que tenga que iterar para obtener rendimiento (pero probablemente tuvo que hacer esa síntesis posterior 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- optimización for-gates y luego tampoco iterar tanto)
Hay dos formas principales de hacer esto: una es con HLS, donde escribe una descripción de un algoritmo de alto nivel en c y se traduce a HDL o una lista de conexiones. Sin embargo, HLS no es realmente aplicable para un diseño completo, generalmente solo algunas piezas. La otra forma es colocar una CPU blanda en la FPGA y luego programarla en C. Algunas 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.
broma
armando
anderson verde
desaparecido