CPLD ( inglés) Complex Programmable Logic Device ) es un circuito integrado de lógica programable (FPGA) en el rango de complejidad entre microcircuitos PAL ( Programmable Array Logic ) y FPGA ( Field-Programmable Gate Array ) , combinando sus soluciones arquitectónicas.
La base de CPLD es la matriz de macrocélulas , que implementa conexiones lógicas de puertas u operaciones lógicas más complejas. Los bloques de macroceldas se combinan mediante una matriz de conmutación programable con salida posterior a las entradas (salidas) del circuito [1] .
En CPLD hay disponible una cantidad suficientemente grande de puertas lógicas, desde varios miles hasta decenas de miles, lo que permite la implementación de dispositivos de procesamiento de datos relativamente complejos (para PAL, esto es un máximo de varios cientos de puertas lógicas, en los FPGA modernos, la cantidad de puertas puede llegar a varios millones). Al mismo tiempo, para FPGA es posible programar una lógica más flexible y compleja que expresiones simples como la suma de productos , hasta la implementación de elementos de procesamiento de señales digitales , filtros digitales y procesadores de propósito general (a diferencia de CPLD, La tecnología FPGA se basa en tablas de consulta (LUT) ) [1] [2] .
En las versiones originales de CPLD, el enrutamiento limitaba la capacidad de conectar la mayoría de los bloques lógicos a sus canales de E/S a través de contactos externos, lo que no permitía un uso óptimo de la memoria interna de los microcircuitos y la implementación de lógica multinivel. Las familias más nuevas de CPLD grandes ya no tienen esta limitación.
La principal diferencia entre los CPLD grandes y los FPGA pequeños hasta hace poco era la presencia de una memoria de configuración interna no volátil en el CPLD. Esta diferencia ya no es tan significativa, ya que varios modelos recientes de FPGA también incluyen dicha memoria interna. Sin embargo, la presencia de una memoria de configuración no volátil interna de este tipo, junto con una característica tan importante como la estabilidad de los indicadores, hace que los CPLD sean indispensables para los circuitos digitales modernos como un dispositivo para inicializar el circuito antes de transferir el control a otros microcircuitos que no tienen este capacidad. Un ejemplo sería usar un CPLD para cargar datos de configuración de FPGA desde una memoria no volátil.
A medida que avanza la tecnología, la distinción entre CPLD y FPGA continúa desdibujándose (por ejemplo, algunos CPLD de Intel a veces se denominan FPGA). Al mismo tiempo, comparando estas dos familias y teniendo en cuenta el desarrollo de los propios CPLD y sus capacidades, sus ventajas arquitectónicas como precio, configuración no volátil, macroceldas con características de parámetros predecibles, menor consumo de energía, podemos suponer que los CPLD tendrá un nicho estable en el futuro previsible en el establecimiento de los parámetros iniciales de los circuitos digitales, tecnología móvil, expansión del número de entradas/salidas para microcircuitos más complejos, preprocesamiento de señales (por ejemplo, un controlador de puerto COM , USB , VGA ) y en otras aplicaciones [1] [3] [4] [5] .
Principales fabricantes de CPLD: Altera , Atmel , Cypress Semiconductor , Lattice Semiconductor , Xilinx .