CPLD (Complex Programmable Logic Device) — один из типов современных ПЛИС. Общая структура CPLD показана на рис. 1. Разновидность CPLD - ПЛИС типа EPLD (EPROM technology based complex Programmable Logic Devices).
Рис. 1.  Структура CPLD
Внешние выводы схемы C1 могут быть как входами, так и выходами в зависимости от поступающих от функциональных блоков (ФБ) сигналов по шинам C5. Если C1 — входы, то через блок ввода-вывода входные сигналы попадают на входы C2 коммутирующей матрицы и могут быть скоммутированы на входы C3 ФБ. Структура ФБ представлена на рис. 2.
Рис. 2.  Структура ФБ
На выходах C7 матрицы И образуются термы — элементарные конъюнкции сигналов C3. Сборка термов позволяет создать в каждой макроячейке ту или иную дизъюнктивную нормальную форму той или иной части переменных C3, выделенной в распределителе термов. Образовавшиеся сигналы могут быть переданы как на выход схемы по шинам C5, так и на входы коммутирующей матрицы по C4. Последнее означает, что с помощью CPLD можно осуществлять факторизацию и формировать скобочные формы логических функций.
Программирование схемы CPLD осуществляется, во-первых, созданием соединений между входами и выходами коммутирующей матрицы, во-вторых, программированием распределителя термов. Входами коммутирующей матрицы являются C2 и C4, а выходами C3.
Сигналы C6 используются для общего сброса, подачи синхросигналов, управления выводами I/O (вход или выход).