Сообщение от spballiance
|
BSA-elec, объяснять различие лучше не ссылками, а выборочным копипастом сюда с личными комментариями
|
ОК.
CPLD строятся на основе макроячеек (МЯ), а FPGA на основе Logic Element (LE).
Структура МЯ приведена на вложенном рисунке. Каждая МЯ состоит их матриц И и ИЛИ, а также триггера. Соединение матрицы И с входными сигналами можно программировать. Матрица ИЛИ как правило, фиксированная.
Структура LE показана на следующем рисунке. Он состоит из LUT, триггера и мультиплексора. LUT обычно 4 входовые. Фактически LUT представляет собой ОЗУ 16х1, в которое при конфигурировании FPGA записывается нужная нам таблица истинности, т.е. LUT используются для реализации логических функций (И, ИЛИ, НЕ и т.д.). Любое логическое выражение можно представить в виде таблицы истинности. При написании прошивки логические функции обычно пишутся в виде логических выражений, а компилятор (синтезатор) уже сам формирует нужную нам таблицу истинности. Триггер используется для реализации синхронных схем (счётчики, регистры, и т.д.). Ещё одним отличием FPGA от CPLD является наличие отдельных блоков для реализации памяти и умножителей. Также в FPGA почти всегда есть PLL для получения нужной тактовой частоты или даже сетки частот. В некоторых FPGA PLL можно переконфигурировать во время работы (т.е. динамически изменять тактовую частоту).
Ещё одним отличием FPGA от CPLD является то, что прошивка хранится в ОЗУ (SRAM). В CPLD она хранится в EEPROM. В FPGA каждый раз после включения питания прошивка должна загружаться из внешнего конфигурационного ПЗУ или с помощью микроконтроллера, или другого конфигурационного устройства.
Существуют также комбинированные микросхемы (MAX II фирмы Altera).
Структура у них такая же, как у FPGA, но они имеют уже встроенное конфигурационное ПЗУ.
Уфф. Устал писать.