ПЛИС или сигнальный процессор — на чём строить обработку сигналов
Программируемая логика считает параллельно, сигнальный процессор — последовательно по программе. Разбираем, по каким параметрам считается выбор, как оценить ресурсы кристалла и что берут на этапе разработки.
Задача обработки сигнала — фильтрация, преобразование Фурье, демодуляция, свёртка изображения — решается двумя разными способами. Программируемая логика выполняет операции параллельно: каждый умножитель и сумматор существует в кристалле физически, и на каждом такте они работают одновременно. Сигнальный процессор выполняет ту же математику последовательно, но на высокой тактовой частоте и по готовой программе.
Выбор между двумя подходами определяется не «мощностью», а требуемой полосой сигнала, допустимой задержкой, числом каналов и тем, насколько алгоритм будет меняться после запуска. Ниже — по каким параметрам считается решение, где проходит граница применения и что берётся под каждый из вариантов. Кристаллы и платы под них собраны в разделе FPGA, готовые комплекты для отладки — в разделе платы разработки.
Чем различаются два подхода
| Признак | Программируемая логика | Сигнальный процессор |
|---|---|---|
| Характер вычислений | Параллельный, конвейер на каждый канал | Последовательный, по такту программы |
| Полоса обрабатываемого сигнала | Десятки и сотни мегагерц на канал | Единицы мегагерц, дальше упирается в частоту ядра |
| Задержка от входа до результата | Фиксированная, считается в тактах | Переменная, зависит от загрузки ядра и прерываний |
| Число независимых каналов | Ограничено ресурсами кристалла | Ограничено производительностью одного ядра |
| Изменение алгоритма после запуска | Пересборка проекта и повторная проверка тайминга | Правка и перекомпиляция программы |
| Трудоёмкость разработки | Выше: описание на языке аппаратуры, анализ тайминга | Ниже: готовые библиотеки обработки |
| Потребление на единицу работы | Ниже при больших потоках данных | Ниже при малых потоках и редких вычислениях |
| Интерфейсы высокой скорости | Встроенные трансиверы, PCIe, Ethernet | Через внешние контроллеры |
Когда обработку отдают программируемой логике
- Поток данных не влезает в одно ядро. Приём с быстрого аналого-цифрового преобразователя, радиолокация, широкополосная связь: выборки приходят непрерывно, и их нельзя буферизовать без потери.
- Задержка нормирована. Управление с обратной связью, защита силового преобразователя, синхронизация по времени — результат нужен через известное число тактов, а не «в среднем быстро».
- Каналов много и они одинаковые. Многоканальная гидроакустика, матрица датчиков, многоканальный приёмник: один и тот же фильтр размножается по кристаллу.
- Предобработка перед процессором. Логика снимает с процессора десятикратное прореживание, фильтрацию и упаковку, а процессор получает уже сокращённый поток. Такие связки удобно собирать на платформах на базе SoC, где процессорное ядро и логика лежат в одном кристалле.
- Требуется прямой канал в сервер. Встроенные трансиверы и PCIe позволяют отдавать поток без промежуточного контроллера — такие сборки делаются на платах расширения.
Когда достаточно сигнального процессора или процессорного ядра
- Полоса сигнала — единицы килогерц или мегагерц: звук, вибрация, температура, датчики давления.
- Алгоритм будет меняться и уточняться уже в эксплуатации, а сроки разработки ограничены.
- Нужны готовые библиотеки преобразований и математики с плавающей точкой.
- Изделие серийное и недорогое, и стоимость кристалла важнее запаса по производительности.
- Обработка идёт пакетами по запросу, а не непрерывным потоком. В таких задачах часто хватает одноплатного компьютера с внешним преобразователем.
По каким параметрам считается ресурс кристалла
- Число аппаратных умножителей. Фильтр с конечной импульсной характеристикой требует по умножителю на отвод, если считать за один такт. Для 64-отводного фильтра на четыре канала нужно 256 умножителей либо конвейер с разделением во времени.
- Объём блочной памяти. В ней лежат линии задержки, буферы кадров и таблицы коэффициентов. Объём считается по числу выборок, разрядности и числу каналов.
- Логические ячейки. Уходят на управление, счётчики, интерфейсы и упаковку данных; закладывается запас не менее трети от расчёта.
- Тактовая частота и тайминг. Сплошной конвейер без регистров не проходит анализ тайминга, и глубину конвейера закладывают заранее.
- Количество и тип трансиверов. Определяет, какие внешние интерфейсы получится вывести без дополнительных микросхем.
Расчёт делается до выбора кристалла: по ресурсам выбирается семейство, затем подбирается конкретная позиция в разделе FPGA, а под неё — отладочный комплект.
Что берут на этапе разработки
- Отладочная плата под нужное семейство. На ней проверяется расчёт ресурсов и реальная тактовая частота проекта. Подборка — в разделе платы разработки.
- Модуль ввода сигнала. Аналого-цифровой преобразователь на плате расширения с нужной разрядностью и частотой дискретизации.
- Программатор и кабель загрузки. Без них прошивка в кристалл не попадёт; позиции собраны в разделе кабели USB Blaster.
- Плата расширения под интерфейс. Вывод на оптику, Ethernet или PCIe — раздел платы расширения.
- Память нужного типа и объёма. Если алгоритм хранит кадры или длинные буферы, внешняя память подбирается вместе с кристаллом.
Для задач машинного зрения и управления приводами к комплекту добавляются узлы из раздела робототехника, а готовые связки «кристалл плюс периферия плюс корпус» собраны в разделе комплексные решения.
Типичные ошибки при выборе
- Ресурсы считают по числу логических ячеек и не смотрят на умножители. Кристалл с большим объёмом логики может не иметь достаточного числа аппаратных умножителей, и фильтр не встанет.
- Забывают про задержку в интерфейсе. Логика считает за микросекунды, а передача результата через медленный интерфейс добавляет миллисекунды.
- Берут кристалл без запаса. При заполнении выше 80 % анализ тайминга перестаёт сходиться, и частоту приходится снижать.
- Выбирают семейство под отладочную плату, а не под изделие. В серии нужного корпуса или температурного исполнения может не оказаться.
- Планируют одно ядро процессора на несколько каналов. При росте числа каналов производительность падает не пропорционально, а резко — из-за промахов кэша.
Частые вопросы
Можно ли сначала сделать всё на процессоре, а потом перенести в логику? Можно, и так часто и поступают: алгоритм отлаживают в программе, затем переносят в аппаратуру наиболее тяжёлые части. Перенос требует переписывания, а не перекомпиляции, поэтому его закладывают в план заранее.
Что даёт платформа, где процессор и логика в одном кристалле? Она снимает необходимость во внешнем интерфейсе между ними: обмен идёт по внутренней шине. Такие кристаллы подходят, когда часть задачи требует параллельности, а часть — удобства программирования. Позиции собраны в разделе платформы на базе SoC.
Насколько сложнее разработка на программируемой логике? Трудоёмкость выше в несколько раз при той же функциональности: описывается не последовательность действий, а схема, и результат проверяется анализом тайминга. Экономия появляется там, где процессорный вариант просто не укладывается в требования.
Нужна ли внешняя память для обработки сигналов? Если алгоритм работает в пределах скользящего окна, хватает блочной памяти кристалла. Кадровые буферы, длинные корреляции и накопление статистики требуют внешней микросхемы, которую подбирают вместе с кристаллом.
Что прислать для подбора? Частоту дискретизации и разрядность входного сигнала, число каналов, перечень операций над сигналом, допустимую задержку, требуемые интерфейсы вывода, диапазон рабочих температур и планируемый тираж.
Что мы делаем
Считаем требуемые ресурсы по вашему алгоритму, подбираем кристалл с запасом по умножителям и памяти, комплектуем отладочный набор вместе с платой ввода сигнала и программатором, проверяем наличие выбранной позиции в нужном корпусе и температурном исполнении под серию. Позиции для проекта — в разделах FPGA, платы разработки и платы расширения.
Пришлите параметры сигнала и перечень операций на server@tkasiatorg.ru — посчитаем ресурсы, предложим кристалл и отладочный комплект и назовём сроки поставки.
