Введение в ПЛИС: Содержание курса
Введение в ПЛИС
Базовый курс
Андрей Жадан______________________Ростов-на-Дону______________________2024
Предисловие к циклу статей
Цикл статей посвящен изучению базовых принципов работы с ПЛИС. Данная статья включает в себя оглавление с ссылками на последующие публикации и введение курса. Последующие статьи будут раскрывать отдельные темы курса, возможно, также появятся вспомогательные статьи по разбору проектных заданий и сборник материалов профессионального уровня.
Разработка курса является частной инициативой, курс может содержать неточности, ошибки, однобокое освещение явлений и понятий, а его публикация может затянуться на долгое время, если вообще когда-то будет закончена. Обо всем, что можно улучшить или исправить, вы можете сообщить в комментариях, по возможности постараюсь это учесть.
Оглавление
Что такое ПЛИС.
Определение.
История развития ПЛИС.
Типы ПЛИС.
Сравнение ПЛИС с другими интегральными схемами.
Работа с ПЛИС.
Производители ПЛИС.
Задание 1.
Языки описания аппаратуры.
HDL.
История развития.
Модульный принцип организации проектов.
Комментарии.
Примеры описания модуля.
Типы данных.
Состояния линий и форматы чисел.
parameter и localparam.
Операции в SystemVerilog.
always-блок.
Задание 2.
Процесс сборки и системы симуляции.
Quartus и Vivado.
Процесс сборки проекта.
Препроцессор.
Анализ исходного кода.
Синтез проекта.
Implementation.
Знакомство с процессом симуляции.
Виды Симуляции.
Testbench.
Системные функции.
Задание 3.
Подготовка проекта к портированию на плату.
Тип ПЛИС.
Серии и поколения.
Внутреннее устройство.
Примитивы.
Атрибуты.
Сопоставление пинов.
Дифференциальные сигналы.
Задание 4.
Конфигурация ПЛИС. Временные параметры.
Файл конфигурации ПЛИС.
JTAG.
Подключение к ПЛИС.
Логические анализаторы.
Анализ временных параметров.
Констрейнты.
Задание 5.
Система распределения тактовых сигналов. IP-блоки.
Дерево тактирования. Глобальные и локальные клоки.
Сигналы сброса.
Клоковые буферы.
IP-блоки.
PLL и MMCM.
Задание 6.
Внутрисистемные интерфейсы (Avalon/AXI). Потоковые интерфейсы (Streaming).
AXI Stream.
AvalonST.
Пакетная передача данных.
Модули FIFO. Одноклоковые и двухклоковые.
Переход между тактовыми доменами. Код Грея.
Метастабильность.
Задание 7.
Внутрисистемные интерфейсы (Avalon/AXI). Адресные интерфейсы (Memory mapped).
Взаимодействие Master-Slave.
Контрольно-статусный регистр (CSR).
Типы управляющих воздействий.
Avalon-MM.
AXI-Lite.
AXI3 и AXI4.
Режим Burst.
Задание 8.
Периферийные последовательные интерфейсы. UART, SPI, I2C, CAN.
Начала цифровой обработки на ПЛИС.
Съем данных с АЦП.
Теорема Котельникова. Зоны Найквиста. Частота дискретизации.
Квадратурное понижающее преобразование.
Числа с плавающей точкой. IEEE754.
Цифровая фильтрация. КИХ-фильтр.
Блоки generate.
Функции и таски.
Задание 10.
Знакомство с системами интеграции. Platform Designer / Qsys — IP Integrator.
Platform Designer / Qsys.
IP Integrator.
Обзор встроенных IP-ядер.
Источник тактового сигнала.
Ввод/вывод данных. GPIO.
Интерконнект.
Добавление собственных IP-ядер.
Задание 11.
Знакомство с софт-процессорными системами. Microblaze и Nios.
Продолжение работы с процессорными системами. Знакомство с SDK и процессом написания встроенного ПО.
Nios II Software build tools for eclipse.
Xilinx SDK.
Vitis.
BSP.
.elf и конфигурирование системы.
Базовые принципы написания встроенного ПО.
Задание 13.
Элементы памяти DDR.
Прямой доступ к памяти. Знакомство с ядрами DMA.
MSGDMA.
Дескрипторы.
Диспетчер.
Префетчер.
Задание 15.
Высокоскоростные трансиверы. SFP-модули. Интерфейсы SerialLite и Aurora.
Высокоскоростные приемо-передатчики. Принципы ввода-вывода и тактирования.
Аппаратное блоки.
Aurora.
SerialLiteII.
SerialLiteIII.
SFP-модули.
Задание 16.
PCI-e. Драйверы устройств.
Сетевое взаимодействие. Ethernet. Уровни модели OSI.
Цифровая обработка сигналов. Цифровые фильтры, БПФ.
Системы на кристалле.
Верификация. UVM.
Методические рекомендации.
При подготовке данного пособия я опирался на средний уровень студентов старших курсов бакалавриата и магистратуры физического факультета ЮФУ (начиная с 3 — 4 го курса). Предполагается, что студенты уже знакомы с основами дискретной математики (булева алгебра) и схемотехники. Однако, данные условия не являются категоричными, неизвестные понятия и конструкции могут быть разобраны самостоятельно параллельно с прохождением курса. Поэтому пособие может быть полезно для всех, кто хочет разобраться в теме разработки проектов на ПЛИС.
Курс носит ознакомительный характер, призван дать общее понимание специфики работы с ПЛИС. Он составлен в основном на базе личного опыта автора с использованием различных материалов, но редким прямым цитированием, а также с использованием языковых моделей, в частности ChatGPT. Пособие не является истиной в последней инстанции и может содержать ошибки и неточности. При нахождении таких прошу уведомить меня по адресу z.a.013@rambler.ru. По задумке курс должен состоять из двух частей: «Введение в ПЛИС» и «Разработка на ПЛИС», где первая часть будет знакомить с актуальной тематикой профессии, а вторая будет представлять из себя сборник статей и материалов, которые подробным образом описывают конкретную тему.
Наилучшим, на мой взгляд, способом организации занятий будет организация курса по выбору, который смогут посещать, как студенты разных направлений факультета, так и студенты других факультетов по желанию. Занятия могут, например, осуществляться в виде двух пар (4х академических часов) один раз в две недели с совмещением теоретической подготовки и практических занятий. По ходу курса фокус должен постепенно смещаться с теории на практику. Завершаться курс может выполнением проектного задания. Проектное задание может быть как отдельной задачей, так и являться курсовой работой, выпускной квалификационной работой бакалавра или магистерской диссертацией.
В качестве материальной базы для выполнения проектных заданий буду рассматривать плату AX7A035B от Alinx и набор плат расширения: AN9767(2-канальный ЦАП (14 бит, 125MSPS)), AN9238(2-канальный АЦП (12 бит, 65MSPS)), AN706(8-канальный АЦП (16 бит, 200kSPS)), AN5642(бинокулярная камера), AN430(дисплей). Будем считать, что на группу из 12 человек мы имеем 3 базовых платы AX7A035B и по одной плате расширения. Для дальнейшего изучения систем на кристалле будем использовать плату управления Antminer S9 на базе ZYNQ7010. Также нам потребуется программатор, источник питания и, само собой, ЭВМ с релевантным софтом. Подробнее материальное обеспечение рассмотрим в статье: «Введение в ПЛИС: Материальное обеспечение курса / Хабр».
Введение.
Современный мир невообразим без вычислительной техники. Каждый день мы используем компьютеры и мобильные устройства, чтобы общаться с друзьями, работать, учиться и развлекаться. Но что находится внутри этих устройств? Как они работают? Наверное, многие задавали себе эти вопросы в детстве. У некоторых с возрастом они отошли на второй план. Другие же решили связать свою жизнь с технологиями и сами определяют, каков будет ответ.
На сегодняшний день сфера высоких технологий (условно объединим здесь IT, радио- и микроэлектронику, поскольку в дальнейшем будем говорить о сфере на стыке) развивается с невероятной скоростью. Каждый год появляются новые технологии и области, в которых нужны профессионалы. За время моего обучения в университете я приобрел некоторые знания в области математики и физики, однако, когда вышел на работу, дал знать о себе недостаток практического опыта, поэтому пришлось долго и упорно учиться, прежде чем заниматься чем-то по-настоящему серьезным. Конечно же, это типичная ситуация, и что бы вы не делали при поступлении на первую работу вас ждет процесс обучения и набора опыта. Однако, вполне возможно упростить и ускорить его с помощью введения в процесс обучения студентов практических курсов. В частности, очень востребованными являются курсы программирования, которые открывают дорогу к огромному множеству профессий. Здесь же мы предлагаем вам познакомиться с еще одной областью ИТ-индустрии — разработкой устройств на базе ПЛИС.
Благодаря своей гибкости, ПЛИС очень популярны в мелкосерийном производстве сложных радиоэлектронных систем, при создании универсальных ускорителей, прототипировании различных интегральных схем и во множестве других случаев. Они широко используются во многих областях, начиная от телекоммуникаций и заканчивая авиационной и автомобильной промышленностью. Однако, несмотря на большой спрос на специалистов в области hardware development, наблюдается дефицит кадров. Это открывает уникальные возможности для тех, кто хочет развиваться в сфере разработки на базе ПЛИС.
Рассматривая сферу разработки «железа», нельзя игнорировать аспект материальной выгоды, который для многих является значительным стимулом. Работа в высокотехнологичной индустрии часто ассоциируется с конкурентными и привлекательными уровнями дохода, чаще всего при этом вспоминают такие направления, как веб-разработка, мобильные приложения или искусственный интеллект. Если говорить более конкретно, специалисты в области hardware development, включая разработчиков на ПЛИС, выделяются своей редкостью и уникальностью навыков, что делает их особенно ценными на рынке труда. Как правило, карьера в области разработки на ПЛИС предлагает конкурентный уровень дохода, учитывая сложность и специфику работы. Даже будучи наемным работником можно зарабатывать значительно больше среднего уровня зарплаты по региону. Это не только отражает повышенный спрос на такие навыки, но и подчеркивает важность постоянного обучения и развития в этой быстро меняющейся сфере. Более того, растущий интерес к инновационным технологиям и развитие новых направлений, таких как искусственный интеллект и машинное обучение, продолжают открывать новые горизонты для специалистов в нашей сфере. Важно отметить, что спрос на квалифицированных специалистов в области разработки на ПЛИС остается высоким во многих странах, что делает эту профессию особенно привлекательной для тех, кто стремится к стабильности и профессиональному росту. Кроме того, навыки в этой области открывают широкие возможности для работы в международных компаниях и проектах, что дополнительно увеличивает их ценность на рынке.
Работа с ПЛИС — это не только высокооплачиваемое и востребованное направление, но и увлекательный творческий процесс. Разработка электронных схем на ПЛИС позволяет создавать уникальные, инновационные устройства, которые могут использоваться в различных отраслях. Одним из главных преимуществ работы с ПЛИС является возможность создания устройств, которые могут выполнять разные задачи, в зависимости от потребностей заказчика. Это позволяет разработчику быть гибким и творческим, поскольку он может использовать разные элементы, модули и компоненты для достижения желаемых результатов.
Кроме того, ПЛИС позволяют создавать высокопроизводительные устройства, которые могут обрабатывать большие объемы данных и работать с высокими скоростями их передачи. Это особенно важно в области телекоммуникаций, где каждая миллисекунда имеет значение. Наконец, работа с ПЛИС — это работа с инновациями, поскольку в этой области постоянно появляются новые технологии и возможности. Это требует от разработчика постоянного обучения и развития, что делает эту работу еще более интересной и увлекательной.
Следует отметить, что, говоря о ПЛИС, мы имеем в виду также разработку программно-аппаратных комплексов в целом. Hardware development — это действительно очень широкая область, которая охватывает множество процессов и задач. Например, это может включать в себя непосредственно разработку проектов на ПЛИС (RTL-design for FPGA), которая позволяет создавать современные устройства с высокой производительностью и энергоэффективностью. Однако, это лишь одна из множества возможностей в этой области. Hardware development также включает в себя процессы верификации, где необходимо проверить правильность работы устройства на всех этапах разработки, чтобы избежать возможных ошибок и дефектов. Также это может включать разработку для ASIC, что позволяет создавать устройства с еще более высокой интеграцией и оптимизацией. При работе с ПЛИС вы обязательно столкнетесь с отладкой на конкретных устройствах, что потребует от вас навыков в схемотехнике. Также наша область неразрывно связана с программированием, так на ПЛИС могут быть реализованы софт-процессоры, ПЛИС могут быть интегрированными с физическими процессорными ядрами, на которых можно запускать операционные системы и пользовательские приложения, так же, в основном управление верхнего уровня устройствами с ПЛИС осуществляется при помощи ЭВМ. Впрочем, подробнее об этом мы поговорим ниже.
Что же требуется, чтобы стать успешным разработчиком?
Знание языков описания аппаратуры: Необходимо иметь опыт работы с языками описания аппаратуры, такими как Verilog, VHDL и SystemVerilog, которые используются для создания цифровых схем.
Понимание архитектуры FPGA: Разработчики ПЛИС должны понимать, как устроены FPGA и как работают внутренние блоки, такие как блоки памяти, умножители, сумматоры, и т.д.
Навыки проектирования: Разработчики ПЛИС должны иметь опыт проектирования различных цифровых схем, начиная от счетчиков, сдвиговых регистров и заканчивая сложными процессорными системами.
Умение оптимизировать: Важно знать, как оптимизировать цифровые схемы для достижения наилучшей производительности, эффективности и минимального потребления энергии.
Навыки отладки: Необходимо уметь использовать отладочное оборудование, такое как логический анализатор, осциллограф и другие инструменты, для отслеживания и исправления ошибок.
Знание принципов верификации: Важно знать принципы верификации, такие как тестирование функциональности, проверка временных характеристик и т.д.
Навыки командной работы: Работа в области hardware development часто включает в себя работу в команде, поэтому важно иметь навыки командной работы и уметь эффективно коммуницировать со своими коллегами. Не лишними будут умения работать с системами контроля версий и управления проектами.
Знание английского языка. По крайней мере, на уровне свободного чтения технической документации. Это может сильно облегчить вашу работу.
Все это — навыки, которые можно приобрести и отточить в ходе обучения и работы по данной специальности, в этом мы и хотим вам помочь. Пока что, мы рассчитываем, что вам знакомы основы математики и физики, в частности булева алгебра и основы схемотехники. Впрочем, изучить можно все, поехали!