Field-Programmable Gate Arrays and Complex Programmable CPLDs represent distinct methodologies for implementing custom functions. Programmable logic comprise an matrix of configurable logic elements , interconnected via a programmable routing network . This design enables implementation of extraordinarily sophisticated designs . In contrast , CPLDs