Давненько ко мне в руки не попадалось ничего интересного, но ситуация поменялась 🙂. Попутным ветром принесло тут платку, и я решил, мол, а почему бы мне не сделать на неё небольшой обзорчик? Итак, отладочная плата с Zynq MPSoC от небезызвестной компании Alinx, которая торгует всяким интересным на Aliexpress.
Давайте посмотрим вместе, что есть на этой плате и какие возможности предоставляет разработчикам данный отладочный набор.
Кому интересно – добро пожаловать под кат!
![](https://habrastorage.org/r/w1560/webt/rd/r5/oc/rdr5ocma3rftuybyieiriirxb18.png)
Для начала коснусь нетехнических особенностей данной платы. Данная отладка стоит просто космических денег – около 400 тысяч рублей. Такая стоимость явно неподъёмна для простых энтузиастов и подходит лишь для профессиональной разработки или для компаний, которые готовы выделить достаточно денег на приобретение.
Но мне показалось, что эта плата даёт возможности соразмерно ее стоимости. Рассмотрим её возможные применения:
Поковыряв документацию я нашел целую кучу изображений с применением данной платы. Среди них:
– обнаружение машин:
![](https://habrastorage.org/r/w1560/webt/1o/_8/y8/1o_8y8w3acr8v5enefnydmgvyw8.png)
– обнаружение людей:
![](https://habrastorage.org/r/w1560/webt/f1/p3/jr/f1p3jro3xodvt4zjdiucj62wx8s.png)
– детекция огня:
![](https://habrastorage.org/r/w1560/webt/ud/br/kb/udbrkb-sh86jth03pqk2tnya-z4.png)
– обнаружение проблем и дефектов:
![](https://habrastorage.org/r/w1560/webt/c5/-z/jz/c5-zjzzlm8duwjmdpbim-xlilze.png)
– обнаружение нарушения целостности проводников на PCB:
![](https://habrastorage.org/r/w1560/webt/lc/bm/t7/lcbmt77zgysfx64u-ibexwbfbjw.png)
Вот бы иметь время все эти примеры раскурить и написать статьи на тему создания подобных проектов 😀. Но идём дальше.
Рассмотрим, используя изображения с сайта продавца, комплект поставки этой платы. Отладочный комплект ALINX AXU15EG состоит из двух основных компонент: SoM и материнская плата с интерфейсами.
В качестве ключевого узла SoM выступает SoC Zynq UltraScale+ MPSoC, XCZU15EG-2FFVB1156I с классом скорости 2, который содержит в себе четырехъядерный процессор с ядрами Cortex-A53 и двухъядерный Cortex-R5F для реалтайм вычислений и ПЛИС UltraScale с 746550 System Logic Cells, 682560 Flip-Flops, 274080 CLB LUT и многим другим. В общем, прям жЫр 🙂.
В сборе это хозяйство выглядит следующим образом:
![](https://habrastorage.org/r/w1560/webt/ca/v3/j8/cav3j8xsvsnewo9ew8yupa5rlms.png)
Так выглядит SoM модуль с обеих сторон:
![](https://habrastorage.org/r/w1560/webt/tk/wn/nt/tkwnntvmn6gprequvdjbdfziu84.png)
![](https://habrastorage.org/r/w1560/webt/ue/vh/hq/uevhhq2dfgp4sffkexnh4r0qpua.png)
Помимо этого в комплекте имеется JTAG отладчик Alinx AL321 на чипе FTDI FT232H, который позволяет достаточно быстро осуществлять операции отладки в отличие от достаточно медленных чипов, которые идут в Platform Cable USB, типа DLC9LP.
Выглядит он вот так и поставляется с microUSB-кабелем и кабелем подключения к отладочному разъёму:
![](https://habrastorage.org/r/w1560/webt/9s/hj/yx/9shjyxvlo2zwggqqviwctmefxwa.png)
Для питания платы используется блок питания на +12V DC на 36W (3A):
![](https://habrastorage.org/r/w1560/webt/tk/m4/p3/tkm4p3dejpmtn4kabegkisegccs.png)
Для загрузки ПО и битстрима идет в комплекте MicroSD Flash карта, может быть поставлена и на 16 Гб и на 32 Гб. Мне повезло, и в этом комплекте была флешка на 32Гб. Хотя для работы на начальном этапе более чем достаточно и 4 Гб флешки:
![](https://habrastorage.org/r/w1560/webt/ts/rz/hs/tsrzhscvurfzn0m5d4yghm-goru.png)
Плюсом ещё докладывают Card Reader для microSD карт:
![](https://habrastorage.org/r/w1560/webt/yn/k0/f_/ynk0f_wkzv5wkaczxy6hblsohb4.png)
В качестве ещё одного элемента поставки можно отдельно отметить систему охлаждения основного чипа в виде 30W Fan Cooler:
![](https://habrastorage.org/r/w1560/webt/ey/zj/wp/eyzjwpse0ulw8dvdywzqodzki5m.png)
В качестве приятного дополнения и защиты от случайных механических воздействий имеется в комплекте плексигласовый защитный корпус:
![](https://habrastorage.org/r/w1560/webt/wv/8m/d1/wv8md1_fxyp9xukygqsrd5xpgzq.png)
Обратная сторона платы, к слову, выглядит следующим образом:
![](https://habrastorage.org/r/w1560/webt/mo/py/2m/mopy2mf6gsywmgkro0-eanehp9u.png)
Внимательные читатели увидят на шелкографии надпись AXU9EGB 1.1. Но пусть не смущает эта надпись, несущая плата, видимо, используется во многих комплектах поставки.
Помимо этого у Alinx можно приобрести разные модули, которые устанавливаются в 40-пиновый разъем GPIO:
— Dual Channel 14bit 125Msps DA BNC Analog Output Module AD9767;
![](https://habrastorage.org/r/w1560/webt/hw/jw/ii/hwjwiimnz39terdiauv-00c4tje.png)
— Multi-channel 16 bit 200ksps Synchronous Sampling AD Module AD7606;
![](https://habrastorage.org/r/w1560/webt/6f/q9/a4/6fq9a4bdwob0in0kktmfielnl1s.png)
— Dual-channel 65MSPS 12bit AD analog to digital signal conversion module AD9238;
![](https://habrastorage.org/r/w1560/webt/sx/tb/te/sxtbtecxjwgy_zuarddkdeoicg8.png)
— 7-inch Touch Screen Module;
![](https://habrastorage.org/r/w1560/webt/os/6t/za/os6tzaqi2rmbyx3kd46cx6ckz0g.png)
— модуль для установки в MIPI-интерфейс в виде 5MP камеры на контроллере OV5640;
![](https://habrastorage.org/r/w1560/webt/fq/b9/9i/fqb99isiufyz2g5x0umsnfrkofw.png)
Также продаются разные модули для установки на FMC-разъем, среди которых:
— Alinx FH1223 FMC HPC to 4-Channel SFP Optical Fiber Interface Adapter Card;
![](https://habrastorage.org/r/w1560/webt/hf/kw/ef/hfkweflpnnlnbzwthzhy2vqhlcq.png)
— Alinx FL2121 4-way 1000M Gigabit Ethernet LPC;
![](https://habrastorage.org/r/w1560/webt/ra/gi/fm/ragifmxy6iugfy7ogauscxflrwa.png)
— Alinx FMC HDMI CARD Daughter Board Input Output 1080p;
![](https://habrastorage.org/r/w1560/webt/ox/wj/si/oxwjsibdat0nu7zjajafqvbgex0.png)
— Alinx FL1404 FMC to 4-way MIPI module LPC interface;
![](https://habrastorage.org/r/w1560/webt/p1/hc/e-/p1hce-ksw98l5azeyef50vvc30c.png)
— Alinx FL9613 FMC LPC to 4-Channel AD 12-bit 250 MSPS;
![](https://habrastorage.org/r/w1560/webt/45/rr/yf/45rryfyke-rqcchjrcsaqe9bd-k.png)
— Alinx FH9712 16 channel GMSL2/GMSL1 autopilot camera acquisition module MAX96712;
![image](https://habrastorage.org/r/w1560/webt/sz/ba/9p/szba9p8zahss2-2jlm65wxfhd8o.png)
— Alinx FL1010 FMC LPC Interface to 40-Pin Expansion Ports;
![](https://habrastorage.org/r/w1560/webt/rk/v2/mv/rkv2mv20pxkw2n7styrzys3cfti.png)
— Alinx FL0214 FMC LPC to Dual Lens MIPI 1.3 Megapixel IMX214 CMOS Camera;
![](https://habrastorage.org/r/w1560/webt/tv/wo/yq/tvwoyqdd2pmpl9napf61jbvw3ok.png)
— Alinx FH1226 FMC HPC to Cameralink Adapter;
![](https://habrastorage.org/r/w1560/webt/ls/cy/bs/lscybsa8f3ggypog_w-aturelrw.png)
…и многие другие, их можно найти на сайте Alinx или на Aliexpress. Как говорится, любой каприз за ваши деньги. Возможностей для реализации огромного спектра задач – целая уйма.
Широкими мазками опишу возможности центрального элемента данной отладки. Вот так возможности Zynq MPSoC отразили Xilinx в своих документах на данный чип:
![](https://habrastorage.org/r/w1560/webt/sl/ge/g6/slgeg61n8xexnlpg2mmbhr6_et0.png)
Если рассматривать чип с точки зрения внутреннего технического устройства, то приводится следующая блок-схема:
![](https://habrastorage.org/r/w1560/webt/rt/qo/bt/rtqobtx9d_vhlrnwpbimjz2yktg.png)
Рассмотрим подробнее встроенный четырехъядерный ARM-процессор, и я приведу несколько его отличительных особенностей:
Отдельной фишкой данного SoC является наличие двухъядерного процессора Cortex-R5F с Real-Time Processing Unit (RPU):
Помимо этого присутствует On-Chip Memory:
Для графики на чипе есть отдельный GPU ARM Mali-400 MP2 с частотой до 600 MHz:
Контроллеры памяти:
Также на борту имеется поддержка последовательных трансиверов:
Очень богат данный чип на выделенные периферийные устройства ввода-вывода и интерфейсы:
Для реализации интерконнекта используется ARM AMBA AXI4-based контроллер. Ну и многое другое.
Тут тоже очень богато. Перечислю доступные ресурсы, предоставляемые ПЛИС:
И многое другое, что можно очень долго перечислять…
Теперь настало время препарировать схематик SoM-а и подробнее посмотреть, что на нём есть и какие компоненты установлены. Начнем с того, что он состоит из 4-ёх 120 пиновых коннекторов, которые установлены так, чтобы SoM было невозможно воткнуть на плату в неправильном положении. Освежим в воспоминаниях картинку:
![](https://habrastorage.org/r/w1560/webt/ue/vh/hq/uevhhq2dfgp4sffkexnh4r0qpua.png)
Теперь подробнее рассмотрим верхнюю часть SoM-а:
![](https://habrastorage.org/r/w1560/webt/tk/wn/nt/tkwnntvmn6gprequvdjbdfziu84.png)
Для того, чтобы сформировать набор разных напряжений, на SoMе установлен PMIC-котроллер TPS6508640RSKR в связке с большим количеством обвязки в виде линейных, синхронных, импульсных преобразователей и большого числа пассивных компонентов:
![](https://habrastorage.org/r/w1560/webt/p8/s1/w0/p8s1w0kx2fu7enq6rwszqftwsqs.png)
В целом всё достаточно просто, потом можете посмотреть самостоятельно схематик и сделать свои выводы.
На SoM установлен основной осциллятор 33.3333 MHz и низкочастотный генератор 32.768 kHz для RTC:
![](https://habrastorage.org/r/w1560/webt/zw/ug/kh/zwugkhaij-pico62q1v_j0rtxf4.png)
И дополнительно на SoM имеется генератор дифференциального тактового сигнала в 200MHz:
![](https://habrastorage.org/r/w1560/webt/lo/b0/um/lob0umthhqjgf-xynmk8qqwaxa8.png)
В целом достаточно стандартно и под стать всей периферии и сложности самой платы.
На SoM-е установлено 6 чипов DDR4, часть из которых подключена к PS-части, а другая часть к PL. Если быть несколько конкретнее то:
Максимальная рабочая скорость DDR4, подключенной к PS, может достигать 1200 МГц со скоростью передачи данных в 2400 Мбит/с. Подключается эта память к интерфейсу памяти BANK504 PS.
Максимальная скорость DDR4 SDRAM, подключенная к PL, также может достигать 1200 МГц с такой же скоростью передачи данных. И подключается эта память к BANK64 в PL.
Если рассматривать постоянную память, на SoM установлено следующее:
Как я уже упоминал выше, плата состоит из двух основных компонентов – SoM c Zynq и несущей платой, которая предоставляет возможность подключения периферийных устройств и сетевых подключений.
Перечислю все основные возможности, которые предоставляет несущая плата:
Помимо этого на плате имеется служебный переключатель для выбора источника загрузки:
![](https://habrastorage.org/r/w1560/webt/lo/b0/um/lob0umthhqjgf-xynmk8qqwaxa8.png)
Фото переключателя на плате:
![](https://habrastorage.org/r/w1560/webt/2l/e3/zs/2le3zso2mztmogemlgpbxxvapqq.png)
А также имеется 6 SMA интерфейсов для подключения GTH-трансивера.
Проанализировав состав платы, я накидал схему, отображающую всё, что есть на плате:
![](https://habrastorage.org/r/w1560/webt/ky/_c/ae/ky_caefuip7a-hciahulkb992rk.png)
По порядку рассмотрим каждый из пунктов чуть подробнее.
Плата запитывается от 12В через самый обычный штыревой разъём, подойдёт любой качественный блок питания с выходным напряжением 12В и мощностью 36W.
![](https://habrastorage.org/r/w1560/webt/ff/64/_u/ff64_u0dmaxagomtpaiv4cbbnw0.png)
Помимо этого на плате имеется несколько преобразователей из 12V в целевые напряжения. Из 12V в 5V:
![](https://habrastorage.org/r/w1560/webt/bt/wx/cr/btwxcrr13semroozzedma3_krug.png)
Из 12V в 3.3V:
![](https://habrastorage.org/r/w1560/webt/ld/iw/bf/ldiwbfniv9y7w9psy_j5o_avl1a.png)
И из 12V в 1.8V:
![](https://habrastorage.org/r/w1560/webt/mx/zt/ex/mxztexnnwxnz5xv8wu-mv56hkpc.png)
Плюсом к этому на плате имеются и тест-поинты для контроля качества питания.
Очень интересным компонентом на плате является программируемый источник тактовой частоты Si5332BD11025-GM2, который позволяет генерировать весь необходимый спектр тактовых частот для всей необходимой периферии:
![](https://habrastorage.org/r/w1560/webt/mh/qd/0b/mhqd0bgpeh5bvm4nuaov18ad0-i.png)
Для отладочных целей на плате имеется стандартный для всех отладок JTAG-интерфейс для подключения отладчика:
![](https://habrastorage.org/r/w1560/webt/nq/5j/2r/nq5j2rms9ihclh5naiqwtggc9cc.png)
Данная плата также предоставляет обширные возможности для реализации сетевых сценариев. В первую очередь обратим внимание на два медных Ethernet-разъема. Первый – подключен к PS-части Zynq. Линии MDIO из раъема идут к PHY Ethernet от Realtek RTL8211F. От PHY к PS идёт подключение через интерфейс RGMII:
![](https://habrastorage.org/r/w1560/webt/s3/qu/so/s3quso8krmuer6oaixjyd7fryso.png)
Второй подключен к программируемой логике по тому же принципу с тем же PHY Ethernet-контроллером:
![](https://habrastorage.org/r/w1560/webt/7s/lp/va/7slpvak-1zju2e9veko3oxc_fv4.png)
Помимо этого на плате установлен разъём для подключения 2-ух SFP/SFP+ модулей. Оба SFP-разъема подключаются к PL-логике устройства:
![](https://habrastorage.org/r/w1560/webt/9p/ic/nh/9picnhortzgytauz6wyf-dzhequ.png)
Помимо этого имеется ещё генератор дифференциального тактового сигнала для работы трансиверов SiT9121AI-2B1-33E125.000000 с выходной тактовой частотой в 125МГц:
![](https://habrastorage.org/r/w1560/webt/u2/z3/l5/u2z3l54qfrnfauryfhwcso8epvo.png)
Помимо вполне стандартных сетевых интерфейсов на плате имеется подключение через SMA-разъемы к GTH-интерфейсам с возможностью передачи данных до 100 Гбит/с:
![](https://habrastorage.org/r/w1560/webt/j-/nf/a9/j-nfa9rsbxehqc8ravjhbuf9onu.png)
На плате имеется FMC-разъем для подключения большого количества различных модулей, которые я перечислил в начале статьи. Схематик ввиду большого его размера – прикладывать тут не буду. Приведу лишь фото интерфейса:
![](https://habrastorage.org/r/w1560/webt/51/ti/zv/51tizv9shmq4g6ricbcwvu3nqyu.png)
В части USB-подключений плата также предоставляет целую кучу возможностей. На плате установлен USB3.1 хаб GL3523T-QFN76, который подключен к соответствующей части PS-части Zynq MPSoC:
![](https://habrastorage.org/r/w1560/webt/5h/m3/ve/5hm3vefamud4wfyc3qxxjlrmt9u.png)
К хабу подключены 2 USB3.0 и 2 USB2.0 разъема. Правда, на схеме все 4 почему-то обозначены как USB3.0-разъема:
![](https://habrastorage.org/r/w1560/webt/tc/xm/ku/tcxmkuphlrxyzkx-1bbaxcu7lea.png)
Помимо этого на плате установлен USB2.0 PHY контроллер USB3320C-EZK-TR, который подключен к USB-хабу:
![](https://habrastorage.org/r/w1560/webt/qc/fa/-i/qcfa-i9eg3mvwl2cemvduocov1m.png)
На плате имеется SD-разъём для подключения внешнего накопителя данных или источника загрузки. Разъём на плате подключается к Zynq, осуществляется через расширитель портов SDIO с преобразователем уровня логического сигнала 1TXS02612RTWR:
![](https://habrastorage.org/r/w1560/webt/oj/hf/md/ojhfmduipjvrizn4kusxhd4aqd4.png)
Ещё одна интересная возможность, которая предоставляется платой – это возможность подключить до 2-х SATA устройств, будь то SSD или HDD:
![](https://habrastorage.org/r/w1560/webt/4l/6u/6j/4l6u6jxpmmqy9qt1kupqildf1yo.png)
![](https://habrastorage.org/r/w1560/webt/bo/ui/sv/bouisv7tsuk4bswaljllvkefhis.png)
Приятная особенность платы – наличие M.2 разъёма с ключом М. Сюда возможно подключить любое подходящее PCI-e устройство, например, SSD-диск подходящего форм-фактора:
![](https://habrastorage.org/r/w1560/webt/gx/fg/rb/gxfgrb64lyvc2tgbu-l-ufxhdqi.png)
Для подключения внешнего дисплея вместо HDMI на плате использован интерфейс Display Port:
![](https://habrastorage.org/r/w1560/webt/yk/sw/o8/ykswo8wf6jydnegfqmmovh1x58u.png)
![](https://habrastorage.org/r/w1560/webt/i4/if/a_/i4ifa_akurvmqapty-67ffwvogw.png)
![](https://habrastorage.org/r/w1560/webt/y3/x1/9w/y3x19wzhilekfnqbid7n2y0cwck.png)
![](https://habrastorage.org/r/w1560/webt/s_/7p/mx/s_7pmxlh82qbl_zkc1jady2masc.png)
Для подключения внешних мультимедиа-устройств, будь то дисплей или камера – на плате предусмотрен интерфейс MIPI:
![](https://habrastorage.org/r/w1560/webt/no/ip/4p/noip4pnxcgxd-f1mkgul2ynpg7c.png)
В случае, если плата разрабатывается под какие-либо automotive-применения, – выведен интерфейс CAN с подключением в клеммный разъем HT3.96-4P к контроллеру SN65HVD232 через преобразователь логических уровней TXS0102DCU. Сигнальные линии подключаются к PS-части Zynq:
![](https://habrastorage.org/r/w1560/webt/nk/fd/ie/nkfdiembbqh6-nkowbzxg8v2u5s.png)
Для промышленных применений на плате реализован вывод интерфейса RS-485 через приемопередатчик MAX3485ESA. Подключается к PL-части Zynq:
![](https://habrastorage.org/r/w1560/webt/ec/dq/sr/ecdqsrixtfcupxxv9_4fd2ibw5m.png)
![](https://habrastorage.org/r/w1560/webt/nw/mx/ud/nwmxudkb7sedlomhc4wewlfdlue.png)
Для случаев, когда потребуется мониторинг внешней температуры, – на плате имеется I2C температурный сенсор LM75DM-33R2, который подключается к PS-части Zynq:
![](https://habrastorage.org/r/w1560/webt/ua/p8/yk/uap8ykugacw4jbucdlbnbz-gjs0.png)
На плате имеется батарейный держатель, который снабжает соответствующий банк питания в PS-части:
![](https://habrastorage.org/r/w1560/webt/rg/a7/4p/rga74pjx_udtvqc9sivasn6fkp8.png)
Помимо всего прочего на плате имеется I2C EEPROM 24LC04 объёмом 4 Кбит, которая подключена к PS-части устройства:
![](https://habrastorage.org/r/w1560/webt/kx/8b/ik/kx8bik2dajps6xk1lmqxhjmm_s0.png)
Для коммуникации с внешними устройствами и работы с консолью Zynq – на плате имеется два интерфейса UART: первый подключен к PS-части устройства, второй подключен к PL-части устройства. В обоих случаях подключение осуществляется с использованием USB-to-UART конвертера CP2102N-A01-GQFN28R по miniUSB-порту:
![](https://habrastorage.org/r/w1560/webt/qp/5f/ky/qp5fky3fssqtquou9d2xgsiz1pm.png)
К PS-части UART-интерфейс подключается через преобразователь логических уровней 3.3V-to-1.8V TXS0102DCU:
![](https://habrastorage.org/r/w1560/webt/dm/g4/it/dmg4itqjciiim2d5jk6af4n2hzy.png)
В дополнение к широчайшим возможностям отладки – на плате имеется стандартная 40-пиновая гребенка с GPIO-пинами:
![](https://habrastorage.org/r/w1560/webt/4b/mq/we/4bmqwep6ylj8jgznorv43y-fmp4.png)
Для того, чтобы реализовать простую индикацию и базовое взаимодействие с пользователем – на плате имеется несколько LED-индикаторов и кнопок.
Первый – индикатор питания 3.3V и второй LED подключен к PS-части:
![](https://habrastorage.org/r/w1560/webt/yi/ze/cn/yizecnbgs0doffranimh-jdzxs4.png)
Имеется второй LED-индикатор, который подключен к PS-части:
![](https://habrastorage.org/r/w1560/webt/wg/pc/5o/wgpc5ocvgohpn3g7fgkydd5roec.png)
Третий LED-индикатор подключен к PL-части:
![](https://habrastorage.org/r/w1560/webt/xy/hb/q_/xyhbq_k7tlplfwsr5vkhuj9ltyo.png)
Четвёртый, служебный, индикатор используется для того, чтобы обозначить, что загрузка bitstream в FPGA прошла успешно:
![](https://habrastorage.org/r/w1560/webt/5d/od/f-/5dodf-ezgzymclgmdmnolhnzznk.png)
Плюсом к этому на плате расположено несколько кнопок. Первая – используется для включения питания платы, вторая – подключена к PL-части, а третья – подключена к PS-части:
![](https://habrastorage.org/r/w1560/webt/5a/kp/qq/5akpqqy6dlte5ut8xqgla15xbpe.png)
![](https://habrastorage.org/r/w1560/webt/v9/gz/kg/v9gzkgfoew3o7suloeo3plcqsx4.png)
![](https://habrastorage.org/r/w1560/webt/4j/u0/iq/4ju0iqtc7kntezwy_hsk4nh66tq.png)
В общем, достаточно стандартный набор. Теперь перейдём к рассмотрению того, что поставляется с платой в части примеров и SDK для работы с платой.
В комплекте с платой идёт архив размером 7.2 Гбайт, в котором представлено самое подробное описание отладки:
Если просто перечислить набор примеров, то получится примерно следующий список.
Примеры для работы с периферией из ПЛИС и baremetal-приложений в PS-части:
В комплекте также множество примеров работы с периферией из Linux:
В теории по каждому из этих примером можно было бы написать целую книгу или цикл статей. Данный BSP я выложил в своем телеграм-канале по Zynq.
Долго думал, чем завершить данный обзор. Плата, конечно, стоит очень дорого и обычному энтузиасту недоступна, но объём возможностей и ресурсов, которые она предоставляет в итоге, – точно соответствует её цене. Мне показалось интересным заглянуть за пределы доступного, поковырять что-то недоступное и предоставить это общественности. Возможно, чуть позже напишу статью по теме сборки Linux под Ultrascale+ потому что там своих граблей оказалось навалено невероятно много и всё оказалось не настолько тривиально, как в Zynq-7000. И есть пара кейсов на рассмотрение, связанных с PL Ethernet и AXI ENET, но это уже предмет отдельного разговора.
Спасибо, что дочитали до конца. До встречи в следующих статьях! 🙂
Возможно, захочется почитать и это:
Давайте посмотрим вместе, что есть на этой плате и какие возможности предоставляет разработчикам данный отладочный набор.
Кому интересно – добро пожаловать под кат!
![](https://habrastorage.org/webt/rd/r5/oc/rdr5ocma3rftuybyieiriirxb18.png)
❯ Нетехническая сторона вопроса
Для начала коснусь нетехнических особенностей данной платы. Данная отладка стоит просто космических денег – около 400 тысяч рублей. Такая стоимость явно неподъёмна для простых энтузиастов и подходит лишь для профессиональной разработки или для компаний, которые готовы выделить достаточно денег на приобретение.
Но мне показалось, что эта плата даёт возможности соразмерно ее стоимости. Рассмотрим её возможные применения:
- Automotive применения, для организации помощи водителю, бортовых систем с анализом данных с видеокамер;
- Для организации систем беспроводной связи, SDR и т.п.;
- Сетевые применения, где требуются мультигигабитные скорости, за счёт наличия на борту двух интерфейсов для подключения SFP/SFP+ и медного порта Ethernet. Количество портов также можно увеличить за счёт установки дополнительных плат на FMС HPC интерфейс и сделать полноценный коммутатор или маршрутизатор.
- Высокоскоростной обмен и обработка данных с использованием параллельных вычислений в очень емкой ПЛИС и очень богатого на возможности высокоскоростного интерконнекта c ARM-ядрами.
- Применение в областях машинного обучения, искусственного интеллекта и потокового распознавания в видеонаблюдении и аналитики с потоковой обработкой видеопотока в качестве 4К.
- Область аэрокосмических применений и многие другие.
Поковыряв документацию я нашел целую кучу изображений с применением данной платы. Среди них:
– обнаружение машин:
![](https://habrastorage.org/webt/1o/_8/y8/1o_8y8w3acr8v5enefnydmgvyw8.png)
– обнаружение людей:
![](https://habrastorage.org/webt/f1/p3/jr/f1p3jro3xodvt4zjdiucj62wx8s.png)
– детекция огня:
![](https://habrastorage.org/webt/ud/br/kb/udbrkb-sh86jth03pqk2tnya-z4.png)
– обнаружение проблем и дефектов:
![](https://habrastorage.org/webt/c5/-z/jz/c5-zjzzlm8duwjmdpbim-xlilze.png)
– обнаружение нарушения целостности проводников на PCB:
![](https://habrastorage.org/webt/lc/bm/t7/lcbmt77zgysfx64u-ibexwbfbjw.png)
Вот бы иметь время все эти примеры раскурить и написать статьи на тему создания подобных проектов 😀. Но идём дальше.
❯ Общее описание комплекта поставки
Рассмотрим, используя изображения с сайта продавца, комплект поставки этой платы. Отладочный комплект ALINX AXU15EG состоит из двух основных компонент: SoM и материнская плата с интерфейсами.
В качестве ключевого узла SoM выступает SoC Zynq UltraScale+ MPSoC, XCZU15EG-2FFVB1156I с классом скорости 2, который содержит в себе четырехъядерный процессор с ядрами Cortex-A53 и двухъядерный Cortex-R5F для реалтайм вычислений и ПЛИС UltraScale с 746550 System Logic Cells, 682560 Flip-Flops, 274080 CLB LUT и многим другим. В общем, прям жЫр 🙂.
В сборе это хозяйство выглядит следующим образом:
![](https://habrastorage.org/webt/ca/v3/j8/cav3j8xsvsnewo9ew8yupa5rlms.png)
Так выглядит SoM модуль с обеих сторон:
![](https://habrastorage.org/webt/tk/wn/nt/tkwnntvmn6gprequvdjbdfziu84.png)
![](https://habrastorage.org/webt/ue/vh/hq/uevhhq2dfgp4sffkexnh4r0qpua.png)
Помимо этого в комплекте имеется JTAG отладчик Alinx AL321 на чипе FTDI FT232H, который позволяет достаточно быстро осуществлять операции отладки в отличие от достаточно медленных чипов, которые идут в Platform Cable USB, типа DLC9LP.
Выглядит он вот так и поставляется с microUSB-кабелем и кабелем подключения к отладочному разъёму:
![](https://habrastorage.org/webt/9s/hj/yx/9shjyxvlo2zwggqqviwctmefxwa.png)
Для питания платы используется блок питания на +12V DC на 36W (3A):
![](https://habrastorage.org/webt/tk/m4/p3/tkm4p3dejpmtn4kabegkisegccs.png)
Для загрузки ПО и битстрима идет в комплекте MicroSD Flash карта, может быть поставлена и на 16 Гб и на 32 Гб. Мне повезло, и в этом комплекте была флешка на 32Гб. Хотя для работы на начальном этапе более чем достаточно и 4 Гб флешки:
![](https://habrastorage.org/webt/ts/rz/hs/tsrzhscvurfzn0m5d4yghm-goru.png)
Плюсом ещё докладывают Card Reader для microSD карт:
![](https://habrastorage.org/webt/yn/k0/f_/ynk0f_wkzv5wkaczxy6hblsohb4.png)
В качестве ещё одного элемента поставки можно отдельно отметить систему охлаждения основного чипа в виде 30W Fan Cooler:
![](https://habrastorage.org/webt/ey/zj/wp/eyzjwpse0ulw8dvdywzqodzki5m.png)
В качестве приятного дополнения и защиты от случайных механических воздействий имеется в комплекте плексигласовый защитный корпус:
![](https://habrastorage.org/webt/wv/8m/d1/wv8md1_fxyp9xukygqsrd5xpgzq.png)
Обратная сторона платы, к слову, выглядит следующим образом:
![](https://habrastorage.org/webt/mo/py/2m/mopy2mf6gsywmgkro0-eanehp9u.png)
Внимательные читатели увидят на шелкографии надпись AXU9EGB 1.1. Но пусть не смущает эта надпись, несущая плата, видимо, используется во многих комплектах поставки.
❯ Дополнительные модули
Помимо этого у Alinx можно приобрести разные модули, которые устанавливаются в 40-пиновый разъем GPIO:
— Dual Channel 14bit 125Msps DA BNC Analog Output Module AD9767;
![](https://habrastorage.org/webt/hw/jw/ii/hwjwiimnz39terdiauv-00c4tje.png)
— Multi-channel 16 bit 200ksps Synchronous Sampling AD Module AD7606;
![](https://habrastorage.org/webt/6f/q9/a4/6fq9a4bdwob0in0kktmfielnl1s.png)
— Dual-channel 65MSPS 12bit AD analog to digital signal conversion module AD9238;
![](https://habrastorage.org/webt/sx/tb/te/sxtbtecxjwgy_zuarddkdeoicg8.png)
— 7-inch Touch Screen Module;
![](https://habrastorage.org/webt/os/6t/za/os6tzaqi2rmbyx3kd46cx6ckz0g.png)
— модуль для установки в MIPI-интерфейс в виде 5MP камеры на контроллере OV5640;
![](https://habrastorage.org/webt/fq/b9/9i/fqb99isiufyz2g5x0umsnfrkofw.png)
Также продаются разные модули для установки на FMC-разъем, среди которых:
— Alinx FH1223 FMC HPC to 4-Channel SFP Optical Fiber Interface Adapter Card;
![](https://habrastorage.org/webt/hf/kw/ef/hfkweflpnnlnbzwthzhy2vqhlcq.png)
— Alinx FL2121 4-way 1000M Gigabit Ethernet LPC;
![](https://habrastorage.org/webt/ra/gi/fm/ragifmxy6iugfy7ogauscxflrwa.png)
— Alinx FMC HDMI CARD Daughter Board Input Output 1080p;
![](https://habrastorage.org/webt/ox/wj/si/oxwjsibdat0nu7zjajafqvbgex0.png)
— Alinx FL1404 FMC to 4-way MIPI module LPC interface;
![](https://habrastorage.org/webt/p1/hc/e-/p1hce-ksw98l5azeyef50vvc30c.png)
— Alinx FL9613 FMC LPC to 4-Channel AD 12-bit 250 MSPS;
![](https://habrastorage.org/webt/45/rr/yf/45rryfyke-rqcchjrcsaqe9bd-k.png)
— Alinx FH9712 16 channel GMSL2/GMSL1 autopilot camera acquisition module MAX96712;
![image](https://habrastorage.org/webt/sz/ba/9p/szba9p8zahss2-2jlm65wxfhd8o.png)
— Alinx FL1010 FMC LPC Interface to 40-Pin Expansion Ports;
![](https://habrastorage.org/webt/rk/v2/mv/rkv2mv20pxkw2n7styrzys3cfti.png)
— Alinx FL0214 FMC LPC to Dual Lens MIPI 1.3 Megapixel IMX214 CMOS Camera;
![](https://habrastorage.org/webt/tv/wo/yq/tvwoyqdd2pmpl9napf61jbvw3ok.png)
— Alinx FH1226 FMC HPC to Cameralink Adapter;
![](https://habrastorage.org/webt/ls/cy/bs/lscybsa8f3ggypog_w-aturelrw.png)
…и многие другие, их можно найти на сайте Alinx или на Aliexpress. Как говорится, любой каприз за ваши деньги. Возможностей для реализации огромного спектра задач – целая уйма.
❯ Zynq Ultrascale+ MPSoC
Широкими мазками опишу возможности центрального элемента данной отладки. Вот так возможности Zynq MPSoC отразили Xilinx в своих документах на данный чип:
![](https://habrastorage.org/webt/sl/ge/g6/slgeg61n8xexnlpg2mmbhr6_et0.png)
Если рассматривать чип с точки зрения внутреннего технического устройства, то приводится следующая блок-схема:
![](https://habrastorage.org/webt/rt/qo/bt/rtqobtx9d_vhlrnwpbimjz2yktg.png)
Рассмотрим подробнее встроенный четырехъядерный ARM-процессор, и я приведу несколько его отличительных особенностей:
- Архитектура основного процессора ARMv8-A с рабочей частотой CPU до 1.5 GHz;
- Медиапроцессор с поддержкой инструкций NEON Advanced SIMD;
- Floating Point Unit (FPU) с поддержкой вычислений одинарной и двойной точности;
- CoreSight и Embedded Trace Macrocell (ETM) для расширенных функций отладки;
- Accelerator Coherency Port (ACP);
- AXI Coherency Extension (ACE);
- Два кэша размером 32 KB L1 и кэш L2 1 MB.
Отдельной фишкой данного SoC является наличие двухъядерного процессора Cortex-R5F с Real-Time Processing Unit (RPU):
- Основан на архитектуре ARMv7-R c рабочей частотой до 600 MHz;
- Floating Point Unit (FPU) с поддержкой вычислений одинарной и двойной точности;
- CoreSight и Embedded Trace Macrocell (ETM) для расширенных функций отладки;
- Кэш в 32KB L1 и кэш в 128 KB TCM c ECC.
Помимо этого присутствует On-Chip Memory:
- 256KB on-chip RAM (OCM) в PS с ECC;
- 36 Mb on-chip RAM (UltraRAM) c ECC в PL;
- 35 Mb on-chip RAM (block RAM) c ECC в PL;
- 11 Mb on-chip RAM (distributed RAM) в PL.
Для графики на чипе есть отдельный GPU ARM Mali-400 MP2 с частотой до 600 MHz:
- Поддержка OpenGL ES 1.1 и 2.0;
- Поддержка OpenVG 1.1.
Контроллеры памяти:
- Мультипротокольный контроллер динамической памяти;
- Контроллер памяти с шириной шины в 32 или 64 бита с поддержкой DDR4, DDR3, DDR3L, или LPDDR3 памяти и 32-битный интерфейс для LPDDR4;
- Поддержка ECC для 32-битного и 64-битного режима работы;
- Адресное пространство до 32GB;
- Интерфейсы для статической памяти eMMC 4.51, NAND с поддержкой ONFI3.1 и SPI/QSPI интерфейс для подключения NOR Flash;
- Два контроллера DMA, с 8 каналами каждый и поддержкой Memory-to-memory, memory-to-peripheral, peripheral-to-memory и scatter-gather транзакций.
Также на борту имеется поддержка последовательных трансиверов:
- Четыре PS-GTR трансивера с поддержкой скорости в 6.0 Gb/s;
- Поддержка SGMII tri-speed Ethernet.
Очень богат данный чип на выделенные периферийные устройства ввода-вывода и интерфейсы:
- PCI Express Gen2 x1, x2, или x4 с Root complex и End Point конфигурации;
- Serial-ATA 3.1 (SATA) с поддержкой скорости передачи данных в 1.5, 3.0, и 6.0 Gb/s
- Display Port контроллер с поддержкой рейтов до 5.4 Gb/s и двумя Tx-линиями, без поддержки Rx поддерживающий режимы работы 4K@30Hz или 1080P@60Hz;
- Четыре 10/100/1000 Ethernet MAC и интерфейсами GMII, RGMII, SGMII;
- Два контроллера USB 3.0/2.0 для Device/Host/OTG с поддержкой до 12 эндпоинтов и Super-speed, high- speed, full-speed, и low-speed режимов работы;
- Два CAN 2.0B совместимых интерфейса;
- Стандартные UART, SPI, I2C, RTC, WatchDog контроллеры;
- 78 MIO (PS) и 96 EMIO (PL) выводов GPIO.
Для реализации интерконнекта используется ARM AMBA AXI4-based контроллер. Ну и многое другое.
❯ Область программируемой логики PL
Тут тоже очень богато. Перечислю доступные ресурсы, предоставляемые ПЛИС:
- 746550 System Logic Cells;
- 682560 CLB Flip-Flops;
- 341280 CLB LUTs;
- 42660 Logic Array Block;
- 11.3 Mb Distributed RAM;
- 744 Block RAM Blocks;
- 26.2 Mb Block RAM;
- 112 UltraRAM Blocks;
- 31.5 Mb UltraRAM;
- 3528 DSP Slices;
- Clock Signal Management (CMT) 4 штуки;
- 24 GTH Transceiver 16.3Gb/s;
- Transceiver Fractional PLLs 12 штук;
- DSP блоки с 27 x 18 знаковыми вычислениями, 48-битным adder/accumulator и 27-битным pre-adder.
И многое другое, что можно очень долго перечислять…
❯ SoM и его содержимое
Теперь настало время препарировать схематик SoM-а и подробнее посмотреть, что на нём есть и какие компоненты установлены. Начнем с того, что он состоит из 4-ёх 120 пиновых коннекторов, которые установлены так, чтобы SoM было невозможно воткнуть на плату в неправильном положении. Освежим в воспоминаниях картинку:
![](https://habrastorage.org/webt/ue/vh/hq/uevhhq2dfgp4sffkexnh4r0qpua.png)
Теперь подробнее рассмотрим верхнюю часть SoM-а:
![](https://habrastorage.org/webt/tk/wn/nt/tkwnntvmn6gprequvdjbdfziu84.png)
❯ Питание на SoM
Для того, чтобы сформировать набор разных напряжений, на SoMе установлен PMIC-котроллер TPS6508640RSKR в связке с большим количеством обвязки в виде линейных, синхронных, импульсных преобразователей и большого числа пассивных компонентов:
![](https://habrastorage.org/webt/p8/s1/w0/p8s1w0kx2fu7enq6rwszqftwsqs.png)
В целом всё достаточно просто, потом можете посмотреть самостоятельно схематик и сделать свои выводы.
❯ Тактирование на SoM
На SoM установлен основной осциллятор 33.3333 MHz и низкочастотный генератор 32.768 kHz для RTC:
![](https://habrastorage.org/webt/zw/ug/kh/zwugkhaij-pico62q1v_j0rtxf4.png)
И дополнительно на SoM имеется генератор дифференциального тактового сигнала в 200MHz:
![](https://habrastorage.org/webt/lo/b0/um/lob0umthhqjgf-xynmk8qqwaxa8.png)
В целом достаточно стандартно и под стать всей периферии и сложности самой платы.
❯ Оперативная память на SoM
На SoM-е установлено 6 чипов DDR4, часть из которых подключена к PS-части, а другая часть к PL. Если быть несколько конкретнее то:
- К PS-части подключено 4 чипа DDR4 MT40A512M16LY-062E общим объёмом 4 Гбайта c 64-битной шириной полосы пропускания;
- К PL-части подключено 2 чипа DDR4 MT40A512M16LY-062E общим объёмом 1 Гбайт с шириной пропускания в 32 бита.
Максимальная рабочая скорость DDR4, подключенной к PS, может достигать 1200 МГц со скоростью передачи данных в 2400 Мбит/с. Подключается эта память к интерфейсу памяти BANK504 PS.
Максимальная скорость DDR4 SDRAM, подключенная к PL, также может достигать 1200 МГц с такой же скоростью передачи данных. И подключается эта память к BANK64 в PL.
❯ Постоянная память на SoM
Если рассматривать постоянную память, на SoM установлено следующее:
- eMMC MTFC8GAKAJCN-4M объемом 64 Гбайта;
- QSPI Flash MT25QL512ABB1EW9-0SIT объёмом 64 Мбайта, подключенный к QSPI0 PS-части;
- QSPI Flash MT25QL512ABB1EW9-0SIT объёмом 64 Мбайта, подключенный к QSPI1 PS-части;
- I2C EEPROM 24LC04B-I/SN объёмом 4 Кбит.
❯ Содержимое отладочной платы
Как я уже упоминал выше, плата состоит из двух основных компонентов – SoM c Zynq и несущей платой, которая предоставляет возможность подключения периферийных устройств и сетевых подключений.
Перечислю все основные возможности, которые предоставляет несущая плата:
- PS High Speed интерфейс PCIe Gen2 x4 с интерфейсом M.2;
- 2 разъема USB3.0 и 2 разъема USB 2.0;
- 2 разъема SATA 3.1
- mini-DisplayPort с возможность передачи 4K@30Hz или 1080P@60Hz;
- PS Gigabit Ethernet;
- PL Gigabit Ethernet;
- SD/SDIO интерфейс для подключения microSD карт;
- 2 UART microUSB интерфейса для подключения к PS и PL
- 2 CAN 2.0B интерфейса;
- 2 RS-485 интерфейса;
- MIPI-интерфейс;
- FMC-интерфейс, к которому можно подключить Alinx FMC модули;
- PL Ethernet 12.5Gb/s x16, идущие на порта для подключения SFP+;
- Температурный сенсор LM75;
- Real Time Clock с батарейным держателем;
- 40 пиновый GPIO интерфейс;
- 4 LED;
- 1 кнопка сброса и 2 пользовательских кнопки.
Помимо этого на плате имеется служебный переключатель для выбора источника загрузки:
![](https://habrastorage.org/webt/lo/b0/um/lob0umthhqjgf-xynmk8qqwaxa8.png)
Фото переключателя на плате:
![](https://habrastorage.org/webt/2l/e3/zs/2le3zso2mztmogemlgpbxxvapqq.png)
А также имеется 6 SMA интерфейсов для подключения GTH-трансивера.
Проанализировав состав платы, я накидал схему, отображающую всё, что есть на плате:
![](https://habrastorage.org/webt/ky/_c/ae/ky_caefuip7a-hciahulkb992rk.png)
По порядку рассмотрим каждый из пунктов чуть подробнее.
❯ Питание
Плата запитывается от 12В через самый обычный штыревой разъём, подойдёт любой качественный блок питания с выходным напряжением 12В и мощностью 36W.
![](https://habrastorage.org/webt/ff/64/_u/ff64_u0dmaxagomtpaiv4cbbnw0.png)
Помимо этого на плате имеется несколько преобразователей из 12V в целевые напряжения. Из 12V в 5V:
![](https://habrastorage.org/webt/bt/wx/cr/btwxcrr13semroozzedma3_krug.png)
Из 12V в 3.3V:
![](https://habrastorage.org/webt/ld/iw/bf/ldiwbfniv9y7w9psy_j5o_avl1a.png)
И из 12V в 1.8V:
![](https://habrastorage.org/webt/mx/zt/ex/mxztexnnwxnz5xv8wu-mv56hkpc.png)
Плюсом к этому на плате имеются и тест-поинты для контроля качества питания.
❯ Источники тактирования
Очень интересным компонентом на плате является программируемый источник тактовой частоты Si5332BD11025-GM2, который позволяет генерировать весь необходимый спектр тактовых частот для всей необходимой периферии:
![](https://habrastorage.org/webt/mh/qd/0b/mhqd0bgpeh5bvm4nuaov18ad0-i.png)
❯ JTAG разъем
Для отладочных целей на плате имеется стандартный для всех отладок JTAG-интерфейс для подключения отладчика:
![](https://habrastorage.org/webt/nq/5j/2r/nq5j2rms9ihclh5naiqwtggc9cc.png)
❯ Сеть
Данная плата также предоставляет обширные возможности для реализации сетевых сценариев. В первую очередь обратим внимание на два медных Ethernet-разъема. Первый – подключен к PS-части Zynq. Линии MDIO из раъема идут к PHY Ethernet от Realtek RTL8211F. От PHY к PS идёт подключение через интерфейс RGMII:
![](https://habrastorage.org/webt/s3/qu/so/s3quso8krmuer6oaixjyd7fryso.png)
Второй подключен к программируемой логике по тому же принципу с тем же PHY Ethernet-контроллером:
![](https://habrastorage.org/webt/7s/lp/va/7slpvak-1zju2e9veko3oxc_fv4.png)
Помимо этого на плате установлен разъём для подключения 2-ух SFP/SFP+ модулей. Оба SFP-разъема подключаются к PL-логике устройства:
![](https://habrastorage.org/webt/9p/ic/nh/9picnhortzgytauz6wyf-dzhequ.png)
Помимо этого имеется ещё генератор дифференциального тактового сигнала для работы трансиверов SiT9121AI-2B1-33E125.000000 с выходной тактовой частотой в 125МГц:
![](https://habrastorage.org/webt/u2/z3/l5/u2z3l54qfrnfauryfhwcso8epvo.png)
Помимо вполне стандартных сетевых интерфейсов на плате имеется подключение через SMA-разъемы к GTH-интерфейсам с возможностью передачи данных до 100 Гбит/с:
![](https://habrastorage.org/webt/j-/nf/a9/j-nfa9rsbxehqc8ravjhbuf9onu.png)
❯ Интерфейс FMC
На плате имеется FMC-разъем для подключения большого количества различных модулей, которые я перечислил в начале статьи. Схематик ввиду большого его размера – прикладывать тут не буду. Приведу лишь фото интерфейса:
![](https://habrastorage.org/webt/51/ti/zv/51tizv9shmq4g6ricbcwvu3nqyu.png)
❯ Интерфейсы USB
В части USB-подключений плата также предоставляет целую кучу возможностей. На плате установлен USB3.1 хаб GL3523T-QFN76, который подключен к соответствующей части PS-части Zynq MPSoC:
![](https://habrastorage.org/webt/5h/m3/ve/5hm3vefamud4wfyc3qxxjlrmt9u.png)
К хабу подключены 2 USB3.0 и 2 USB2.0 разъема. Правда, на схеме все 4 почему-то обозначены как USB3.0-разъема:
![](https://habrastorage.org/webt/tc/xm/ku/tcxmkuphlrxyzkx-1bbaxcu7lea.png)
Помимо этого на плате установлен USB2.0 PHY контроллер USB3320C-EZK-TR, который подключен к USB-хабу:
![](https://habrastorage.org/webt/qc/fa/-i/qcfa-i9eg3mvwl2cemvduocov1m.png)
❯ Интерфейс microSD
На плате имеется SD-разъём для подключения внешнего накопителя данных или источника загрузки. Разъём на плате подключается к Zynq, осуществляется через расширитель портов SDIO с преобразователем уровня логического сигнала 1TXS02612RTWR:
![](https://habrastorage.org/webt/oj/hf/md/ojhfmduipjvrizn4kusxhd4aqd4.png)
❯ Интерфейс SATA
Ещё одна интересная возможность, которая предоставляется платой – это возможность подключить до 2-х SATA устройств, будь то SSD или HDD:
![](https://habrastorage.org/webt/4l/6u/6j/4l6u6jxpmmqy9qt1kupqildf1yo.png)
![](https://habrastorage.org/webt/bo/ui/sv/bouisv7tsuk4bswaljllvkefhis.png)
❯ Интерфейс M.2
Приятная особенность платы – наличие M.2 разъёма с ключом М. Сюда возможно подключить любое подходящее PCI-e устройство, например, SSD-диск подходящего форм-фактора:
![](https://habrastorage.org/webt/gx/fg/rb/gxfgrb64lyvc2tgbu-l-ufxhdqi.png)
❯ Интерфейс Display Port
Для подключения внешнего дисплея вместо HDMI на плате использован интерфейс Display Port:
![](https://habrastorage.org/webt/yk/sw/o8/ykswo8wf6jydnegfqmmovh1x58u.png)
![](https://habrastorage.org/webt/i4/if/a_/i4ifa_akurvmqapty-67ffwvogw.png)
![](https://habrastorage.org/webt/y3/x1/9w/y3x19wzhilekfnqbid7n2y0cwck.png)
![](https://habrastorage.org/webt/s_/7p/mx/s_7pmxlh82qbl_zkc1jady2masc.png)
❯ Интерфейс MIPI
Для подключения внешних мультимедиа-устройств, будь то дисплей или камера – на плате предусмотрен интерфейс MIPI:
![](https://habrastorage.org/webt/no/ip/4p/noip4pnxcgxd-f1mkgul2ynpg7c.png)
❯ Интерфейс CAN
В случае, если плата разрабатывается под какие-либо automotive-применения, – выведен интерфейс CAN с подключением в клеммный разъем HT3.96-4P к контроллеру SN65HVD232 через преобразователь логических уровней TXS0102DCU. Сигнальные линии подключаются к PS-части Zynq:
![](https://habrastorage.org/webt/nk/fd/ie/nkfdiembbqh6-nkowbzxg8v2u5s.png)
❯ Интерфейс RS-485
Для промышленных применений на плате реализован вывод интерфейса RS-485 через приемопередатчик MAX3485ESA. Подключается к PL-части Zynq:
![](https://habrastorage.org/webt/ec/dq/sr/ecdqsrixtfcupxxv9_4fd2ibw5m.png)
![](https://habrastorage.org/webt/nw/mx/ud/nwmxudkb7sedlomhc4wewlfdlue.png)
❯ Температурный I2C сенсор
Для случаев, когда потребуется мониторинг внешней температуры, – на плате имеется I2C температурный сенсор LM75DM-33R2, который подключается к PS-части Zynq:
![](https://habrastorage.org/webt/ua/p8/yk/uap8ykugacw4jbucdlbnbz-gjs0.png)
❯ Батарейка
На плате имеется батарейный держатель, который снабжает соответствующий банк питания в PS-части:
![](https://habrastorage.org/webt/rg/a7/4p/rga74pjx_udtvqc9sivasn6fkp8.png)
❯ EEPROM
Помимо всего прочего на плате имеется I2C EEPROM 24LC04 объёмом 4 Кбит, которая подключена к PS-части устройства:
![](https://habrastorage.org/webt/kx/8b/ik/kx8bik2dajps6xk1lmqxhjmm_s0.png)
❯ UART-интерфейсы
Для коммуникации с внешними устройствами и работы с консолью Zynq – на плате имеется два интерфейса UART: первый подключен к PS-части устройства, второй подключен к PL-части устройства. В обоих случаях подключение осуществляется с использованием USB-to-UART конвертера CP2102N-A01-GQFN28R по miniUSB-порту:
![](https://habrastorage.org/webt/qp/5f/ky/qp5fky3fssqtquou9d2xgsiz1pm.png)
К PS-части UART-интерфейс подключается через преобразователь логических уровней 3.3V-to-1.8V TXS0102DCU:
![](https://habrastorage.org/webt/dm/g4/it/dmg4itqjciiim2d5jk6af4n2hzy.png)
❯ Интерфейсы GPIO
В дополнение к широчайшим возможностям отладки – на плате имеется стандартная 40-пиновая гребенка с GPIO-пинами:
![](https://habrastorage.org/webt/4b/mq/we/4bmqwep6ylj8jgznorv43y-fmp4.png)
❯ LED & Buttons
Для того, чтобы реализовать простую индикацию и базовое взаимодействие с пользователем – на плате имеется несколько LED-индикаторов и кнопок.
Первый – индикатор питания 3.3V и второй LED подключен к PS-части:
![](https://habrastorage.org/webt/yi/ze/cn/yizecnbgs0doffranimh-jdzxs4.png)
Имеется второй LED-индикатор, который подключен к PS-части:
![](https://habrastorage.org/webt/wg/pc/5o/wgpc5ocvgohpn3g7fgkydd5roec.png)
Третий LED-индикатор подключен к PL-части:
![](https://habrastorage.org/webt/xy/hb/q_/xyhbq_k7tlplfwsr5vkhuj9ltyo.png)
Четвёртый, служебный, индикатор используется для того, чтобы обозначить, что загрузка bitstream в FPGA прошла успешно:
![](https://habrastorage.org/webt/5d/od/f-/5dodf-ezgzymclgmdmnolhnzznk.png)
Плюсом к этому на плате расположено несколько кнопок. Первая – используется для включения питания платы, вторая – подключена к PL-части, а третья – подключена к PS-части:
![](https://habrastorage.org/webt/5a/kp/qq/5akpqqy6dlte5ut8xqgla15xbpe.png)
![](https://habrastorage.org/webt/v9/gz/kg/v9gzkgfoew3o7suloeo3plcqsx4.png)
![](https://habrastorage.org/webt/4j/u0/iq/4ju0iqtc7kntezwy_hsk4nh66tq.png)
В общем, достаточно стандартный набор. Теперь перейдём к рассмотрению того, что поставляется с платой в части примеров и SDK для работы с платой.
❯ BSP и примеры проектов идущие в комплекте
В комплекте с платой идёт архив размером 7.2 Гбайт, в котором представлено самое подробное описание отладки:
- Механические размеры и dxf-файлы плат;
- Схематики на каждый из компонент;
- Большое количество примеров.
Если просто перечислить набор примеров, то получится примерно следующий список.
Примеры для работы с периферией из ПЛИС и baremetal-приложений в PS-части:
- Подключение LED к PL-части с параллельным использованием логического анализатора ILA;
- Использование PLL в PL-части для генерации различных частот;
- PS RAM;
- ROM;
- FIFO;
- Кнопки и GPIO;
- PWM;
- UART PL;
- RS485 PL;
- PL DDR4 RAM;
- HDMI out (с использованием FMC-платы);
- HDMI in (с использованием FMC-платы);
- Примеры с семисегментным дисплеем;
- Ethernet BER тест;
- Пример использования GTH-интерфейса;
- PS Hello World;
- PS RTC;
- PS MIO;
- PS UART;
- PS CAN;
- PS I2C;
- PS Display Port;
- PS SD Card;
- PS Network;
- PS Network with remote applications;
- PS Sysmon;
- PS EMIO;
- PS AXI GPIO;
- PS RS485;
- PL Ethernet;
- Custom PWM IP;
- Dualcore AMP;
- FreeRTOS;
- PL read write PS DDR;
- BRAM test;
- DMA Loopback;
- AD7606 DMA;
- AD9708 DMA;
- AD9280 DMA with Display Port;
- AD9238 DMA with Display Port;
- AD7606 DMA with Display Port;
- AD9767;
- AN5642 + SD Card;
- AN5642 + LwIP;
- AN5641 + MIPI + Displya Port;
- LCD + Touch;
- AD9280 + LwIP;
- AD9238 + LwIP;
- AD7606 + LwIP;
- LED + QSPI + SDCard.
В комплекте также множество примеров работы с периферией из Linux:
- Сборка petalinux и куча примеров для него;
- Сборка драйверов для Linux;
- Драйверы для Char-устройств;
- Device Tree;
- Pinctl GPIO подсистема в Linux;
- Concurrent system calls;
- Чтение GPIO;
- Таймеры;
- Прерывания;
- Система ввода/вывода;
- Неблокируемый ввод/вывод;
- Асинхронный ввод/вывод;
- Работа с платформой с Device Tree;
- I2C;
- USB;
- SPI;
- UART;
- Работа с блочными устройствами;
- Работа с сетевыми устройствами;
- DMA Loop;
- Работа с тачсенсорами;
- Работа с LCD-дисплеями;
- Работа с ADC AD9238 и AD7606 в Linux;
- Работа с DAC AD9767 из Linux.
В теории по каждому из этих примером можно было бы написать целую книгу или цикл статей. Данный BSP я выложил в своем телеграм-канале по Zynq.
❯ Заключение
Долго думал, чем завершить данный обзор. Плата, конечно, стоит очень дорого и обычному энтузиасту недоступна, но объём возможностей и ресурсов, которые она предоставляет в итоге, – точно соответствует её цене. Мне показалось интересным заглянуть за пределы доступного, поковырять что-то недоступное и предоставить это общественности. Возможно, чуть позже напишу статью по теме сборки Linux под Ultrascale+ потому что там своих граблей оказалось навалено невероятно много и всё оказалось не настолько тривиально, как в Zynq-7000. И есть пара кейсов на рассмотрение, связанных с PL Ethernet и AXI ENET, но это уже предмет отдельного разговора.
Спасибо, что дочитали до конца. До встречи в следующих статьях! 🙂