Hay dos criterios que puede usar para evaluar un proyecto digital que lo ayudan a decidir qué parte se ajusta mejor a sus criterios. El primero es el tamaño / complejidad del diseño: cuánta lógica está involucrada. El segundo es los requisitos de entrada y salida en términos de recuento de pines. La velocidad puede tenerse en cuenta si puede estimar cuál sería su función más lenta. Las herramientas del proveedor (Altera Quartus II, Xilinx ISE, etc.) lo ayudarán una vez que llegue al estadio correcto.
PAL / PLA / GAL: están destinados a reemplazar circuitos de tamaño pequeño a mediano que normalmente podría implementar como chips lógicos LSI (series 7400, 4000). Estos pueden ofrecer mejores diseños de placa debido a la reasignación de E / S y muchas funciones lógicas simples. Estos chips contienen memoria no volátil (o fusibles programables únicos) y no requieren tiempo de configuración de encendido. Es posible que no contengan elementos de almacenamiento de datos.
CPLD: Estos son primos más grandes del PLA. Los diseños pueden ser máquinas de estado pequeñas, o incluso un núcleo de microprocesador muy simple. La mayoría de los chips CPLD que he visto no tienen ninguna SRAM en chip, aunque el gran Cypress CPLD que vinculó sí. Es más probable que los CPLD sean reprogramables con memoria flash, y tampoco requieren tiempo de configuración en el encendido.
FPGA: a diferencia del CPLD, los bloques lógicos se basan en SRAM en lugar de memoria flash, lo que resulta en operaciones lógicas más rápidas. El principal inconveniente de los FPGA es que, dado que la configuración se almacena en SRAM, cada vez que se enciende el dispositivo, el FPGA debe cargar su programación en este SRAM. Dependiendo del tamaño de su diseño y la velocidad de su almacenamiento no volátil, esto puede causar un retraso notable desde el encendido hasta su pleno funcionamiento. Algunos FPGA tienen flash en chip para almacenar sus datos, pero la mayoría usa chips de memoria separados. Los FPGA a menudo tendrán multiplicadores cableados, PLL y otras funciones lógicas para mejorar la velocidad informática. También hay disponibles grandes bloques de RAM en chip. También podrá usar especificaciones de E / S de alto rendimiento como LVDS, PCI y PCI-Express.
FPGA con microprocesador Hard Core: no estoy familiarizado con estos, pero me imagino que su diseño se centraría en la programación del microcontrolador, y el FPGA aumentaría el microcontrolador. Las partes que identificó hacen que parezca que comenzaría su diseño con un microcontrolador y un FPGA, y luego combinaría los dos en un chip / paquete.
Cómo decidir cuál es el adecuado para usted:
La mejor manera es tener su código (Verilog / VHDL) terminado, y luego usar las herramientas del proveedor para tratar de encajarlo en la parte más pequeña posible. Sé que la herramienta de Altera le permite cambiar los objetivos de programación con bastante facilidad, para que pueda seguir eligiendo FPGA más pequeños y luego CPLD más pequeños hasta que su uso de diseño se acerque a aproximadamente el 75%. Si necesita rendimiento, intente elegir dispositivos que tengan características (multiplicadores rápidos) que disminuyan los requisitos de velocidad de la lógica. Una vez más, las herramientas del proveedor lo ayudarán a identificar si necesita actualizar o si puede degradar.
Otro factor de qué parte usar es la facilidad de uso. Usar la lógica PAL / PLA / GAL es probablemente más esfuerzo que construir la función usando puertas lógicas discretas (74HC *, 4000, etc.). Los CPLD generalmente requieren solo un voltaje de suministro único y no requieren circuitos adicionales. Son efectivamente independientes. Los FPGA comienzan a usar múltiples fuentes de alimentación para E / S y el núcleo lógico, estándares complejos de E / S, memoria de programa separada, PCB de varias capas (> 2) y paquetes BGA.
Los pasos para reducir sus requisitos de diseño incluirían:
Identifique todas las entradas y salidas para su FPGA / CPLD. Esto suele ser una parte fácil de la etapa de diseño. De esta manera, sabrá qué paquete está mirando y qué tan cerca puede cortarlo a ese margen.
Dibuja un diagrama de bloques de la lógica interna. Si sus bloques parecen simples (cada bloque tendría un puñado de puertas lógicas y registros), entonces probablemente pueda usar un CPLD. Sin embargo, si sus bloques tienen etiquetas como "Transceptor Ethernet", "Interfaz PCI-Express x16", "Controlador DDR2" o "Codificación / Decodificación h264", entonces seguramente está viendo un FPGA y utilizando HDL.
- Mire y vea si sus interfaces tienen requisitos especiales de E / S, como voltajes especiales, LVDS, DDR o SERDES de alta velocidad. Es más fácil obtener un chip que lo admita que obtener un chip traductor adicional.
Ejemplos de aplicaciones CPLD:
- PWM multicanal con interfaz SPI
- Expansor de E / S
- Decodificación de espacio de direcciones de CPU
- Relojes (cronometraje)
- Multiplexores de pantalla
- DSP simple
- Algunos programas simples se pueden convertir en un diseño CPLD
Ejemplos de aplicaciones de FPGA para aficionados:
- Pequeños diseños de sistema en chip (SoC)
- Vídeo
- Puentes de protocolo complejo
- Procesamiento de la señal
- Cifrado / descifrado
- Emulación de sistema heredado
- Analizador lógico / generador de patrones
Para la mayoría de los trabajos de aficionado, estará limitado a FPGA relativamente pequeños, a menos que desee soldar paquetes BGA. Elegiría entre un CPLD grande o un FPGA barato, y los requisitos de tamaño / velocidad determinarían cuál necesitaba.