Чтобы не усложнять, можно сказать, что FPGA от CPLD в наши дни не отличается ничем. :) Скажем, Altera MAX V это вроде бы как CPLD, но, если почитать документацию, выясняется, что ее архитектура больше похожа на FPGA.
Единственный органолептический признак - FPGA как правило требует внешней микросхемы памяти, а CPLD имеет встроенную память. Ну и FPGA как правило имеют гораздо большее количество ячеек. Хотя в наши дни CPLD тоже бывают огромной емкости.
Что касается отличия микроконтроллера от микропроцессора, а микропроцессора от системы на кристалле (SoC), тут все немного проще.
В древние годы то, что мы называем микроконтроллером, называлось "однокристалльная микро-ЭВМ". :) Микроконтроллер - это все в одном и на одном кристалле. Ядро, память, периферия.
Микропроцессор - строго говоря, только ядро со вспомогательными подсистемами. Все остальное нужно навешивать снаружи.
Система на кристалле - размытое понятие. В наши дни под этим обычно понимается микросхема, в которой реализовано ядро с периферией, но к которой требуется подключать внешнюю память.