CPLD (ang. Complex Programmable Logic Device) - złożone programowalne układy elektroniczne.
Układy te są koncepcyjnie podobne do SPLD, lecz są bardziej złożone, czyli mają większe zasoby logiczne i możliwości funkcjonalne. Mają architekturę hierarchiczną opartą na makrokomórkach logicznych, których zawierają od kilkudziesięciu do kilkuset. Zazwyczaj od 4 do 16 makrokomórek jest połączonych w większe bloki funkcjonalne. Większa ilość bloków jest łączona za pomocą matrycy połączeniowej kluczy, której zdolność łączeniowa określa w jakim stopniu układ jest programowalny. Jedną z najważnieszych cech architektury układów CPLD jest liczba termów przypadających na jedną makrokomórkę oraz możliwość pożyczki termów z sąsiednich makro komórek. Jeśli układ zawiera wiele bloków funkcjonalnych, są one łączone między sobą za pomocą matrycy połączeniowj kluczy, której zdolność łączeniowa jest ważną cechą układów CPLD. Ta liczba połączeń wewnętrz matrycy określa bowiem, jak łatwo jest „wpasować” jakiś projekt w dany układ programowalny.
