Un dispositivo lógico programable complejo ( CPLD ) es un dispositivo lógico programable con una complejidad entre la de PAL y FPGA , y características arquitectónicas de ambos. El componente principal del CPLD es una macrocélula , que contiene lógica que implementa expresiones en forma normal disyuntiva y operaciones lógicas más especializadas.
Algunas de las características de CPLD son comunes con las 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 en el CPLD, lo que permite que los CPLD se utilicen para funciones de " cargador de arranque ", antes de ceder el control a otros dispositivos que no tienen su propio almacenamiento permanente de programas. Un buen ejemplo es cuando se utiliza un CPLD para cargar datos de configuración para una FPGA desde una memoria no volátil. [1]
Los CPLD fueron un paso evolutivo respecto de dispositivos aún más pequeños que los precedieron: los PLA (enviados por primera vez 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 cableando físicamente 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 envolvente ).
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 .