Найти в Дзене
Loosegrasp

ПЛИС с розовым оттенком

Отладочные платы, содержащие программируемые логические интегральные схемы — ПЛИС, или FPGA (Field-Programmable Gate Array), на сегодняшний день известны, пожалуй, не меньше, чем платы Arduino лет десять тому назад. Семейство последних, кстати, в 2018 году пополнилось платой Vidor 4000 с FPGA-чипом Cyclone 10 компании Altera (в составе Intel). Растущая популярность FPGA обусловила появление платформ и инструментов, позволяющих конфигурировать ПЛИС без необходимости использовать для этого проприетарное ПО, вроде Vivado или Quartus. К таким платформам относится проект с открытым исходным кодом PYNQ (pynq.io) компании AMD, ориентированный на упрощение использования адаптивных вычислительных платформ на основе ПЛИС. Опираясь на возможности языка Python, разработчики PYNQ могут использовать преимущества как программируемой логики (Programmable Logic, PL), так и встроенных микропроцессоров (Processing System, PS) для создания мощных и интересных электронных систем. Так, преимущество PL по ср

Отладочные платы, содержащие программируемые логические интегральные схемы — ПЛИС, или FPGA (Field-Programmable Gate Array), на сегодняшний день известны, пожалуй, не меньше, чем платы Arduino лет десять тому назад. Семейство последних, кстати, в 2018 году пополнилось платой Vidor 4000 с FPGA-чипом Cyclone 10 компании Altera (в составе Intel).

Растущая популярность FPGA обусловила появление платформ и инструментов, позволяющих конфигурировать ПЛИС без необходимости использовать для этого проприетарное ПО, вроде Vivado или Quartus. К таким платформам относится проект с открытым исходным кодом PYNQ (pynq.io) компании AMD, ориентированный на упрощение использования адаптивных вычислительных платформ на основе ПЛИС.

Опираясь на возможности языка Python, разработчики PYNQ могут использовать преимущества как программируемой логики (Programmable Logic, PL), так и встроенных микропроцессоров (Processing System, PS) для создания мощных и интересных электронных систем. Так, преимущество PL по сравнению с процессорными системами заключается в том, что логика приложения реализуется непосредственно аппаратными схемами PL, а не выполняется поверх ОС, драйверов и пр. В отличие от процессоров, ПЛИС самой своей природой реализует параллелизм, и различным операциям обработки данных не приходится конкурировать за аппаратные ресурсы.

На сайте проекта, в частности, сказано , что «PYNQ поддерживает FPGA-платы с чипами Zynq, Zynq UltraScale+, Zynq RFSoC, платы ускорителей Alveo и AWS-F1 для создания высокопроизводительных приложений с параллельным аппаратным выполнением, обработкой видео с высокой частотой кадров, применением алгоритмов с аппаратным ускорением, обработкой сигналов в реальном времени, вводом-выводом с высокой пропускной способностью».

Фактически, PYNQ представляет собой кастомизированный образ ОС Linux, записываемый на карту памяти microSD, с которой осуществляется загрузка платы с поддержкой PYNQ. После загрузки такую плату можно легко запрограммировать в среде Jupyter Notebook, используя аппаратные библиотеки, или оверлеи, ускоряющие работу ПО.

Недорогая плата начального уровня PYNQ-Z2 оснащена чипом ZYNQ XC7Z020 компании XILINX (в составе AMD), представляющим собой «систему-на-кристалле», или system-on-chip (SoC), на базе двухъядерного процессора ARM Cortex-A9 (то, что выше именуется Processing System, PS), интегрированного со структурой FPGA (программируемой логикой, Programmable Logic, PL).

Оверлеи, или аппаратные библиотеки представляют собой настраиваемые конфигурации FPGA, расширяющие пользовательское приложение возможностями параллельной обработки, реализуемыми непосредственно «в железе». Оверлеи можно использовать для ускорения работы ПО или в качестве заказной аппаратной платформы конкретного приложения.

Например, обработка изображений является типичным приложением, где технология FPGA способна обеспечить значительное ускорение. Программист может рассматривать оверлей как аналог библиотеки ПО, содержащий функции обработки изображений (например, определение краев, пороговых значений и т. д.), «зашитые» в FPGA. Оверлеи динамически загружаются в ПЛИС по мере необходимости, как и программная библиотека. Так, в данном примере отдельные функции обработки изображений могут быть реализованы в разных оверлеях и вызваться из них посредством API Python.

Итак, фреймворк PYNQ предоставляет API, позволяющий управлять оверлеями в PL из среды Python, запущенной в PS. Конфигурирование же «фабрики» ПЛИС — это специализированная задача, требующая знаний и опыта в области аппаратного проектирования. Поэтому оверлеи PYNQ создаются разработчиками оборудования и «обертываются» посредством Python API. Благодаря этому разработчики ПО могут использовать интерфейс Python для управления специализированными аппаратными оверлеями, не создавая их самостоятельно. Это аналогично программной библиотеке, написанной опытным программистом, которую затем используют другие.

По умолчанию записываемый на microSD-карту и загружаемый в SoC образ PYNQ включает в себя так называемый базовый оверлей — Base. Его задача — обеспечить доступность имеющихся на плате периферийных устройств «из коробки». Поскольку базовый оверлей уже включает в себя блоки интеллектуальной собственности (Intellectual Property, IP) для всех периферийных устройств платы, он может служить в качестве прототипа для создания новых настраиваемых оверлеев.

Таким образом, главное достоинство PYNQ заключается в возможности формирования библиотек пользовательских IP-ядер для FPGA и последующего запуска этих ядер с помощью Jupyter Notebook на платах SoC. Это делает внедрение решений на базе ПЛИС значительно более простым и доступным. Вокруг PYNQ уже образовалась довольно обширная экосистема, включающая множество проектов, нацеленных на обучение студентов, научные исследования в области ИИ, промышленных приложений, в числе которых разработка криптографических устройств, систем управления двигателями и робототехнических платформ.

Продолжение следует...