CPLD (ang. Complex Programmable Logic Device) – złożone programowalne układy elektroniczne. Są one koncepcyjnie podobne do SPLD, lecz mają bardziej złożoną budowę, tzn. posiadają 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. Wiele takich bloków jest zaś łączona za pomocą matrycy połączeniowej kluczy, której zdolność łączeniowa określa, w jakim stopniu układ jest programowalny. Ta liczba połączeń wewnątrz matrycy określa bowiem, jak łatwo jest dostosować jakiś projekt do danego układu programowalnego. Jedną z najważniejszych 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 makrokomórek.