La lógica programable se puede implementar en su widget en muchos espectros diferentes, desde quemar algunas puertas o usar un MUX hasta el último FPGA con microcontrolador incorporado y periféricos IO, sin mencionar el GPIO PrimeCell de ARM u otros ejemplos más específicos . ¿Para qué aplicaciones se utilizan los diversos niveles de complejidad de dispositivos lógicos programables? Aunque la agrupación parece combinarse cerca de los extremos de sus definiciones , creo que esta es una lista aceptable:
- PAL / PLA / GAL : matriz lógica programable; parece estar listado como'Embebido - PLD'en Digikey, cubriendo E / S asíncrona 10/8 (ATF16V8C) a 50MHz, 192 macroceldas (CY7C341B), y son en su mayoría reprogramables.
- CPLD : Dispositivo lógico programable complejo; Digikey los enumera como tales, disponibles en 7.5ns 10 E / S (ATF750C) a 233 MHz, 428 E / S "CPLD en densidades FPGA" (CY39100V484B).
- FPGA : matriz de puerta programable en campo; disponible en 58 E / S (XC2064) a 1023 E / S BGA bestias (EP1S80F1508C7N).
- FPGA con MCU duro : esto es cuando una MCU se presenta físicamente en el FPGA IC, no se emula.
Cita de Wikipedia:
La diferencia entre los FPGA y los CPLD es que los FPGA se basan internamente en tablas de búsqueda (LUT), mientras que los CPLD forman las funciones lógicas con puertas de mar (por ejemplo, la suma de productos). Los CPLD están diseñados para diseños más simples, mientras que los FPGA están diseñados para diseños más complejos. En general, los CPLD son una buena opción para aplicaciones lógicas combinacionales amplias, mientras que los FPGA son más adecuados para máquinas de estado grandes (es decir, microprocesadores).
Esto no explica la diferencia entre usar un CPLD de 233 MHz, 400 E / S y un FPGA comparable ; o entre un 192 macrocell PLD y un CPLD comparable . No puedo obtener pautas confiables para limitar las opciones de diseño. Tenga en cuenta que actualmente no tengo una aplicación específica en mente, pero a menudo me he preguntado, "¿qué usaría para hacer eso?"
He recibido excelentes consejos fuera del sitio con respecto a requisitos específicos, pero sigo pensando que esta pregunta podría beneficiarse de algunos ejemplos que muestran preferencia sobre una familia de PLD cuando otra puede parecer igual o más adecuada.
fuente
Respuestas:
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.
Ejemplos de aplicaciones CPLD:
Ejemplos de aplicaciones de FPGA para aficionados:
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.
fuente
Una buena lista de "regla general" sería algo como esto:
fuente
Una respuesta simple podría ser que hay dos formas:
1. Primero diseñas tu sistema en un alto nivel de abstracción (por ejemplo, HDL o esquemas). Luego intenta ajustarlo en PAL / CPLD / FPGA y elige los que satisfagan sus requisitos (número de compuertas / elementos lógicos, rendimiento, etc.) y luego elige el más barato de estos dependiendo de lo que defina más barato (costo de desarrollo vs Costo de producción, etc.
2. Pero, por lo general, antes de comenzar cualquier codificación HDL o desarrollo esquemático, ya puede estimar la complejidad del sistema (cuántas compuertas necesita, si parece que necesita MCU de 8 bits o MCU de 32 bits, o ningún microcontrolador en todos). En base a eso, también puede elegir su dispositivo programable. Esto sería menos preciso, pero permitirá diseñar su hardware analógico y digital no programable en paralelo con el hardware y software programable (si corresponde).
fuente
Se utiliza el FPGA con núcleo duro ya que es menos área que un microcontrolador separado y más rápido que un microprocesador de núcleo blando. Sin embargo, el precio suele ser peor que un FPGA y un microcontrolador separado. En general, el software y, por lo tanto, un microcontrolador es mejor para casos (relativamente) lentos y raros, como la configuración de parámetros y el manejo de errores; La lógica es mejor para procesos continuos. Por ejemplo, en el procesamiento de paquetes, la escritura en una memoria debe ser lógica; El manejo del tiempo de vida debe permanecer en el software.
Dentro del espacio FPGA hay piezas baratas / de baja potencia y piezas caras / rápidas. En general, el microcontrolador solo está en el costoso; Esto hace que el comercio de costos versus un MCU discreto sea aún peor para la solución en FPGA.
Nadie usa PAL en nuevos diseños, al menos por más de 10 años. Los CPLD se han apoderado de ese nicho.
En los últimos 5? años, los CPLD son como FPGA en su interior, pero con memoria para mantener la configuración en el chip. Dado que los FPGA ahora son de 100 MHz, la velocidad es una razón mucho menor para poner lógica en un CPLD que hace 10-15 años. Sin embargo, los FPGA todavía tienen otras características como multiplicadores, serializadores y muchos recuerdos que pueden forzar un diseño en uno, incluso si no tiene tanta lógica.
fuente