📌 Programmable Logic
Programmable Logic — класс цифровых логических устройств, структура которых может быть сконфигурирована пользователем после производства. Используется для реализации схем, специфичных под задачу.
🧠 Как работает
Programmable Logic состоит из базовых логических элементов (например, LUT, Flip-Flops), объединённых в CLB и соединённых через программируемую маршрутизацию:
- Пользователь описывает логику (на HDL — Verilog или VHDL)
- Код компилируется в битстрим — конфигурационный файл
- Битстрим загружается в устройство: FPGA, CPLD, eFPGA
- После загрузки устройство начинает функционировать как цифровая схема
Типы логики:
Тип устройства | Особенности |
---|---|
FPGA | Гибкость, масштабируемость, SRAM-конфигурация |
CPLD | Меньше по объёму, быстрее конфигурация (FLASH) |
eFPGA | Встраиваемый блок в SoC |
PLA, PAL | Устаревшие варианты с фиксированной структурой |
⚙️ Где применяется
Область | Примеры |
---|---|
Embedded | Пользовательские периферии, GPIO |
Digital Signal Processing DSP | Реализация FIR, FFT, MAC |
AI Accelerators | Аппаратные ядра для ML-алгоритмов |
ASIC prototyping | Проверка логики до массового производства |
Networking | Firewall, NAT, Packet Parser |
Industrial Control | Таймеры, интерфейсы, PWM |
💻 Пример (фрагмент Verilog)
module and_gate(input a, input b, output y);
assign y = a & b;
endmodule
📐 Внутреннее устройство (на примере FPGA)
Модуль | Назначение |
---|---|
LUT (Look-Up Table) | Булева логика |
Flip-Flops / registers | Синхронизация, хранение состояний |
CLB | Составной логический блок |
Routing Matrix | Коммутация между CLB |
BRAM | Блоки встроенной памяти |
DSP Blocks | АЛУ, MAC для математики |
IO Blocks | Интерфейс с внешними сигналами |
PLL / Clock Management | Тактирование |
Configuration Logic | Загрузка битстрима, проверка и управление |
🧩 Связанные технологии
-
HLS (High-Level Synthesis)
✅ Преимущества
-
Аппаратная гибкость без производства новых чипов
-
Быстрая итерация: можно изменить поведение за минуты
-
Идеально подходит для нестандартных или критичных задач
-
Высокая параллельность и низкие задержки