¿Cuál es la diferencia entre CPLD y un FPGA? [cerrado]

¿Cuál es la diferencia entre un CPLD y un FPGA?

CPLD usa solo términos de producto (y un DFF por pin de salida); FPGA tiene bloques internos configurables de LUT, carry/shift, DFF, así como enrutamiento más flexible, bloque de RAM y otros bloques especializados como PLL o MAC.
...y normalmente los CPLD usan memoria no volátil para almacenar su configuración, mientras que los FPGA usan memoria volátil (RAM), es decir, los FPGA deben inicializarse cada vez que se encienden.
Respuesta fácilmente disponible mediante Google: la pregunta debe estar cerrada.
@Leon Heller No sé por qué quieres invocar a otra persona para cerrar esta pregunta. Si cree que esta pregunta debe cerrarse, puede votar por el cierre, pero en realidad es horrible comentar "la pregunta debe cerrarse" e intentar invocar a otra persona para que lo acompañe. Si es probable que esta pregunta se cierre, primero debe cerrar la siguiente pregunta electronics.stackexchange.com/questions/1092/…
¡Varias personas están de acuerdo conmigo!
@LeonHeller (et al), esta misma pregunta también surge como respuesta a esa búsqueda en Google. (Lo obtuve como el segundo enlace, junto con otros que fueron realmente útiles).

Respuestas (2)

Los CPLD generalmente solo se usan para reemplazar una cantidad relativamente pequeña de lógica discreta. Es decir, cosas como un montón de decodificadores de direcciones y circuitos de interfaz de bus. Los CPLD contienen muy poca memoria; Generalmente, el número de flip-flops es del mismo orden de magnitud que los pines de E/S (es decir, un CPLD de 32 macroceldas tiene ~30 pines y ~30 flip-flops). La lógica combinatoria en un CPLD se implementa en una matriz lógica programable, que generalmente no es útil a velocidades muy altas. Los CPLD también suelen estar basados ​​en flash o tienen memoria flash interna, lo que simplifica los requisitos de diseño de la placa y mejora la protección contra la ingeniería inversa. Los CPLD tampoco están construidos con procesos lógicos de última generación.

Los FPGA están diseñados para computación de muy alto rendimiento e interfaces de gran ancho de banda. Internamente, utilizan una arquitectura muy diferente a la de los CPLD. Los FPGA tienen mucho más estado interno (registros y bloque de RAM) que pines de E/S. La lógica combinatoria se implementa en tablas de búsqueda de alta velocidad que pueden funcionar a varios cientos de MHz. Los LUT y otros componentes están interconectados con una red de enrutamiento de alto rendimiento. Los FPGA también contienen núcleos duros especializados que proporcionan implementaciones eficientes de varios componentes. Los bloques de RAM y los multiplicadores/segmentos DSP son muy comunes. Los FPGA también pueden contener MAC Ethernet, núcleos de procesadores duros, interfaces PCI Express y otros bloques especializados. Los transceptores de varios gigabits también son una característica común de los FPGA de gama alta que permiten la transferencia de datos hasta 50 Gbit/seg por par de pines. Los FPGA generalmente no contienen ninguna memoria no volátil, por lo que se requiere una memoria flash externa para cargar la configuración. El cifrado se puede implementar para mejorar la seguridad del diseño con una clave respaldada por batería almacenada en la FPGA.

Diferencias:

  1. Capacidad: CPLD generalmente tiene menos capacidad de lógica. El CPLD más grande puede estar en un nivel similar al FPGA más pequeño en el mercado principal.

  2. Almacenamiento de la imagen: CPLD puede iniciarse solo, mientras que la mayoría de los FPGA necesitan obtener el flujo de bits de configuración del almacenamiento no volátil porque están basados ​​en SRAM. Esto afecta la seguridad del sistema.

  3. Característica: CPLD solo proporciona puertas, o dicho, celdas lógicas, que pueden hacer todo tipo de algoritmos lógicos. Además, FPGA también incorporó muchos bloques duros como BlockRAM, DSP, TEMAC, PCIe, MGT, microprocesador, etc. para hacer un solo chip de FPGA capaz de construir un sistema integrado con todas las funciones.

Con respecto al #3, vale la pena mencionar que a lo largo de los años, a medida que los CPLD se han vuelto más sofisticados, la línea entre CPLD y FPGA se ha desdibujado. Por ejemplo, los CPLD modernos son lo suficientemente grandes como para implementar un microcontrolador. Ha llegado el momento en que algunas familias de chips que históricamente se comercializaron como CPLD ahora se marcan como FPGA (la familia Altera Max, por ejemplo)