Однажды, вечером, в очередной раз прочитывая чатик в телеграмме по теме Embedded + FPGA, я увидел обсуждение очередной отладочной платы с Zynq 7000 на борту. Описание выглядело очень любопытно. Полистав документацию на плату, посмотрев описание - я заинтересовался еще больше, вспомнил сразу про ограничения платы QMTech и понял, что данная отладка лишена всех тех недостатков, что были у QMTech. Сразу в голове созрел контент-план и понимание того, что изучая возможности этой платы можно написать много интересных статей для новичков :) Я тут же заказал эту плату, и решил, что пришло время вернуться к изучению возможностей отладочных плат с Zynq. И первым шагом на пути моего возвращения в написание статей я решил сделать небольшой обзор этой платы с рассказом о том, почему она меня заинтересовала, и что в ней интересного. Всем любопытным - добро пожаловать!
Распаковка и комлект
В момент распаковки посылки порадовала удобная упаковка, которую можно использовать для переноса платы и не бояться сбить какие-нибудь SMD-компоненты:
Комплект поставки тоже порадовал:
В комплекте было:
плексигласовое защитное стекло;
пластмассовые ножки-стойки;
Type-C USB кабель;
переходник для Type-C USB;
и сама отладка бережно упакованная в антистатический пакет;
Внешний вид платы сверху:
И вид платы снизу:
Очень порадовало, что пины гребенки все подписаны шелкографией и не придется при каждом случае лезть в схематик.
После сборки отладка выглядела очень приятно:
Итак, перейдем к рассмотрению функциональных возможностей платы.
Что там на борту?
Лучше всего, конечно же, описывает содержимое этой отладки изображение, представленное на сайте продавца на Aliexpress. Продублирую её здесь и рассмотрим ее чуть подробнее:
Первое, что бросается в глаза - наличие JTAG-программатора прямо на борту устройства и отсутствие необходимости в приобретении дополнительного внешнего девайса, как это было с платой QMTech.
Вторым пунктом для себя я отметил наличие прямо на плате 5 LED-светодиодов, 4 из которых подключены к программируемой логике и 1 подключен к процессорной системе.
Далее увидел 3 пользовательские кнопки, 2 из которых заведены в PL, а одна в PS. Тут можно сразу представить применение в самых разных сценариях.
На плате имеется интересный переключатель, который отвечает за выбор источника загрузки. Доступны три источника загрузки - JTAG, 16 Мбайт QSPI Flash, и стандартный способ - с SD Card. Флешка на шине QSPI, к слову, в корпусе SOIC-8 и ее можно потом перепаять на более емкую т.к. 16 Мбайт может быть не достаточно для крупных проектов. Плюсом, можно будет потом показать, каким образом загрузочный образ можно прошить на QSPI Flash и использовать его в качестве основного источника загрузки.
Отдельно можно отметить наличие на плате I2C EEPROM 2 Kbit памяти, которая подключена к PL-части:
Далее на плате отдельно установлен OLED-дисплей разрешением 128х64 пикселя. Информативность некоторых китайских схематиков оставляет желать лучшего и придется изучать отдельно способы работы с ним:
Вероятнее всего реализован данный дисплей на базе графического I2C-контроллера SSD1306. Он подключен к PL-части Zynq и вероятнее всего, так же как и для EEPROM - нужен будет отдельный реализованный I2C-контроллер.
Слава Богам, что на этой плате выведен второй контроллер SDIO на второй разъем для SD Card и не придётся для подключения SDIO-устройств городить протаскивание сигналов через EMIO. Всё это я описывал в своей предыдущей статье.
На картинке из магазина допущена ошибка, указывающая, что якобы второй слот подключен к PL-части Zynq, на самом деле SDIO1 подключен к PS-части.
Ключевым плюсом данной отладки является наличие USB Host Controller выведенного на USB Type-C разъем. Это было той самой проблемой на плате от QMTech, которая на корню губила идею сделать полноценный мини-компьютер на Linux c выводом изображения в HDMI и подключением клавиатуры по USB. Скорее всего, раскрытие именно этой темы будет отправной точкой для следующей статьи.
Дополнительные, но в сущности не критичные плюшки на плате так же порадовали:
внешний 50 МГц осциллятор, подключенный к PL
Gigabit Ethernet PHY подключенный к PL-части (в дополнение к PS-ному);
HDMI-разъем для вывода изображения. К сожалению, без внешнего HDMI companion chip, который используется в качестве ESD, TVS защиты и обеспечивает безопасную работу с HDMI, типа TPD12S016. Вероятно, просто не хватило места на плате;
34 GPIO-пина, выведенные на PLS-гребенку для разных применений, подключенных к PL-части Zynq;
2 GPIO-пина MIO7 и MIO8, которые при необходимости и некоторой хирургической доработке платы можно задействовать с PS-части;
Ну и самое основное, что есть на моем варианте платы:
сердце платы - Zynq XC7Z020-CLG400
DDR3 SDRAM память объемом в 512 Мбайт MT41J256M16
Подводя итог
Заканчивая обзор на эту отладочную плату, я для себя уже сформировал целый список разнообразных задач и кейсов, по которым в последующем можно было бы создавать полноценные статьи с описанием того, как я решал те или иные задачи. В общем, ждите обновлений от меня в ближайшем будущем и я буду рад снова вернуться к вам с новыми интересными материалами :)
P.S. Для затравочки - планирую таки вывести фреймбуфер консоли Linux в HDMI и подключить клавиатуру в USB, чтобы платой можно было пользоваться как standalone мини-компьютером.