В рамках подготовки курса "Введение в ПЛИС" были отобраны несколько относительно недорогих, но функционально разносторонних плат. Здесь я бы хотел рассмотреть возможности, которые они дают в плане обучения студентов.
Основой для выполнения проектных заданий выступит плата AX7A035B от Alinx и набор плат расширения: AN9767(2-канальный ЦАП (14 бит, 125MSPS)), AN9238(2-канальный АЦП (12 бит, 65MSPS)), AN706(8-канальный АЦП (16 бит, 200kSPS)), AN5642(бинокулярная камера), AN430(дисплей). С остальными модулями расширения можно ознакомиться на сайте производителя. Будем считать, что на группу из 12 человек мы имеем 3 базовые платы AX7A035B и по одной плате расширения. Для дальнейшего изучения систем на кристалле будем использовать плату управления Antminer S9 на базе ZYNQ7010. Также нам потребуется программатор, источник питания и, само собой, ЭВМ с релевантным софтом.
AX7A035B
На сайте производителя плата AX7A035B стоит $211, в реальной рознице стоимость будет чуть выше. Для отдельного студента, конечно, даже это уже существенная сумма, но для образовательного учреждения, либо предприятия, которое занимается обучением своих практикантов, деньги уже вполне сносные. Рассмотрим, что же мы за них получим. Здесь и далее изображения взяты с сайта либо документации Alinx.
Вид на плату AX7A035B с двух сторон:
Несущая плата оснащена вычислительным модулем SoM AC7A035, интерфейсом PCIE2.0, Gigabit Ethernet RJ-45 с преобразователем JLSemi JL2121-N040I Ethernet PHY, двумя разъемами HDMI для ввода и вывода данных с преобразователями SIL9013/9011 и SIL9134 соответственно. Возможна установка двух полнодуплексных SFP-модулей, которые подключаются к высокоскоростным трансиверам ПЛИС. В наличии также разъем micro USB, с помощью которого посредством микросхемы Silicon Labs CP2102GM организуется UART интерфейс, разъем для программирования и отладки JTAG, набор светодиодов и кнопок, разъем для microSD-карты и два разъема для плат расширения. По единому I2C-интерфейсу на ПЛИС подключаются элемент памяти EEPROM 24LC04 и температурный датчик LM75. В комплект поставки также включены: программатор Alinx AL321 с кабелями-переходниками, небольшой радиатор для охлаждения ПЛИС и блок питания (БП оснащен китайской вилкой и чтобы его включить в европейскую розетку потребуется переходник).
SoM AC7A035 оснащен ПЛИС XILINX ARTIX-7 XC7A35T-2FGG484I, двумя микросхемами памяти DDR3 MICRON MT41J256M16HA-125 суммарным объемом 1 Гбайт и модулем QSPI FLASH N25Q128 объемом 16Мбайт.
Вид на SoM AC7A035 с двух сторон:
ARTIX-7 XC7A35T-2FGG484I включает в себя:
Элемент |
Количество |
---|---|
Logic Cells |
33,280 |
Slices |
5,200 |
CLB flip-flops |
41,600 |
Block RAM (kb) |
1,80 |
DSP Slices |
90 |
PCIe Gen2 |
1 |
XADC |
1 XADC, 12bit, 1Mbps AD |
GTP Transceiver |
4 GTP, 6.6Gb/s max |
Speed Grade |
-2 |
Temperature Grade |
Industrial |
Безусловно, ПЛИС ограничена в своих возможностях, однако, для базовых вещей должно хватить. Кроме того, для студентов весьма полезно будет получить навыки оптимизации своих решений, чтобы они сразу при разработке проектов учитывали ограниченность аппаратных ресурсов.
На ПЛИС заводится два тактовых дифференциальных сигнала: 200МГц на логику и 125МГц - опорный тактовый сигнал высокоскоростных приемопередатчиков. Светодиод PWR LED показывает наличие питающего напряжения, DONE LED - загрузку прошивки, LED1 - может быть запрограммирован пользователем. Для работы с вычислительным модулем отдельно от несущей платы на модуле присутствуют контакты для подключения разъемов JTAG и питания +5 В. Вычислительный модуль подключается к несущему посредством 4х 80-пиновых разъемов Panasonic AXK580137Y (AXK680337YG - на несущем).
Здесь я не буду приводить распиновку линий и рассматривать конкретные схемотехнические решения. Все это довольно неплохо описано в документации на плату и я не вижу особой ценности в дублировании этих данных. Кроме того, навыки поиска информации и работы с документацией довольно важны в деятельности разработчика, так что пусть молодые специалисты получают дополнительный опыт, а также лишний раз задумаются об углублении знания китайского английского языка.
На основе вышесказанного построим следующую схему:
Платы расширения
Теперь рассмотрим платы расширения, которые есть у нас в наличии.
AN9767(2-канальный ЦАП (14 бит, 125MSPS)), AN9238(2-канальный АЦП (12 бит, 65MSPS)), AN706(8-канальный АЦП (16 бит, 200kSPS)), AN5642(бинокулярная камера), AN430(дисплей)
AN9767(2-канальный ЦАП (14 бит, 125MSPS))
Параметры двухпортового модуля ЦАП AN9767:
Чип ЦАП: AD9767 от Analog Devices
Каналы: 2-канальный
Разрядность ЦАП: 14 бит
Частота дискретизации ЦАП: 125 MSPS
Диапазон выходного напряжения: -5В ~ +5В
Количество слоёв модуля PCB: 4 слоя, отдельные слои для питания и земли
Интерфейс модуля: 40-контактный разъём с шагом 0,1 дюйма, направление загрузки
Температура окружающей среды (при поданном питании): -40°~85°, все чипы на модуле соответствуют промышленным требованиям
Выходной интерфейс: 2-портовый аналоговый BNC-выход (подключение к осциллографу через BNC-кабель напрямую) Мощность выходного сигнала может регулироваться двумя подстроечными резисторами. Загрузка данных в микросхему ЦАП осуществляется в параллельном виде, дополнительная настройка микросхемы не требуется.
AN9238(2-канальный АЦП (12 бит, 65MSPS))
Параметры модуля АЦП AN9238:
Чип АЦП: AD9238 от Analog Devices
Каналы АЦП: 2 канала
Частота выборки АЦП: 65 MSPS
Разрядность данных выборки АЦП: 12 бит
Стандарт уровней цифрового интерфейса: +3,3 В, уровень CMOS
Диапазон входного аналогового сигнала АЦП: -5В ~ +5В
Интерфейс входа аналогового сигнала: разъём SMA
Точность измерений: около 10 мВ
Рабочая температура: -40° ~ 85° Выгрузка данных из микросхемы АЦП осуществляется в параллельном виде, дополнительная настройка микросхемы не требуется.
AN706(8-канальный АЦП (16 бит, 200kSPS))
Параметры модуля АЦП AN706:
Чип АЦП: AD7606
Каналы АЦП: 8 каналов
Разрядность АЦП: 16 бит
Максимальная частота выборки: 200 KSPS
Диапазон входного напряжения: -5В ~ +5В
Количество слоёв PCB: 4 слоя, отдельные слои для питания и земли
Интерфейс модуля: 40-контактный разъём с шагом 2,54 мм
Температура окружающей среды (при поданном питании): -40° ~ 85°, все чипы на модуле соответствуют промышленным требованиям
Входной интерфейс: 8 разъёмов SMA и 16-контактные разъёмы с шагом 2,54 мм (каждый канал имеет два контакта для положительного и отрицательного входов)
Точность измерений: в пределах 0,5 мВ Данные могут передаваться с микросхемы как в параллельном, так и в последовательном виде.
AN5642(бинокулярная камера)
Параметры модуля AN5642:
Интерфейс модуля: 40-контактный разъём с шагом 2,54 мм, 2-камерная конфигурация с отдельными интерфейсами DVP
Расстояние: Расстояние между двумя камерами составляет 40 мм
Поддерживаемое разрешение изображений: 5 мегапикселей
Светочувствительный чип: 2 шт. OV5640 от OmniVision
Оптический размер: 1/4"
Состав модуля: Цепь питания для OV5640 и генератор тактовой частоты
Функции автоматического контроля изображения: Ручная фокусировка, автоматический контроль экспозиции (AEC), автоматический баланс белого (AWB)
Поддерживаемые форматы вывода: RAW RGB, RGB565/555/444, CCIR656, YUV422/420, YCbCr422 и сжатие
-
Максимальная скорость передачи изображения:
QSXGA (2592x1944): 15 fps
1080p: 30 fps
1280x960: 45 fps
720p: 60 fps
VGA (640x480): 90 fps
QVGA (320x240): 120 fps
Рабочая температура: -30 ~ 70°C, стабильная рабочая температура — 0 ~ 50°C Модуль реализует специальную процедуру подачи питания на элементы OV5640. Настройка OV5640 производится по отдельным интерфейсам I2C для каждого элемента. С процессом настройки можно ознакомиться в документации к плате AN5642 и более подробно в документации к элементам OV5640.
AN430(дисплей)
Параметры модуля AN430:
Формат данных: RGB888, 24 бита
Разрешение дисплея: 480 (RGB) * 272
Область отображения: 95,04 мм x 53,86 мм
Интерфейс модуля: 40-контактный разъём с шагом 2,54 мм
Рабочая температура: -20 ~ 70 ℃
Габариты: 120 x 24 мм
Теперь стало более-менее понятно чем мы располагаем. Давайте прикинем, что мы можем из этого сделать в привязке к нашему курсу. Первые три занятия подразумевают изучение теории и работу с ПО и системами симуляции. На четвертом занятии уже начинается работа с документацией аппаратных модулей. Глава 5 уже предусматривает работу непосредственно с платами. От нас потребуется прошить ПЛИС проектом с мигающим светодиодом и вывести линии в логический анализатор. Соответственно нам потребуется запитать плату AX7A035B и подключить к разъему JTAG программатор. Из элементов платы на данном этапе нас могут интересовать: встроенное ПЗУ (если реализуем постоянную прошивку), тактовый генератор на 200 МГц, светодиоды и ключи. Главы 6-8 сконцентрированы на внутренней архитектуре проектов и не затрагивают периферийные устройства. Глава 6 рассматривает вопросы генерации различных тактовых сигналов (из сигнала 200 МГц в нашем случае), 7 - потоковые внутрисистемные интерфейсы, 8 - адресные внутрисистемные интерфейсы. Глава 8 рассматривает периферийные последовательные интерфейсы, для отработки навыков их использования можно обратить внимание на канал USB-UART, либо на линию интерфейса I2C, подключенную к температурному датчику и элементу памяти EEPROM. Также опыт работы с I2C нам пригодится для конфигурирования бинокулярной камеры AN5642. Глава 10 завершает первую часть курса. Она направлена на изучение особенностей аналого-цифрового преобразования. После ее разбора можно переходить к реализации проектных заданий.
Наш набор предоставляет довольно широкий выбор возможностей. Внутри ПЛИС можно реализовать различные алгоритмы обработки сигнала. Передачу и прием сигнала в аналоговом виде можно организовать при помощи модулей ЦАП и АЦП соответственно. Еще больше возможностей появится, если получится обеспечить перенос сигналов в высокочастотную область и из нее. Тогда можно будет говорить о прототипах СВЧ-приемников и передатчиков сигнала. Модуль восьмиканального АЦП, к сожалению, обладает достаточно низкой частотой дискретизации, что ограничивает полосу сигнала, но зато, благодаря восьми каналам, можно рассмотреть возможность реализации прототипа цифровой ФАР. В рамках нашего курса мы не касаемся вопросов работы с изображениями и видеопотоком, однако это также является важной и динамично развивающейся областью, поэтому предусмотрена возможность реализации такого рода проектов. Для них нам может пригодиться бинокулярная камера AN5642, дисплей AN430, входной и выходной интерфейсы HDMI базовой платы.
Вторая часть курса начинается с разбора встроенных систем интеграции (11), софт-процессоров (12) и особенностей разработки ПО для них (13). Главы 14 и 15 сконцентрированы на разборе работы элементов памяти DDR и DMA. Здесь нам придётся плотно работать с чипами DDR3 базовой платы. Глава 16 посвящена особенностям работы с высокоскоростными трансиверами, здесь мы будем реализовывать интерфейс передачи данных по протоколу Aurora и SFP-трансиверам. Глава 17 знакомит с интерфейсом PCI-e и для закрепления материала, попробуем передать данные через разъем PCIE2 на ЭВМ. В главе 18 разбирается сетевое взаимодействие, отработка будет включать передачу данных по линии Ethernet - RJ45. Глава 19 продолжает рассматривать вопросы цифровой обработки сигналов и заканчивает основной курс, работа с которым требует рассмотренных выше плат. В главе 20 мы быстро пробежимся по основам работы с системами на кристалле, а в качестве основного рабочего модуля будет выступать уже плата управления Antminer S9 на базе ZYNQ7010. В главе 21 мы рассмотрим особенности верификации проектов и отдельного аппаратного обеспечения для этого нам не потребуется.
Antminer
Теперь подробнее рассмотрим плату управления Antminer S9. Согласно обозначениям на плате, ее наименование - Antminer Control Board C41 XC7Z010 V1.3. Плата довольно распространена из-за ее экстремальной дешевизны. Изначально, что понятно из названия, это были платы управления майнингом. После потери необходимости использовать их по прямому назначению (не будем здесь рассматривать причины) они в больших количествах поступили на рынок. Многие люди начали использовать их в качестве отладочных плат. Например, в статье "Отладочная плата с жирной ПЛИС за 500р или что делать со старым антмайнером — как я делаю собственную платформу / Хабр" рассматривается такая возможность. К слову, в ней сделан анонс целого цикла статей об использовании данной платы, и если автор найдет возможность продолжить свое дело, это будет неплохим подспорьем для обучения. Из этой статьи мы позаимствуем изображение платы с некоторыми полезными заметками:
Что же у нас есть "на борту"? В первую очередь сама ПЛИС Xilinx xc7z010clg400_10, два элемента DDR-памяти Micron MT41K256M16HA-125:E, интерфейс JTAG, набор светодиодов, несколько тактовых генераторов, NAND Flash-память MT29F2G08AACWP, разъем для MicroSD карты, интерфейс UART, интерфейс Ethernet и пользовательские линии ввода-вывода.
Если говорить более точно, то Xilinx xc7z010 - это уже не совсем ПЛИС, это система на кристалле, которая объединяет ПЛИС с двумя процессорными ядрами ARM. Ее характеристики:
SoC |
xc7z010 |
|
---|---|---|
Processing System (PS) Процессорная система |
Процессорное ядро |
Dual-Core ARM Cortex-A9 MPCore Up to 866MHz |
Processing System (PS) Процессорная система |
Processor Extensions |
NEON™ SIMDEngine and Single/Double Precision Floating Point Unit perprocessor |
Processing System (PS) Процессорная система |
L1 Cache |
32KB Instruction, 32KB Data per processor |
Processing System (PS) Процессорная система |
L2 Cache |
512KB |
Processing System (PS) Процессорная система |
On-Chip Memory |
256KB |
Processing System (PS) Процессорная система |
External Memory Support |
DDR3, DDR3L, DDR2, LPDDR2 |
Processing System (PS) Процессорная система |
External Static Memory Support |
2x Quad-SPI, NAND, NOR |
Processing System (PS) Процессорная система |
DMA Channels |
8 (4 dedicated to PL) |
Processing System (PS) Процессорная система |
Peripherals |
2x UART, 2x CAN 2.0B, 2x I2C, 2x SPI, 4x 32b GPIO |
Processing System (PS) Процессорная система |
Peripherals w/ built-in DMA |
2x USB 2.0 (OTG), 2x Tri-mode Gigabit Ethernet, 2x SD/SDIO |
Processing System (PS) Процессорная система |
Security |
RSA Authentication of First Stage Boot Loader, AES and SHA 256b Decryption and Authentication for Secure Boot |
Processing System to Programmable Logic Interface Ports (Primary Interfaces & Interrupts Only) Интерфейс взаимодействия PS и PL |
2x AXI 32b Master, 2x AXI 32b Slave 4x AXI 64b/32b Memory AXI 64b ACP 16 Interrupts |
|
Programmable Logic (PL) Программируемая логика |
7 Series PL Equivalent |
Artix-7 |
Programmable Logic (PL) Программируемая логика |
Logic Cells |
28K |
Programmable Logic (PL) Программируемая логика |
Look-Up Tables (LUTs) |
17,600 |
Programmable Logic (PL) Программируемая логика |
Flip-Flops |
35,200 |
Programmable Logic (PL) Программируемая логика |
TotalBlock RAM (#36Kb Blocks) |
2.1Mb (60) |
Programmable Logic (PL) Программируемая логика |
DSP Slices |
80 |
Programmable Logic (PL) Программируемая логика |
PCI Express |
— |
Programmable Logic (PL) Программируемая логика |
Analog Mixed Signal (AMS) / XADC |
2x 12 bit, MSPS ADCs with up to 17 Differential Inputs |
Programmable Logic (PL) Программируемая логика |
Security |
AES & SHA 256b Decryption & Authentication for Secure Programmable Logic Config |
Производитель представляет общую структуру семейства систем на кристалле AMD Zynq 7000 SoCs в виде следующей схемы:
Обобщив сведения о плате, получим следующую структурную схему:
Конфигурация платы позволяет нам рассмотреть основы разработки проектов для систем на кристалле, запустить операционную систему, научиться работать с элементами памяти, интерфейсами UART и Ethernet, а также отработать взаимодействие между процессорной системой и программируемой логикой.
Таким образом, имеющиеся в наличии устройства позволяют нам закрыть почти все вопросы практической подготовки студентов в рамках курса, обеспечить возможность выполнения ими проектных заданий, а также курсовых, бакалаврских и магистерских квалификационных работ.
Комментарии (5)
shooter2k
06.11.2024 09:57Подскажите, будет ли этот курс в свободном доступе? Если да, то какие знания необходимы для прохождения?
az013 Автор
06.11.2024 09:57Да, планирую так же в виде статей сюда по главам выкладывать, но пока это только зачатки курса, основная часть где-то на четверть написана, когда он будет завершен, пока не понятно, если вообще будет. Кроме того, материал писался скорее как вспомогательный для организации занятий в университете, но, думаю, хуже не сделает и как доп. чтение для новичков пойдет. По необходимым знаниям, каких-то серьезных, наверно, не требуется, основы дискретной математики, основы схемотехники могут пригодиться, в остальном - можно параллельно разбираться, дорогу осилит идущий)
ForestDront
Интересно, программировать ПЛИС из линуксов можно? Или надо где-то винду искать?
az013 Автор
У основных производителей точно есть сборки софта под линукс, я с алтерой и ксаем большую часть времени под линуксом работаю.
K0shi
Конечно!
Xilinx (Ise для старых, Vivado для новых, начиная с zynq, spartan 7, artix 7, kintex и пр), Altera (Quartus), Lattice, Anlogic (Tango) - все имеют версии для linux и windows, jtag также настраивается. На debian 12 всё нормально работает