Однажды, вечером, в очередной раз прочитывая чатик в телеграмме по теме 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 мини-компьютером.

Комментарии (26)


  1. Albert2009Zi
    00.00.0000 00:00
    +1

    С возвращением! То, что на новой плате JTAG встроенный это хорошо. Я, вдохновившись серией Ваших статей, купил QMTech и стал осваивать. Но одна особенность удивила. После сборки и заливки прошивки всё работает. Но если отключить JTAG программатор от платы, то прошивка работать перестаёт. Т.е. отдельно, без подключенного JTAG, плату от QMTech использовать невозможно. Что я делаю неправильно?


    1. megalloid Автор
      00.00.0000 00:00
      +1

      Очень странная история. Я правда не припомню, случаев когда я бы использовал QMTech без программатора, обычно он всегда был нужен. Сейчас буквально за минуту забросил демо-проект идущий с платой - и включил плату к HDMI-монитору и все запустилось. Может где-то изменяется приоритет загрузки и плата просто начинает ждать загрузку по JTAG. Надо гуглить и искать материалы на эту тему. Готового ответа у меня, к сожалению нет(((


    1. smoluks4096
      00.00.0000 00:00

      1. Проверить джамперы

      2. Заливка в spi флешку это отдельная кнопочка


      1. Albert2009Zi
        00.00.0000 00:00

        Кнопочки на QMTech есть, а вот джамперы???

        Зы ладно, буду гуглить. Думал, что есть готовый ответ. Спасибо за ответы.


        1. Nikeware
          00.00.0000 00:00

          ONKE - два переключателя на плате. Это не то, что вы ищите? С обратной стороны на плате прямо и написано откуда он будет грузиться.


          1. Albert2009Zi
            00.00.0000 00:00

            Вот схематик на плату:
            https://esys.ir/images/img_Item/2401/Files/Bajie_Board_User_Manual(Hardware)_V01.pdf
            Вот статья с огоромным фото платы:
            https://habr.com/ru/post/559946/
            Где там переключатели ONKE??? (Можете страницу из документации написать, можете просто по фотке сказать "возле такой то микросхемы или разъёма...").


      1. megalloid Автор
        00.00.0000 00:00
        +1

        На QMTech нет своей onboard flash. Там загрузка только с SD Card


  1. raf329
    00.00.0000 00:00

    По соотношению функционал/цена лучшее что есть на рынке? Хотел QMtech c 7020 заказать а нет уже у них в продаже. Myir остается


    1. megalloid Автор
      00.00.0000 00:00

      Кажется, что да. Это лучший вариант, я периодически погугливаю на Али чего так появляется для Ultrascale и 7000-ных


      1. raf329
        00.00.0000 00:00

        1. gosha-z
          00.00.0000 00:00

          А можно полюбопытствовать, чем это функциональность Z-Turn ниже, чем у этой платы? По мне так наоборот...


          1. megalloid Автор
            00.00.0000 00:00

            Да тут кому что, не сравнивается в лоб


  1. Gudd-Head
    00.00.0000 00:00
    +2

    LED-светодиодов

    Светоизлучающих диодов - светодиодов?


  1. ovn83
    00.00.0000 00:00
    +1

    https://youtu.be/I7Awfnm8Etk

    Игрался год назад, плата от майнера, тот же чип, в районе 2,5 тыс стоило.

    Бюджетного Zynq UltraScale+ пока не нашёл.

    HDMI много места в этом чипе займёт, поднимал его тоже.


  1. Rezzet
    00.00.0000 00:00
    -2

    Может чего не понимаю? Это же FPGA и он больше нужен для отладки логики аппаратных блоков, зачем на нем делать "полноценный мини-компьютер на Linux c выводом изображения в HDMI и подключением клавиатуры по USB" для мини-компьютеров есть малина, оранж и тысячи их. Честно сказать мало поружен в тему FPGA, не сильно понимаю зачем он нужен, при текущей цене и быстродействие различных контроллеров, разве не проще все просто запрограммировать?


    1. megalloid Автор
      00.00.0000 00:00
      +5

      Это и FPGA, и двухъядерный ARM. Они между собой соединены интерконнектом, и такой связкой можно разные комплексные задачи решать максимально эффективно. Плюсом параллельные вычисления, реалтайм задачи и многое другое не доступны на машине и им подобных.


      1. Rezzet
        00.00.0000 00:00

        А какие? Просто действительно FPGA это тема которую обошел стороной, мне ничего в голову не приходит кроме как запечь в FPGA нейросетку и быстро распознавать пространство, предметы, но опять же, может на малине мощности GPU не хватит, но топовые спапдраконы и апл бионики на GPU нейронки с какой-то космической скоростью гоняют + там нейроблоки разные.

        Пишу не с целью покритиковать и потролить, действительно интересно что с их помощью лучше делать.


        1. ovn83
          00.00.0000 00:00

          Самое простое применение, это оперативно менять интерфейсы.


        1. SergeyMax
          00.00.0000 00:00
          +3

          Есть простое эмпирическое правило, которое меня никогда не подводило: если вы не знаете, для чего вам что-то нужно, то оно вам 100% не нужно.


        1. dsx87
          00.00.0000 00:00

          Пусть меня поправят знающие люди если не прав. Я вижу такие применения этим чипам:

          • Прототипирование цифровых устройств (очевиднейший кейс)

          • Устройства с требованием реакции в реальном времени

          • Цислодробильня в реальном времени (нейронки, ЦОС) с приемлемым энергопотреблением

          • Секретность устройств(военщина)

          • Устройства с возможностью последующих изменений хардварной логики

          • Небольшие партии устройств

          • Устройства, где цена не важна

          Т.е. мне кажется основные клиенты это: медицина, автопром, военка, космос


          1. Rezzet
            00.00.0000 00:00

            "Прототипирование цифровых устройств" Разве малинка с гребенкой выводов не позволяет делать то же самое или речь о прототипирование очень маленькой микросхемы типа датчика который должен быть очень дешевым?

            "Устройства с требованием реакции в реальном времени" Тут все понятно, действительно не подумал.

            "Цислодробильня в реальном времени (нейронки, ЦОС) с приемлемым энергопотреблением" GPU разве не лучше будут?

            "Секретность устройств(военщина)" Речь как понимаю опять же о прототипирование маленького микроконтроллера который к примеру кодирует и раскодирует речь в реальном времени.

            "Устройства с возможностью последующих изменений хардварной логики" то есть FPGA может работать как алгоритм выполненный в кремнии, без различного рода задержек, фактически из него можно делать программируемый сигнальный процессор?

            Стало чуть понятнее, спасибо!


            1. dsx87
              00.00.0000 00:00
              +1

              Разве малинка с гребенкой выводов не позволяет делать то же самое или речь о прототипирование очень маленькой микросхемы типа датчика который должен быть очень дешевым?

              Да, речь о чипах: конвертер с одной шины на другую, какой-нибудь быстрый контроллер и т.п.

              GPU разве не лучше будут? 

              GPU требуют обвязки (как минимум память оперативная и постоянная) и работают на более высоких частотах. Энергопотребление у них выше, плюс обвязка усложняет разводку платы, а следовательно и цену. Для серьезной работы и FPGA требует внешнюю память, но иногда можно обойтись встроенной в чип. И в целом схема будет проще и не такой прожорливой. Но все зависит от конкретной задачи

              Речь как понимаю опять же о прототипирование маленького микроконтроллера который к примеру кодирует и раскодирует речь в реальном времени

              Не совсем. речь идет не о прототипировании, а об устройстве в целом. Ведь не всегда можно заказать на гос заводах кремний, который удовлетворяет требования проекта. Если взять ваш пример, то это скорее зашифрованная система связи. Выдавать такое на заказ за границу нельзя да и смысла в этом мало: если шифр поменяется или обнаружится ошибка где-то — легко перешить железо без паяльников и физической замены станций

              то есть FPGA может работать как алгоритм выполненный в кремнии, без различного рода задержек, фактически из него можно делать программируемый сигнальный процессор?

              Да, это одно из основных применений данных устройств. В последнее время развивается так называемый HLS (high level synthesis): это когда вы пишите алгоритм на обычном ЯП, а потом он синтезируется в железо. На данном этапе оно совсем неэффективно в плане расхода ресурса чипов, но прогресс не стоит на месте, да и чипы всё дешевле


  1. HOMPAIN
    00.00.0000 00:00

    Что это? Это одноплатник или отладочная плата для МК? Зачем тут так нужен JTAG?


    1. megalloid Автор
      00.00.0000 00:00

      Это отладочная плата для Zynq, из которой вполне себе можно слепить одноплатник :)

      JTAG в случае Zynq - основной интерфейс для отладки, запуска firmware и других задач подобного плана.


  1. buldo
    00.00.0000 00:00

    Пока не шарю в fgpa, поэтому возможно глупый вопрос.

    В fgpa часть этого zynq влезет hdmi и декодер h264?


    1. megalloid Автор
      00.00.0000 00:00
      +1

      Быстрый гуглёж на тему показал, что такая схема будет практически под завязку задействовать ресурсы ПЛИС и часть задач по кодированию должна быть перенесена в PS на одно из ядер ARM.