Добрый день! В этой статье я расскажу, как наши заказчики используют ПЛИС в полунатурных стендах и стендовых испытаниях.
В центре инженерных технологий и моделирования «Экспонента» уже много лет мы занимаемся продвижением модельно-ориентированного проектирования в России. Поэтому наш опыт сконцентрирован вокруг инструментов модельно-ориентированного проектирования — то есть различных сред моделирования и симуляции — и применения их в инженерных разработках.
Эта статья написана совместно с нашими хорошими партнерами — компанией «РИТМ». Компания занимается разработкой полунатурных стендов и комплексов полунатурного моделирования «РИТМ» (КПМ «РИТМ»), которые используются нашими заказчиками.
КПМ «РИТМ» представляет собой программно-аппаратное решение для тестирования в реальном времени. Спектр его применений широкий: от быстрого прототипирования алгоритмов управления до полунатурного моделирования объекта управления (Hardware-in-the-Loop или HIL тестирование). РИТМ применяется нашими заказчиками в различных инженерных областях: от авиастроения и ВПК до автомобилестроения и электроэнергетики.
КПМ «РИТМ» поставляется настроенным «под ключ» под задачи проекта или стенда, и оснащен всеми необходимыми модулями ввода-вывода (аналоговыми, цифровыми, специализированными интерфейсами и протоколами). Пользователи могут быстро и бесшовно запускать свои модели в реальном времени (содержащие алгоритмы или модели объекта управления) и подключать их к реальным устройствам (например, блоку управления или исполнительным механизмам) через модули ввода-вывода.
Наши заказчики успешно используют этот подход уже многие годы, но в некоторых узких задачах сталкиваются со следующими проблемами:
Необходимо существенно сократить шаг расчета алгоритма;
Не хватает вычислительных ресурсов для решения задачи в реальном времени на процессоре;
Требуется подключить к алгоритму высокоскоростные цифровые, аналоговые или другие интерфейсы;
Требуется поддержать заказные интерфейсы или протоколы обмена.
Если вы тоже сталкиваетесь с такими проблемами, то добро пожаловать под кат — даже если вы раньше никогда не слышали о модельно-ориентированном проектировании или ПЛИС.
Я подробнее опишу проблемы, с которыми встречаются наши заказчики.
Проблема: необходимо существенно сократить шаг расчета алгоритма.
Обычно модели запускаются на центральном процессоре КПМ «РИТМ». Этого вполне достаточно для очень большого числа применений. Например, многие автомобильные модели работают с шагом расчета от сотен микросекунд до единиц миллисекунд. В авиации модели могут работать с шагом расчета от единиц до десятков миллисекунд. Но в некоторых случаях, например, чтобы сымитировать быстрый отклик какого-то датчика или просимулировать высокочастотный процесс в силовой электронике, нужно существенно уменьшить шаг расчета модели. Скажем, может потребоваться отклик порядка единиц или десятков микросекунд. Даже если сами вычисления с запасом укладываются в этот шаг расчета (что является совершенной необходимостью для системы реального времени), то сама операционная система реального времени (ОСРВ) требует ресурсов для своей работы: работа планировщика, управление ресурсами, реакция на прерывания от модулей ввода-вывода и тому подобное. И накладные расходы ОСРВ вполне могут стать сравнимы с тем временем, которое занимают непосредственно «полезные» вычисления в модели. Может произойти потеря детерминизма выполнения в реальном времени. Тем не менее, отклик в районе единиц микросекунд и даже десятков наносекунд надо как-то обеспечить.
Проблема: не хватает вычислительных ресурсов для решения задачи в реальном времени на процессоре.
Эта проблема сродни предыдущей проблеме, но здесь мы упираемся не столько в сам шаг расчета, сколько во время выполнения одного шага расчета. Если модель содержит вычислительно сложные алгоритмы, например, алгоритмы обработки видео или сложные акаузальные физические модели, обработку аудио, фильтры и тому подобное, то времени центрального процессора может не хватать для вычисления одного шага расчета за отведенное время. Тем не менее, эти алгоритмы как-то надо запускать в реальном времени.
Проблема: требуется подключить к алгоритму высокоскоростные цифровые, аналоговые или другие интерфейсы.
Зачастую сама модель может быть не слишком сложной, например, содержать простую логику формирования тестовых воздействий на некоторое испытуемое устройство и анализ его отклика. Сам алгоритм работает на процессоре и вас устраивает, как он работает. Но вам нужно подключить к этому алгоритму различные интерфейсы: цифровые, аналоговые, оптические. Но использовать для этого стандартный модуль ввода-вывода не хотелось бы, потому что он имеет слишком фиксированный, негибкий функционал для решаемой задачи. Например, нужно поддержать протокол FC-AE-ASM через оптоволокно с кастомным протоколом информационного взаимодействия поверх него.
Проблема: требуется поддержать заказные интерфейсы или протоколы обмена.
В нашей практике очень часто мы сталкиваемся с тем, что на стенде нужно поддержать специализированные интерфейсы и протоколы обмена. Например, это может быть UART на скорости 5 Мбод, кодирующий состояния силовых ключей и ШИМ для управления электроприводом. Реализовать это на стандартных платах ввода-вывода всегда проблематично.
Решение
Обозначив таким образом проблемы, давайте поговорим о том, как мы используем для их решения КПМ «РИТМ» вместе с модулями ввода-вывода на базе ПЛИС.
Использование ПЛИС в стендах не является какой-то новой идеей или технологией. Многие компании по всему миру успешно используют ПЛИС как раз для решения упомянутых проблем.
Если убрать варианты «самодельных» стендов, то среди коммерческих предложений здесь есть решения от компаний NI, Opal-RT, Speedgoat, dSpace и других. Все они имеют разные степени удобства и интегрированности и разные поддерживаемые среды моделирования. По понятным причинам сейчас мы максимально сфокусированы на решениях, которые предлагает РИТМ.
КПМ «РИТМ»: модули на базе ПЛИС
В РИТМе доступны специализированные модули ввода-вывода, содержащие в себе ПЛИС. Это позволяет реализовывать любые интерфейсы за счет субмодулей (специальных аппаратных расширений): цифровые, аналоговые, оптические.
Например, вам требуется специализированный ШИМ. Вы можете реализовать его самостоятельно в виде IP-ядра или модели, или мы можем реализовать его для вас.
Это дает большую гибкость, потому что прошивку ПЛИС можно переконфигурировать под любую задачу или стенд. Это дает также большую скорость работы, потому что вы упираетесь только в ограничения схемотехники субмодулей.
На ПЛИС также есть возможность запускать ваши модели. Например, после переноса высокоскоростной предобработки данных на ПЛИС вы можете осуществлять последующую обработку на центральном процессоре. Между ПЛИС и процессором организуется высокоскоростной двусторонний обмен через PCIe и DMA.
Примеров и способов использования этого подхода может быть множество:
Алгоритмы обработки видео на ПЛИС
Модели силовой электроники (переключения) на ПЛИС
Запуск тяжелых алгоритмов с большей скоростью
Освобождение процессора под другие задачи
Наши заказчики (зачастую совсем не программисты, а инженеры и математики) особенно часто используют эту технологию с автоматической генерацией HDL кода из моделей.
Как это работает?
Эта технология позволяет переносить алгоритмы на ПЛИС и запускать их совместно с алгоритмами на CPU с подключением к внешним интерфейсам РИТМ.
На этом рисунке схематично изображены основные составляющие системы:
С точки зрения аппаратуры
В комплексе полунатурного моделирования РИТМ установлен модуль ввода-вывода, содержащий кристалл ПЛИС. Этот модуль ввода-вывода также содержит субмодуль (мезонинная плата с разъемом FMC), предоставляющий внешние интерфейсы (цифровые, аналоговые, оптические и другие). Эти внешние интерфейсы доступны напрямую из ПЛИС. Кроме того, ПЛИС и CPU могут обмениваться друг с другом данными через шину PCI Express.
С точки зрения пользователя
Пользователь разделяет свою модель на две части. Одна часть работает на ПЛИС (т.н. DUT – Device Under Test), а другая – работает на CPU (т.н. программная модель – SW). Пользователь назначает интерфейсы DUT: выбирает внешние интерфейсы субмодуля (FMC) и интерфейсы между DUT и SW (например, общение через DMA или регистры). При помощи специализированного мастера настройки модель DUT реализуется в ПЛИС, а программная модель – в CPU.
С точки зрения программного обеспечения
Из модели DUT автоматически генерируется HDL код и вся необходимая обвязка для реализации на ПЛИС. Автоматически создается и синтезируется проект в среде разработки для ПЛИС. Из программной модели автоматически генерируется C код и собирается под центральный процессор CPU. Программирование ПЛИС осуществляется при загрузке программной модели в РИТМе. От пользователя не требуется написания кода C или HDL ни на одном из этапов.
Демонстрация
Давайте немного подробнее углубимся в детали и покажем, как это выглядит на практике.
В качестве примера рассмотрим программно-аппаратную реализацию сигнала типа «меандр». Логика формирования меандра будет реализована на ПЛИС, а период меандра будет задаваться в программной части. Это позволит нам выдавать меандр гораздо большей частоты, чем если бы мы задавали его программно, только используя центральный процессор.
Вот так выглядит пример модели:
Модель состоит из двух частей. Первая часть – это подсистема DUT_ritmdemo_hdlwa_ctl. Она содержит алгоритмы, которые будут реализованы на ПЛИС. Эта часть модели называется DUT (Device Under Test).
Вторая часть – это все, кроме этой подсистемы. Она содержит алгоритмы, которые будут реализованы на процессоре. Эта часть модели называется программной моделью или SW.
Используя блоки period, manual_override и manual_value в программной модели, мы будем управлять меандром из процессора.
Внутри DUT находится логика изменения периода меандра в ПЛИС:
Входной сигнал period_PCI будет приходить в ПЛИС со стороны процессора по PCIe, а выходной сигнал DO будет подключен к FMC субмодулю и внешним цифровым выходам.
До реализации модели в железе ее требуется проверить при помощи симуляции. Можно запустить симуляцию модели, поменять значение периода меандра (заданного в тактах ПЛИС) и увидеть на графиках значения цифрового выхода, на который поступает меандр. Для отладки на графики выводится значения половины периода меандра и внутреннего счетчика:
Таким образом, мы разбили модель на две части: модель для ПЛИС и модель для CPU. При этом вся модель симулируется как единое целое. Пользователь описывает алгоритмы для запуска на ПЛИС. А интерфейсы подсистемы соответствуют физическим интерфейсам на ПЛИС и интерфейсам между ПЛИС и CPU.
Затем из модели автоматически генерируется HDL. Мастер настройки проводит пользователя по шагам и позволяет выбрать модуль ввода-вывода, настроить параметры генерации HDL кода и настроить специфичные параметры модуля ввода-вывода:
Затем осуществляется настройка интерфейсов ПЛИС, где пользователь задает интерфейсы между ПЛИС и FMC (внешние интерфейсы) и интерфейсы между ПЛИС и CPU. Все это делается через графический интерфейс:
Прошивка для ПЛИС генерируется полностью автоматически через интеграцию со средой разработки для ПЛИС. Программная модель для загрузки на CPU генерируется полностью автоматически. ПЛИС автоматически программируется при загрузке программной модели на КПМ «РИТМ»:
Итог рабочего процесса
В этой статье мы рассказали про создание и запуск алгоритмов на ПЛИС и CPU, включая настройку интерфейсов между ПЛИС и CPU и настройку внешних интерфейсов ПЛИС.
Все это – без написания единой строчки кода!
В заключение приведу пример системы управления понижающим преобразователем напряжения (buck converter) с двигателем постоянного тока в качестве нагрузки.
Общий вид модели:
Система управления, работающая на CPU (шаг расчета 5 мс):
Модель преобразователя и двигателя постоянного тока, работающая на ПЛИС (шаг расчета 1 мкс):
Результаты
-
Высокочастотные алгоритмы работают на ПЛИС в рамках стенда:
Обработка сигналов
Компьютерное зрение
Физическое моделирование
Заказные цифровые, аналоговые, оптические интерфейсы и протоколы подключены и работают на стенде;
Стенд остается гибким и настраиваемым, причем руками алгоритмистов, инженеров и математиков (не программистов).
Узнать подробнее
Для получения дополнительной информации обратитесь к следующим разделам сайтов Экспоненты и РИТМа: