1. Введение: зачем нужна программируемая логика
В цифровой электронике существует дилемма:
- Микропроцессоры/микроконтроллеры — гибкие, но медленные (потактовая обработка).
- Специализированные ИС (ASIC) — быстрые и энергоэффективные, но дорогие в разработке и негибкие.
Программируемая логика (PLD — Programmable Logic Device) занимает золотую середину:
- аппаратная реализация алгоритмов (высокая скорость);
- перепрограммируемость (гибкость);
- относительно низкая стоимость прототипов.
Ключевые преимущества:
- параллельная обработка данных;
- жёсткие временные ограничения (real‑time);
- возможность реконфигурации «на лету»;
- интеграция множества функций на одном кристалле.
2. Основные типы программируемых логических устройств
2.1. ПЛМ (CPLD — Complex Programmable Logic Device)
Суть: набор макроячеек (MC — Macrocells), соединённых коммутационной матрицей.
Характеристики:
- умеренная логическая ёмкость (тысячи эквивалентных вентилей);
- энергонезависимая память конфигурации (обычно EEPROM/Flash);
- быстрое включение (конфигурация «из коробки»);
- предсказуемые задержки (фиксированная топология межсоединений).
Типичные применения:
- управление интерфейсами (декодеры, мультиплексоры);
- замена «развесистой» логики на плате;
- начальные стадии прототипирования;
- системы с жёсткими требованиями к времени старта.
2.2. ПЛИС (FPGA — Field‑Programmable Gate Array)
Суть: массив конфигурируемых логических блоков (CLB — Configurable Logic Block), окружённых программируемыми межсоединениями.
Характеристики:
- высокая логическая ёмкость (миллионы эквивалентных вентилей);
- энергозависимая память конфигурации (SRAM‑based), требует загрузки при включении;
- гибкая топология межсоединений (богатые ресурсы маршрутизации);
- поддержка сложных встроенных блоков (ПЗУ, умножители, DSP, процессоры).
Типичные применения:
- цифровая обработка сигналов (DSP);
- видео- и изображениеобработка;
- криптография и безопасность;
- ускорители для CPU/GPU;
- прототипирование ASIC.
3. Архитектура CPLD
3.1. Макроячейка (Macrocell)
Базовая единица логики, обычно включает:
- Логический блок (LUT — Look‑Up Table или сумматор произведений);
- Триггер (D‑триггер для хранения состояния);
- Мультиплексоры для выбора режимов (регистровый/комбинационный);
- Выходы с трёхстабильным буфером.
Пример: макроячейка может реализовать функцию вида
F=(A⋅B+C⋅D)⋅Q,
где Q — выход триггера.
3.2. Коммутационная матрица (Programmable Interconnect Array, PIA)
- Набор программируемых связей между макроячейками и вводами/выводами.
- Ограниченное число путей (в отличие от FPGA).
- Обеспечивает детерминированные задержки.
3.3. Блоки ввода‑вывода (I/O Blocks)
- Конфигурируемые режимы (вход, выход, двунаправленный).
- Поддержка разных стандартов напряжений (LVTTL, LVCMOS, etc.).
- Регистры для синхронизации.
4. Архитектура FPGA
4.1. Конфигурируемый логический блок (CLB)
Состоит из:
- LUT (Look‑Up Table) — табличный вычислитель булевых функций (обычно 4–6 входов);
- Триггер (D‑триггер);
- Мультиплексеры для выбора режимов.
Пример: LUT с 4 входами хранит 16‑битную таблицу — любую функцию от 4 переменных.
4.2. Программируемые межсоединения (Routing Resources)
- Каналы (вертикальные/горизонтальные) с переключателями.
- Программируемые точки соединения (Switches) — управляют маршрутом сигнала.
- Высокая гибкость, но переменные задержки.
4.3. Встроенные блоки (Hard IP)
- Block RAM — быстрая память на кристалле;
- DSP Slices — умножители‑аккумуляторы для цифровой обработки;
- PLL/MMCM — блоки фазовой автоподстройки для генерации тактов;
- Интерфейсные контроллеры (PCIe, Ethernet, DDR).
4.4. Блоки ввода‑вывода (I/O Blocks)
- Поддержка множества стандартов (3,3 В, 1,8 В, дифференциальные пары).
- Регистры для синхронизации.
- Сердечники (SerDes) для высокоскоростных интерфейсов.
5. Технологии программирования и конфигурации
5.1. CPLD (энергонезависимая память)
- EEPROM/Flash — конфигурация хранится на кристалле.
- При включении — сразу готова к работе.
- Ограниченное число циклов перезаписи (десятки/сотни тысяч).
5.2. FPGA (энергозависимая память)
- SRAM‑based — конфигурация загружается при включении из внешней памяти (Flash, EEPROM).
- Быстрое перепрограммирование.
- Высокое число циклов перезаписи.
- Требуется внешний контроллер загрузки.
5.3. Языки описания аппаратуры (HDL)
- VHDL (VHSIC Hardware Description Language) — строгая типизация, популярен в Европе/оборонке.
- Verilog — синтаксис похож на C, популярен в США/коммерческих проектах.
- SystemVerilog — расширение Verilog с объектно‑ориентированными возможностями.
5.4. Средства разработки
- Xilinx Vivado, Intel Quartus Prime — САПР для синтеза, размещения и трассировки.
- Симуляторы (ModelSim, VCS) — верификация до аппаратной реализации.
- Отладочные платы — тестирование на реальном железе.
6. Процесс проектирования на ПЛИС/ПЛМ
- Спецификация — описание функциональности и требований.
- Кодирование на HDL — описание логики на VHDL/Verilog.
- Функциональная верификация — симуляция без учёта задержек.
- Синтез — преобразование HDL в сеть вентилей и LUT.
- Размещение и трассировка (Place & Route) — распределение по CLB и прокладка связей.
- Временной анализ — проверка соблюдения таймингов.
- Генерация битового потока — файл конфигурации для загрузки в FPGA/CPLD.
- Тестирование на плате — отладка в реальном времени.
7. Сравнение CPLD и FPGA
| Параметр | CPLD | FPGA |
|---|---|---|
| Память конфигурации | Энергонезависимая (Flash/EEPROM) | Энергозависимая (SRAM) |
| Время старта | Мгновенно | Требуется загрузка |
| Логическая ёмкость | Тысячи вентилей | Миллионы вентилей |
| Гибкость межсоединений | Ограниченная (PIA) | Высокая (богатая маршрутизация) |
| Задержки | Детерминированные | Переменные (зависят от трассировки) |
| Энергопотребление | Ниже (при работе) | Выше (из‑за SRAM) |
| Стоимость | Ниже для малых проектов | Выше, но оправдана для сложных систем |
| Циклы перезаписи | Ограниченные (10⁴–10⁵) | Неограниченные |
| Типичные применения | Управление интерфейсами, замена логики | DSP, видео, ускорители, ASIC‑прототипирование |
8. Современные тенденции и расширения
8.1. SoC FPGA (System‑on‑Chip FPGA)
- Интеграция процессорных ядер (ARM Cortex‑A9/A53) на одном кристалле с FPGA.
- Пример: Xilinx Zynq, Intel SoC FPGA.
- Позволяет сочетать:
- жёсткую логику (FPGA) для real‑time обработки;
- софтварные ядра (CPU) для управления и ОС.
8.2. Высокоскоростные интерфейсы
- Встроенные SerDes (до 56 Гбит/с и выше).
- Поддержка PCIe Gen4/Gen5, Ethernet 100G/400G.
8.3. AI/ML ускорители
- Специализированные DSP‑блоки с поддержкой INT8/INT16.
- Библиотеки для свёрточных сетей (CNN) на FPGA



