The document discusses different types of programmable logic devices including CPLDs and FPGAs. It provides details on the architecture and workings of the Xilinx XC9500 CPLD family and Xilinx XC4000 FPGA family. The XC9500 CPLD uses function blocks containing macrocells with programmable AND and OR arrays. The XC4000 FPGA uses configurable logic blocks containing function generators, flip-flops and programmable multiplexers to implement logic functions. Both devices use programmable interconnects to route signals between blocks.