Complex programmable logic device(CPLD)
The building block of a CPLD is the macrocell , which contains logic implementing disjunctive normal form expressions and more specialized logic operations.A good example is where a CPLD is used to load configuration data for an FPGA from non-volatile memory.
The main distinction between FPGA and CPLD device architectures is that FPGAs are internally based on look-up tables (LUTs) while CPLDs form the logic functions with sea-of-gates (for example, sum of products).