Вместо компиляции кода, синтез кода. Вместо "виртуального" выполнения кода, будет создаваться код в железе. Каждая фирма может создать непосредственно под свои нужды свой высокопроизводительный процессор. Дорого? - очень, но быстро окупится. Все больше фирм, работающих в сфере финансов, биржи, фирм, связанных с безопасностью и обработкой данных в режиме реального времени переходят на работу непосредственно с FPGA. Соревнования идут сейчас уже не на секунды, а за пикосекунды и не на мегагерцы, а на гигагерцы, и выиграть эти соревнования вам поможет FPGA. Мы пригласили эксперта в сфере разработок встраиваемых систем и FPGA – инженера электронщика Петра Сафира. Петр Сафир работает в исследовательских лабораториях физики еврейского университета в Иерусалиме. Он расскажет, что такое FPGA, где целесообразно его использовать и поговорим о стоимости разработок на основе FPGA.

Что такое FPGA?

FPGA (Field-Programmable Gate Array), — принадлежит к классу устройств, определяемых как программируемая логика, то есть вы можете настроить FPGA так, что она будет представлять почти любую цифровую схему. При этом создается цифровая микросхема с набором всех атрибутов, присущих в любой микросхеме, таких как память, триггеры, мультиплексоры. Все это происходит без пайки, вы просто загружаете вашу конфигурацию в FPGA посредством написания кода. На этих реконфигурируемых устройствах на основе программируемых логических интегральных схем можете изменять конфигурацию множество раз так, как требует ваш проект. Некоторые семейства FPGA имеют на одном кристалле вместе с логикой встроенные ARM процессоры. Эта технология называется SoC (System on a Chip), и это позволяет использовать в общем проекте языки программирования C/C++, что иногда существенно удешевляет и убыстряет реализацию проекта. В среду разработки FPGA всех фирм встроен графический редактор создания схем, то есть вы просто будете рисовать свою схему, а среда разработки сама переведет все в код.

Чем отличается FPGA от контролера или любой другой цифровой микросхемы?

Самое главное отличие FPGA от микроконтроллера или любой другой цифровой микросхемы, в том, что FPGA это обычная матрица, где логика устройства не определена производителем на заводе изготовления, а создается инженером под определенные цели проекта. Программирование происходит посредством обычного PC и языков описания аппаратуры таких как VHDL или VERILOG. Конечный результат получается в виде принципиальной электрической схемы. Да, иногда стоит нарисовать схему, потому что проекты бывают очень сложными и громоздкими, но, в конце концов, это все сведется к описанию вашей схемы в программном коде. Очень важное свойство FPGA это параллельная обработка данных, то есть каждый многоканальный блок созданный в FPGA может работать независимо от другого блока. При выборе микроконтроллеров мы руководствуемся конкретными задачами под определенный проект, такими как количество GPIO, объем RAM и ROM, частота процессора, встроенная аппаратная поддержка протоколов I2С и SPI и многое другое. Когда речь заходит о FPGA одним из главных критериев выбора станет количество логических программируемых блоков, которых должно хватить для нашей задачи. На основе этого мы сами сможем создать абсолютно все что нам потребуется. Кроме того, FPGA может содержать готовые блоки, которые мы можем использовать для нашей реализации, например, такие как DSP (блок обработки сигналов). Естественно для многих проектов использование FPGA просто не целесообразно. Например, для контроля за домашней стоянкой нет никакого смысла использовать FPGA, для данных целей подойдет и обычный микроконтроллер.

В каких проектах вы используете FPGA?

В лабораториях физики нашего университета во многих проектах, где требуется высокочастотная обработка сигнала я использую FPGA. Например, в сенсорах при детекции фотона, чтобы получать данные в реальном времени и сразу их обрабатывать, я написал программу, которая работает на FPGA.  Программа позволяет на гигантских скоростях отслеживать данные сразу с нескольких фотонных сенсоров, анализировать полученные данные и визуализировать полученную информацию. Такого типа программа очень облегчает анализ полученных данных в ходе эксперимента. Другой пример, я разработал множество программ для обработки полученных сигналов в реальном времени с различных типов датчиков, созданных только для исследовательской лаборатории квантовой физики, также мною были созданы высокочастотные генераторы сигналов с изменяющимися параметрами для различных исследовательских проектов.

В каких отраслях используют FPGA?

Разработка прототипа. Одно из важнейших применений FPGA это создание прототипа микросхем для дальнейшего серийного производства. Многие фирмы на основе FPGA создают прототип своего товара, производят все тесты и делают доработки, после чего уже отправляют в производство.

Измерительное оборудование. FPGA используют в измерительном оборудовании где требуется высокочастотная обработка сигналов. Например, в генераторах сигнала, осциллографах, логических и спектральных анализаторах.

Видео и обработка изображения. Когда мы обрабатываем видео в реальном времени очень важна скорость обработки, и поэтому если мы производим предварительную обработку видео аппаратно, а не с помощью программы, это значительно увеличивает производительность камеры. Таким образом мы сможем обработать видео, применить различные фильтры или преобразовать из одного цветового пространства в другой, еще до того, как мы сохраним наше видео. В этом случае мы существенно снижаем нагрузку на наш центральный процессор, позволив предать по трудоемкой обработке видео нашему FPGA.

Нейронные сети на FPGA. Обработка гигантских данных в нейронных сетях на обычных процессорах неэффективна, но, если использовать FPGA с его параллельным вычислением значительно повысится производительность любой нейронной сети. Можно задать для разных слоев нейронной сети свои независимые вычисления в блоках FPGA и такое исполнение поднимает скорость обработки данных на порядок быстрее чем на обычном процессоре.

Встраиваемая система для контроля. FPGA используют как часть процессора для встраиваемых систем различного производственного оборудования. Например, для контроля за роботами на конвейере, где присутствуют камеры, измерительные приборы и роботизированные системы. Один процессор в состоянии отслеживать и контролировать множество процессов вне зависимости одного от другого.

Беспилотная авиация. Здесь используется не только аппаратная часть, но и программная SoC. При использовании различных сенсоров, таких как гироскоп, или контроль температуры за двигателем, скорость и многие другие входящие данные с датчиков, используется программный процессор, но в случае обработки видео, контроль за GPS, автопилот и связь с наземными станциями на себя берет аппаратная часть FPGA.

Облачные вычисления на FPGA. Многие лаборатории при университетах или небольшие фирмы не могут разрабатывать свой код на FPGA из-за высокой стоимости разработки кода или других причин, они предпочитают брать в аренду серверы на которых установлены FPGA и покупать готовые решения. Ускорители FPGA для обработки big data яркий пример использования облачного вычисления на FPGA.

Подведя итоги можем сказать, что FPGA очень гибкая и настраиваемая почти под любой проект технология. Инженер разработчик легко может изменить или добавить блоки в код для улучшения проекта. При использовании технологии SoC открываются широкие возможности аппаратно-программной архитектуры, что существенно повлияет на временные затраты выполнения проекта. На одной платформе FPGA можно создать несколько сопроцессоров, и это уменьшит нагрузку там, где нужны большие вычислительные ресурсы. Обработка HD видео в реальном времени в промышленных приложениях требует очень высокой производительности и FPGA прекрасно справляется с этим. К сожалению, высокая стоимость разработки FPGA не способствует повсеместному внедрению этой технологии.

Дата публикации: 17.01.2023