MPSoC, чистый FPGA или MCU+ARM: как выбрать между тремя гетерогенными маршрутами
Самый частый вопрос при выборе встраиваемой системы — не «какой чип самый быстрый», а «что выбрать: MPSoC, чистый FPGA или MCU+ARM с внешней логикой?». У этих трёх маршрутов чёткие границы по вычислениям, эффективности разработки, стоимости и энергопотреблению.
Сначала разберём три маршрута: они решают разные задачи
| Маршрут | Архитектура | Хорош в | Плох в |
|---|---|---|---|
| MPSoC (серия Zynq) | ARM-подсистема (PS) + программируемая логика FPGA (PL) на одном кристалле | Совместная разработка аппаратуры и ПО: ARM под управлением Linux, PL — параллельное ускорение в реальном времени | Массовая параллельная логика как у чистого FPGA; сверхнизкая стоимость |
| Чистый FPGA (Kintex/Virtex) | Полностью программируемая логика, без встроенного CPU | Жёсткий реалтайм, прямая работа с высокоскоростными интерфейсами, индивидуальные потоки данных | Сложные ОС, стеки протоколов, человеко-машинный интерфейс |
| MCU+ARM + внешний FPGA/CPLD | MCU или ARM SoC выполняет основную программу, внешняя мелкая логика — согласование | Чувствительность к стоимости, преобладание управления, минимум glue-логики | Высокоскоростные потоки данных, многоканальное параллельное ускорение |
Ключевое суждение: если системе нужны «ОС + параллельное ускорение в реальном времени» на одном кристалле — MPSoC первый выбор; если вся ценность в параллельных потоках и высокоскоростных интерфейсах — чистый FPGA прямее; если 90 % системы — управляющая логика с минимумом glue, MCU+внешняя мелочь выигрывает по стоимости.
Первый счёт: как распределить вычислительные потребности
| Тип задачи | Примеры | Требуемые вычисления | Лучший маршрут |
|---|---|---|---|
| Linux/сетевые стеки/ФС | Управление устройством, Web-интерфейс, журнал данных | Двухъядерный ARM+ | MPSoC или MCU+ARM |
| Многоканальный параллельный сбор/обработка | 8 каналов АЦП одновременно, 4 видеопотока | Логика FPGA (DSP/BRAM/LUT) | Чистый FPGA или PL MPSoC |
| Протоколы высокоскоростных интерфейсов | PCIe Gen3, 10G Ethernet, JESD204B | Жёсткий IP FPGA или логика | Чистый FPGA или MPSoC |
| Простой автомат/расширение IO | Кнопки, светодиоды, UART/I2C мост | Минимум LUT | MCU+CPLD/малый FPGA |
| ИИ-вывод/нейросети | Обнаружение объектов, классификация, извлечение признаков | ARM NEON или ускорение FPGA | MPSoC (ускорение в PL) или чистый FPGA |
Правило большого пальца: если последовательные управляющие задачи >60 % и нужна ОС — MPSoC; если параллельные реалтайм-задачи >60 % и критичны по задержке — чистый FPGA; если ни то ни другое незначительно — MCU+внешняя мелкая логика.
Второй счёт: эффективность разработки и компетенции команды
| Параметр | MPSoC | Чистый FPGA | MCU+ARM+внешняя логика |
|---|---|---|---|
| Разработка ПО | C/C++ под Linux/bare-metal ARM | Почти нет «ПО», всё на RTL | C на MCU, минимум Verilog |
| Разработка аппаратуры | Vivado для логики PL | Вся логика на Verilog/VHDL | Конфигурация регистров MCU + glue |
| Время загрузки | PS грузит Linux ~2–5 с | Конфигурация FPGA готова, <100 мс | MCU загружается <10 мс |
| Требования к команде | Встроенный C И FPGA RTL | Чистая FPGA-команда | Обычная встроенная команда |
| Сложность отладки | Отладка взаимодействия PS/PL сложна | Основная сложность — тайминги | Самый простой |
Третий счёт: стоимость, энергопотребление и площадь платы
| Параметр | MPSoC (класс ZU4EV) | Чистый FPGA (класс XCKU15P) | MCU+внешний CPLD/малый FPGA |
|---|---|---|---|
| Стоимость кристалла | Средне-высокая ($50–150) | Высокая ($100–300) | Низкая ($5–20) |
| Площадь платы | Один кристалл, малая | Один кристалл, много обвязки | Два кристалла, больше |
| Типичное энергопотребление | 5–15 Вт | 10–25 Вт | 1–3 Вт |
| Обвязка | DDR, управление питанием значительны | DDR (при необходимости), высокоскоростные трансиверы | Минимум, без высокоскоростного DDR |
| Стоимость в серийном производстве | Средняя | Высокая | Низкая |
Таблица решений: пять вопросов для выбора маршрута
| № | Вопрос | Если «Да» | Если «Нет» |
|---|---|---|---|
| 1 | Нужна ли системе Linux/сложная ОС? | Склоняйтесь к MPSoC | Дальше |
| 2 | Есть ли 4+ параллельных потока или высокоскоростные интерфейсы? | Чистый FPGA или PL MPSoC | Дальше |
| 3 | Умеет ли ваша команда писать RTL FPGA? | MPSoC или чистый FPGA возможны | MCU+внешняя логика |
| 4 | Должна ли себестоимость BOM быть ниже $30? | MCU+внешняя логика | Дальше |
| 5 | Нужны ли управление И ускорение реального времени на одном кристалле? | MPSoC | Чистый FPGA или раздельная плата |
Распространённые заблуждения: когда MPSoC — неправильный выбор
1. Только управление, без ускорения в PL: MPSoC тратит впустую половину кристалла; возьмите ARM SoC (вроде i.MX) + минимум логики.
2. Логика PL превышает ёмкость MPSoC: у XCU4EV ~154K LUT в PL; если нужно 300K+ LUT — переходите на чистый FPGA (XCKU15P ~372K LUT) или старший MPSoC.
3. Команда вообще не знает FPGA: если PL простаивает, купите более дешёвый Zynq-7000 или просто ARM SoC.
4. Нужно сверхбыстрое включение: PS MPSoC грузит Linux секундами; если нужно <100 мс — чистый FPGA или MCU.
Рекомендации по платам
- Маршрут MPSoC → DUUZ4EV (XCZU4EV Zynq UltraScale+ MPSoC): ARM Cortex-A53 + R5F плюс логика PL, для средне-высоких проектов с совместной разработкой.
- Маршрут чистого FPGA → DUKU15P (XCKU15P Kintex UltraScale+): 372K LUT плюс 32 GTH-трансивера, для крупномасштабной параллельной логики.
- Отечественный/бюджетный маршрут → PBC7Z021G (отечественный Zynq SoM): совместим с XC7Z021 гетерогенный SoC, для проектов с бюджетом или требованиями импортозамещения.
Читать далее
- [Матрица выбора FPGA: ресурсы, трансиверы и цена](/article/fpgaselection-decision-matrix/)
- [Практика замены отечественного ZYNQ (PBC7Z020G/021G): от принципиальной схемы до ПО](/article/domestic-zynq-replacement-practice/)
- [Бортовой ИИ-вывод на мультикамерной системе: FPGA-конвейер от сенсора к NPU](/article/multi-camera-onboard-ai-inference/)
