📌 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)
✅ Преимущества
-
Аппаратная гибкость без производства новых чипов
-
Быстрая итерация: можно изменить поведение за минуты
-
Идеально подходит для нестандартных или критичных задач
-
Высокая параллельность и низкие задержки