Главная / Без рубрики / Программируемые логические интегральные схемы (ПЛИС, FPGA): архитектура, языки описания аппаратуры

Программируемые логические интегральные схемы (ПЛИС, FPGA): архитектура, языки описания аппаратуры

Введение

FPGA (Field‑Programmable Gate Array, программируемая пользователем вентильная матрица) — это интегральная схема, которую можно перепрограммировать для реализации произвольной цифровой логики. В отличие от ASIC (специализированных микросхем), FPGA позволяет:

  • изменять функциональность «на лету»;
  • прототипировать схемы без изготовления чипа;
  • реализовывать параллельные вычисления на уровне вентилей;
  • ускорять специфические алгоритмы (криптография, обработка сигналов).

В статье рассмотрены:

  • архитектура FPGA и ключевые блоки;
  • принципы программирования и маршрутизации;
  • основные языки описания аппаратуры (HDL);
  • этапы проектирования;
  • сферы применения и перспективы.

1. Архитектура FPGA: основные компоненты

1.1. Конфигурируемые логические блоки (CLB, Configurable Logic Block)

CLB — базовый элемент логики FPGA. Состоит из:

  • LUT (Look‑Up Table) — табличный вычислитель (4–6 входов, 1 выход). Реализует любую булеву функцию от N переменных.
  • Триггер (Flip‑Flop, FF) — элемент памяти для хранения состояния.
  • Мультиплексоры — переключение между режимами (LUT/FF).
  • Логика переноса — ускорение арифметических операций (сложение, счётчики).

Принцип работы:

  • LUT хранит таблицу истинности функции (например, для 4‑входной LUT — 16 значений).
  • При подаче входных сигналов LUT выдаёт результат за один такт.
  • FF сохраняет выход LUT для последующих тактов.

1.2. Блоки встроенной памяти (Block RAM, BRAM)

  • Назначение: реализация ОЗУ, FIFO, буферов, таблиц.
  • Характеристики:
    • объём: от нескольких Кбит до десятков Мбит на чип;
    • ширина: 32–72 бита (с поддержкой ECC);
    • два порта (чтение/запись одновременно);
    • глубина: 512–32 768 слов.
  • Применение:
    • кэши;
    • буферы видео/аудио;
    • таблицы поиска (lookup tables);
    • временные хранилища данных.

1.3. DSP‑блоки (Digital Signal Processing Blocks)

  • Назначение: высокопроизводительные арифметические операции.
  • Функции:
    • умножение (18×18, 25×18);
    • умножение‑сложение (MAC: Multiply‑Accumulate);
    • суммирование, сдвиги;
    • поддержка знаковых/беззнаковых чисел.
  • Особенности:
    • конвейеризация (несколько операций за такт);
    • низкая задержка;
    • оптимизация для FIR/IIR‑фильтров, БПФ, матриц.

1.4. Блоки ввода‑вывода (I/O Blocks)

  • Функции:
    • согласование уровней сигналов (LVTTL, LVCMOS, LVDS и др.);
    • синхронизация (IDDR, ODDR — входной/выходной двойной дата‑рейт);
    • импеданс и терминация;
    • поддержка стандартов (SPI, I²C, Ethernet PHY).
  • Гибкость: каждый I/O‑пин конфигурируется независимо.

1.5. Маршрутизирующая матрица (Switch Matrix)

  • Назначение: соединение CLB, BRAM, DSP, I/O между собой.
  • Структура:
    • горизонтальные/вертикальные трассы;
    • программируемые мультиплексоры;
    • буферные усилители.
  • Ограничения:
    • задержка зависит от длины маршрута;
    • ограниченное число соединений на узел.

1.6. Дополнительные блоки

  • PLL/MMCM (Phase‑Locked Loop / Mixed‑Mode Clock Manager) — генерация и синхронизация тактовых сигналов.
  • PCIe, Ethernet MAC — готовые контроллеры интерфейсов.
  • Transceivers — высокоскоростные приемопередатчики (до 32 Гбит/с).
  • Security blocks — шифрование битового потока.

2. Принципы программирования FPGA

2.1. Битовый поток (Bitstream)

  • Суть: конфигурационный файл, загружаемый в FPGA.
  • Содержание:
    • значения для LUT;
    • соединения в маршрутизаторе;
    • параметры I/O, PLL, BRAM.
  • Генерация: из HDL‑кода через синтез, размещение и трассировку.

2.2. Этапы проектирования

  1. Спецификация — определение требований (функционал, тактовая частота, интерфейсы).
  2. Описание на HDL (Verilog/VHDL) — создание модели схемы.
  3. Синтез — преобразование HDL в логическую сеть (netlist).
  4. Размещение и трассировка (Place & Route) — назначение ресурсов FPGA и соединение их.
  5. Симуляция — проверка функциональности и временных характеристик.
  6. Генерация битового потока — создание файла для загрузки в FPGA.
  7. Тестирование на плате — верификация в реальном устройстве.

2.3. Параллелизм и тактование

  • Параллельное выполнение: все логические блоки работают одновременно.
  • Синхронная логика: сигналы синхронизируются тактовым сигналом (clock).
  • Критический путь — самая длинная цепочка задержек между FF; определяет максимальную частоту.

3. Языки описания аппаратуры (HDL)

3.1. VHDL (VHSIC Hardware Description Language)

  • Происхождение: 1980‑е, военный стандарт (VHSIC — Very High Speed Integrated Circuit).
  • Стиль: строгий, типизированный (как Ada).
  • Синтаксис:entity MyAdder is port ( a, b : in std_logic_vector(7 downto 0); sum : out std_logic_vector(7 downto 0) ); end entity; architecture Behavioral of MyAdder is begin sum <= a + b; end architecture;
  • Плюсы:
    • строгая типизация (меньше ошибок);
    • поддержка иерархии и пакетов;
    • распространён в аэрокосмосе и оборонке.
  • Минусы:
    • громоздкий синтаксис;
    • сложнее для начинающих.

3.2. Verilog

  • Происхождение: 1990‑е, коммерческий стандарт.
  • Стиль: C‑подобный, лаконичный.
  • Синтаксис:module MyAdder (input [7:0] a, b, output [7:0] sum); assign sum = a + b; endmodule
  • Плюсы:
    • простота изучения;
    • компактность кода;
    • широкая поддержка в индустрии.
  • Минусы:
    • слабая типизация (риск ошибок);
    • меньше средств абстракции.

3.3. SystemVerilog

  • Расширение Verilog (IEEE 1800), включает:
    • объектно‑ориентированные конструкции (классы, интерфейсы);
    • утверждения (assertions) для верификации;
    • типы данных (struct, enum);
    • многопоточность (fork/join).
  • Пример:typedef struct { logic [7:0] data; logic valid; } Packet; class Generator; function Packet gen_packet(); // ... endfunction endclass
  • Плюсы:
    • единый язык для проектирования и верификации;
    • масштабируемость для сложных систем;
    • совместимость с Verilog.

3.4. Выбор языка

  • VHDL: если требуется строгая верификация (авиация, медицина).
  • Verilog: для быстрых прототипов и обучения.
  • SystemVerilog: для крупных проектов с тестированием (ASIC/FPGA).

4. Инструменты разработки

4.1. САПР (EDA Tools)

  • Xilinx Vivado — для FPGA Xilinx (VHDL/Verilog/SystemVerilog).
  • Intel Quartus Prime — для FPGA Intel (Altera).
  • Lattice Diamond — для Lattice Semiconductor.
  • Yosys + NextPNR — открытые инструменты (поддержка разных FPGA).

4.2. Симуляторы

  • ModelSim/Questa — коммерческие.
  • Icarus Verilog — открытый.
  • GHDL — открытый VHDL‑симулятор.

4.3. Платформы для прототипирования

  • Отладочные платы (Xilinx Zynq, Intel Cyclone).
  • **HIL (Hardware‑in‑the‑

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *