Un dispositivo lógico programable complejo ( CPLD ) es un dispositivo lógico programable con una complejidad entre la de los PAL y los FPGA , y con características arquitectónicas de ambos. El componente principal del CPLD es una macrocelda , que contiene lógica que implementa expresiones de forma normal disyuntiva y operaciones lógicas más especializadas.
Algunas de las características de los CPLD son comunes a los PAL :
Otras características son comunes con los FPGA :
La diferencia más notable entre un CPLD grande y un FPGA pequeño es la presencia de memoria no volátil en el chip del CPLD, lo que permite que los CPLD se utilicen para funciones de " cargador de arranque ", antes de entregar el control a otros dispositivos que no tienen su propio almacenamiento de programa permanente. Un buen ejemplo es cuando se utiliza un CPLD para cargar datos de configuración para un FPGA desde la memoria no volátil. [1]
Los CPLD fueron un paso evolutivo a partir de dispositivos aún más pequeños que los precedieron: los PLA (primero distribuidos por Signetics ) y los PAL . Estos, a su vez, fueron precedidos por productos lógicos estándar , que no ofrecían programabilidad y se usaban para construir funciones lógicas mediante el cableado físico de varios chips lógicos estándar (o cientos de ellos) juntos (generalmente con cableado en una placa o placas de circuito impreso, pero a veces, especialmente para la creación de prototipos, utilizando cableado con envoltura de alambre ).
La principal distinción entre las arquitecturas de dispositivos FPGA y CPLD es que los CPLD se basan internamente en una colección de PLD acompañados de una estructura de interconexión programable, mientras que los FPGA utilizan bloques lógicos .