Когда выбирать FPGA или CPLD, а не микроконтроллер
Микроконтроллер выполняет инструкции последовательно, даже если использует прерывания, DMA и несколько ядер. FPGA формирует цифровую схему, в которой десятки операций происходят одновременно, а задержка определяется числом тактов аппаратного конвейера. CPLD занимает промежуточную нишу: сравнительно небольшая логика, предсказуемый запуск и удобная замена набора дискретных микросхем. FPGA не является «очень быстрым микроконтроллером», а MCU — «дешёвой FPGA». У них разные модели проектирования, проверки и обновления. Выбор программируемой логики оправдан, когда параллелизм, точная временная диаграмма или нестандартный интерфейс дают измеримое преимущество. Для обычного управления, сетевого стека и сложной бизнес-логики MCU часто остаётся дешевле и проще.
Начните с временной диаграммы
Запишите не среднюю скорость, а жёсткие требования: частоту входных событий, допустимую задержку, джиттер, число параллельных каналов и реакцию на совпавшие события. MCU может обрабатывать поток 1 Мбит/с в среднем, но пропустить импульс шириной 30 нс. FPGA способна захватить такой импульс аппаратной логикой, если её входной тракт и тактирование рассчитаны корректно.
Для каждого канала укажите, можно ли буферизовать данные. Если задержка в несколько миллисекунд допустима, DMA и периферия MCU часто решают задачу. Если десять каналов должны одновременно обновить выходы через 100 нс с фиксированным разбросом, программная обработка становится рискованной.
Когда достаточно CPLD
CPLD подходит для glue logic: декодирования адресов, формирования chip select, преобразования последовательностей включения, объединения аварийных сигналов, простых счётчиков, конечных автоматов и мостов между медленными интерфейсами. Конфигурация многих CPLD хранится во встроенной энергонезависимой памяти, поэтому выходы переходят в заданное состояние быстро после подачи питания.
Главные ограничения — небольшое число логических ресурсов, скромная встроенная память и ограниченный набор аппаратных блоков. Перед выбором оцените не только число макроячеек, но и количество регистров, глобальных тактовых сетей, I/O banks и доступных выводов в выбранном корпусе. Простая функция может не поместиться из-за структуры product terms, хотя суммарное число логических уравнений выглядит небольшим.
Когда требуется FPGA
FPGA оправдана для параллельной цифровой обработки, агрегации камер и датчиков, аппаратных фильтров, высокоскоростных интерфейсных мостов, точного многоканального PWM, протоколов с нестандартной временной диаграммой и предварительной обработки потока перед CPU. Современные семейства могут содержать блоки RAM, DSP slices, PLL, SERDES, процессорные ядра и интерфейсы памяти.
Наличие блока ещё не означает готового решения. Для DDR, PCIe, MIPI или Ethernet потребуется лицензируемое либо открытое IP-ядро, проверенная плата, constraints и серьёзная верификация. Уточняйте, входит ли нужное IP в лицензию инструмента и переносится ли оно на серийное устройство.
Сравните задержку и пропускную способность
Для программного алгоритма оцените worst-case execution time, время прерываний и конкуренцию DMA. Для FPGA построьте поток: входной регистр, стадии вычисления, буфер, выход. Пропускная способность конвейера может составлять один результат за такт, хотя полная задержка равна нескольким тактам.
Например, фильтр из 32 умножений на MCU выполняется последовательной инструкцией, SIMD или DSP-периферией. В FPGA часть умножителей работает параллельно; при 100 МГц новый результат может появляться каждые 10 нс после заполнения конвейера. Но это потребует 32 DSP-блоков либо временного разделения ресурсов. Выбор архитектуры напрямую меняет размер кристалла и мощность.
Тактирование — отдельный проект
FPGA содержит несколько clock domains. Любой сигнал между ними требует корректного CDC: двухтактного синхронизатора для одиночного уровня, handshake для событий или асинхронного FIFO для потока. Нельзя просто соединить регистры разных доменов и надеяться на моделирование: метастабильность проявляется статистически и может пройти лабораторные тесты.
Опишите все clocks, generated clocks, исключения и задержки I/O в constraint-файле. После синтеза анализируйте static timing analysis, а не только функциональную симуляцию. Отчёт с отрицательным slack означает, что проект не гарантирует работу на заданной частоте.
Входы, банки и уровни питания
Выводы FPGA объединены в банки с общими напряжениями и ограничениями стандартов I/O. Нельзя произвольно разместить 1,8-, 2,5- и 3,3-вольтовые интерфейсы. Проверьте VCCIO, поддерживаемый стандарт, дифференциальные пары, опорное VREF и разрешённые clock-capable pins. Для некоторых конфигураций внутренние терминации доступны не на всех выводах.
Количество пользовательских I/O всегда меньше числа шаров корпуса: часть занята питанием, JTAG, конфигурацией и специальными функциями. Выполните предварительный pin planning до выбора корпуса и разводки.
Конфигурация и безопасный запуск
SRAM-based FPGA загружает bitstream из внешней памяти или от процессора. Нужно рассчитать время конфигурации, состояние выводов до завершения загрузки и реакцию силовой части. Если FPGA управляет ключами, аппаратный inhibit должен удерживать их в безопасном состоянии независимо от неопределённой конфигурации.
Продумайте обновление bitstream: золотой образ, проверку целостности, защиту от прерывания питания и совместимость с версией платы. Для CPLD со встроенной конфигурацией процесс проще, но JTAG-цепь и серийное программирование всё равно должны быть доступны.
Память и буферизация
Встроенная block RAM быстра, но её объём ограничен. Строковый буфер изображения, сетевой пакет или таблица коэффициентов могут неожиданно занять значительную часть кристалла. Внешняя SDRAM/DDR увеличивает ёмкость, но добавляет контроллер, высокоскоростную разводку и переменную задержку.
Для каждого потока рассчитайте объём буфера: B = скорость × максимально допустимое время обслуживания. Добавьте запас на пакетность и рассогласование тактов. FIFO следует проверять на переполнение и опустошение при худшем соотношении частот.
Питание и тепловой режим
FPGA часто требует несколько шин: ядро, I/O, PLL, transceivers. Рассчитайте последовательность, soft-start и ток запуска. Мощность зависит от family, utilization, частоты переключений, числа I/O и toggle rate; паспортное максимальное значение без проекта малоинформативно. Используйте официальный power estimator после place-and-route и подтвердите измерением.
Развязка критична: быстрые фронты создают импульсный ток. План PDN, количество конденсаторов и расположение шаров питания берут из hardware design guide. Недостаточная развязка может выглядеть как случайная ошибка логики.
Инструменты и цена разработки
Сравните поддержку устройства в бесплатной версии IDE, ограничения размеров, стоимость лицензий, симулятора и IP. Проверьте операционные системы, срок поддержки family и возможность закрепить версию toolchain. Новый релиз синтезатора способен изменить placement и временные характеристики, поэтому серийный bitstream собирают воспроизводимо.
Команде понадобятся HDL, testbench, assertions, CDC-анализ и работа с timing constraints. Если единственный разработчик знает только C, стоимость обучения может превысить цену более мощного MCU.
Практический пример выбора
Устройство принимает восемь потоков от энкодеров, формирует точные импульсы для восьми приводов и каждые 10 мс передаёт статистику по Ethernet. Управляющие алгоритмы и сеть удобно оставить MCU. Захват фронтов и генерацию импульсов с разрешением 20 нс лучше реализовать CPLD/FPGA, связанной с MCU через SPI или параллельную шину.
Гибридная архитектура уменьшает объём HDL и сохраняет удобство обновления прикладной логики. Сначала создают таблицу регистров между устройствами, определяют watchdog и безопасное состояние при пропадании связи, затем проверяют пределы входной частоты и задержку от входа до выхода.
Примеры из каталога ChipBaza
EPM240T100C5N и EPM570T100C5N — примеры CPLD семейства MAX II в корпусе TQFP, удобном для задач glue logic и детерминированных автоматов. ICE40LP4K-CM81 показывает более компактную FPGA с иной архитектурой ресурсов и корпусом. Они не являются взаимозаменяемыми: различаются логические элементы, память, конфигурация, питание, инструментальная цепочка и выводы.
Для нового проекта необходимо отдельно проверить актуальный lifecycle каждого семейства. Наличие старой CPLD в каталоге может быть полезно для ремонта, но не является основанием рекомендовать её для многолетней новой серии.
Типовые ошибки
- переносить программный алгоритм в HDL без переработки под параллелизм;
- проверять только функциональную симуляцию и игнорировать timing analysis;
- не описывать crossing между clock domains;
- выбирать корпус до pin planning;
- забывать состояние выходов во время конфигурации;
- оценивать мощность по одному числу из datasheet;
- закладывать платное IP, не проверив лицензию серийного использования;
- считать FPGA обязательной там, где задачу решает таймер и DMA MCU.
Чек-лист перед выбором
- построены временные диаграммы и указан допустимый джиттер;
- выделены функции, требующие истинного параллелизма;
- оценены логика, RAM, DSP, PLL, SERDES и I/O banks;
- выполнен предварительный pinout и план питания;
- определены конфигурационная память, безопасный старт и rollback;
- подготовлены testbench, CDC- и timing-проверки;
- подтверждены лицензии IDE/IP и воспроизводимая сборка;
- сравнение с MCU выполнено по полной стоимости разработки.
Источники для технической проверки
Параметры и ограничения сверяйте с актуальной документацией производителя для полного артикула и нужного исполнения.
Следующий шаг
Проверьте артикулы и количество до отправки заявки
Загрузите спецификацию в BOM-сервис или пришлите полный код производителя менеджеру. Если точное совпадение не доказано, позиция останется на ручной проверке.