Cuáles son algunas herramientas de software libre para la programación de FPGAs?

Si sólo quieres aprender Verilog sin ningún tipo de hardware, echa un vistazo a HDLBits para obtener tutoriales interactivos (sintetizan tu código y comparan la lógica resultante con sus soluciones), y EDAPlayground tiene un IDE basado en la web que te permite codificar, sintetizar y simular, todo de forma gratuita.

Si quieres trabajar con hardware real, Project Icestorm es una cadena de herramientas FPGA totalmente gratuita y de código abierto. Desafortunadamente, sólo funciona con FPGAs Lattice iCE40 (fueron capaces de revertir con éxito el formato de flujo de bits para esa familia de dispositivos), pero si estás usando esos dispositivos puedes ir todo el camino desde Verilog a flujo de bits con herramientas de código abierto – ¡muy bueno! Los dispositivos iCE40 soportados son pequeños (hasta 8K celdas lógicas), pero eso es suficiente para aprender y experimentar… y hay kits de desarrollo baratos y fáciles de usar por tan sólo 20 dólares.

Si quieres ir más allá de «trastear» necesitarás herramientas que soporten FPGAs más grandes, pero como otros carteles señalan, todos los grandes proveedores de FPGAs proporcionan versiones gratuitas (pero limitadas) de sus cadenas de herramientas. Yo recomiendo un paso más allá de las iCE40: La Terasic DE0-Nano es una placa de desarrollo de 80 dólares que incluye una FPGA Intel/Altera Cyclone IV con 22K celdas lógicas más RAM, LEDs, interruptores, cabezales, USB, etc., todo en un bonito paquete… y luego puedes descargar y usar una versión gratuita de las herramientas Quartus de Intel/Altera para trabajar con ella. Hay kits similares para productos y herramientas de otros proveedores de FPGAs, también.

Sin embargo, hay límites en cuanto a lo que se puede llegar con las versiones gratuitas de las herramientas; si quieres hacer un trabajo «serio» acabarás pagando -quizás mucho- por herramientas que puedan ocuparse de los detalles y complejidades de la ingeniería de las FPGAs para productos comerciales.