Recomiendo encarecidamente ir primero con una placa CPLD (algo como esto ), o un Igloo Nano basado en flash Actel, o algo pequeño como eso. Los grandes FPGA pueden ser abrumadores, y tienen tantos pines que lleva bastante tiempo conectar las cosas correctamente. Además, tan pronto como desee integrar uno en su diseño, se dará cuenta de que vienen en paquetes muy grandes, con docenas de pines de alimentación. La mayoría de ellos requieren varios voltajes para operar, sin mencionar que la mayoría de los FPGA están basados en SRAM y no en flash, por lo que tan pronto como desconecte la alimentación, perderán su diseño. Por lo tanto, debe tener al menos un chip Active Serial Flash Memory conectado, pero muchas personas usan CPLD o microcontroladores para cargar diseños en el FPGA.
Todo es muy abrumador. ¡Los CPLD, por otro lado, son geniales! Por lo general, funcionan con un solo suministro, y si desea cumplir con 5V, aún puede comprar chips Altera MAX 7000 más antiguos. Además, tienen memoria flash incorporada, por lo que no necesitan otros componentes para arrancarlos. Y los CPLD funcionan más o menos de la misma manera que los FPGA, por lo que debe programarlos escribiendo VHDL / Verilog o utilizando un editor de esquemas. Mismo jazz sobre el reloj (¡recuerde usar OSCILADORES de cristal, no cristales!), Y la misma forma de programación sobre JTAG. Los CPLD tienen muchos menos elementos lógicos que los FPGA, por lo que no puede utilizar procesadores blandos ni hacer nada demasiado loco. Pero si solo está comenzando, definitivamente son el camino a seguir, y cuestan un par de dólares cada uno y vienen en paquetes lo suficientemente grandes que se pueden soldar a mano,
Otra opción son los FPGA de gama baja basados en Flash creados por Actel. Recientemente he estado jugando con el kit de inicio Igloo Nano, que cuesta alrededor de $ 100. Estos dispositivos son lo suficientemente grandes como para caber en un núcleo 8051 junto con cierta lógica digital personalizada, por lo que son una excelente opción cuando se mezclan estados de flujo de programa con lógica personalizada.