После получения большого количества отзывов и комментариев на обзор платы на Cyclone IV из части из них четко прослеживались мысль: “А почему Cyclone IV, это же старый хлам!”. В ответ на это я решил сделать обзор на что-нибудь современное, функциональное и очень недорогое. И такой вариант нашелся — это отладочная плата Tang Primer 20K на ПЛИС от небезызвестной компании Gowin. На неё я и сделаю обзор в этой статье и расскажу про примеры проектов, доступных для этой платы.
Кого заинтересовала тема — добро пожаловать под кат! =)
❯ Что это такое и зачем оно?
Tang Primer 20K — это SoM-модуль в формате SO-DIMM, с ПЛИС Gowin GW2A-LV18PG256C8/I7 в качестве центрального элемента, который поставляется (на выбор) с двумя интерфейсными платами, побогаче и попроще. В моем обзоре я расскажу про ту, что побогаче — Dock ext-board.
Перечислю основные характеристики SoM:
- Gowin GW2A-LV18PG256C8/I7;
- 128M DDR3 на SoM;
- 32 Mbits NOR Flash;
- JTAG + UART порт для программатора;
- Слот для установки SD-Card;
- 8-пиновый разъем для SPI-дисплея;
- Доступное количество I/O-пинов — 177 шт.
Основные характеристики Dock-ext board:
- RGB565 40P FPC Connector для подключения дисплея с RGB-интерфейсом, например такого;
- 24P FPC Connector для подключения CMOS камеры с интерфейсом DVP;
- 10P FPC разъем для подключения микрофонов;
- 4P FPC разъем для подключения тач-сенсора;
- 4 интерфейса PMOD;
- 3.5mm headphone Jack с драйвером LPA4809MSF;
- 5-пиновый DIP switch;
- 2-позиционный переключатель для определения функции USB (Host/Device);
- USB type-C разъем для соединения JTAG-отладчика c ПК;
- USB type-C разъем с USB3317 в качестве USB PHY-контроллера;
- Антенна на 2.4ГГц диапазон;
- 6 кнопок;
- 6 LED;
- 1 RGB LED WS2812;
- HDMI-интерфейс;
- Ethernet-интерфейс c PHY Realtek RTL8201F.
Давайте детально рассмотрим с каким комплектом поставляется эта плата и что же там есть на плате.
К слову, всю интересующую вас информацию можете найти на официальном сайте проекта.
❯ Комплект поставки
Начнем, уже традиционно с вопроса о комплекте, как это всё было упаковано и где купить (иначе зачем бы этот обзор еще был бы нужен, верно?). С первоначальным описанием и ценой вы можете ознакомиться на
сайте продавца. Для работы с данной отладкой идёт сразу все необходимое. Нет нужды докупать программаторы и провода:
- SoM в SO-DIMM форм-факторе с FGPA;
- Материнская плата с необходимым минимумом интерфейсов, кнопок, индикаторов;
- Кабель USB-A — type-C;
- Переходник с USB-A Female — type-C, для подключения к USB-Host внешних устройств;
- 8-пиновый переходник на PLS-female с платы SoM для подключения внешнего программатора;
- Две миниатюрных перемычки для включения\выключения BL702 (подробнее ниже);
- Жесткий пластиковый бокс для переноса платы.
Небольшое количество фотографий с распаковки:
Общий вид материнской платы:
SoM-модуль:
При внешнем осмотре нет ни следов флюса, ни следов пайки. Запаяно все качественно, без косяков и следов кривого монтажа.
Ну и фото мелких аксессуаров:
❯ Немного про SoM
В качестве центрального ядра, как я уже писал выше, используется ПЛИС от Gowin
GW2A-LV18PG256C8/I7. Среди его ключевых характеристик можно выделить следующие:
Общий вид SoM с ключевыми элементами:
Также на SoM есть
SDRAM DDR3 128MB (1Gbit) память. В моем случае это SK Hynix H5TQ1G63EFR (13 row x 10 col x 8 banks x 16 bits). SpeedGrade памяти определить не удалось по гравировке на чипе, но судя по упомянутой в Schematic на SoM DDR-памяти IMD128M16R39CG8GNF-125 — доступен режим работы DDR-1600.
Помимо DDR-памяти на SoM еще располагается
SPI Flash W25Q32JVS:
В качестве дополнительных опций на SoM-е доступны две дополнительные опции. Первая — это слот для установки
microSD карт:
И вторая опция — разъем для подключения
SPI LCD:
Для тактирования ПЛИС — установлен
27 МГц генератор:
Если не хочется использовать программатор, который установлен на материнской плате — SoM можно прошить внешним программатором подключившись к 8-пиновому разъему через переходник, идущий в комплекте:
ВНИМАНИЕ! Тут мне следует сделать очень важное предостережение. Подключение программатора к этим пинам, переключение кабелей программатора стоит делать только при полном отключении программатора и платы от питания т.к. неоднократно замечалось, что JTAG в Gowin очень «нежный» и может выйти из строя!
Речь идет вот об этом разъеме на SoM, рядом с которым находится разъем для подключеня SPI LCD и тест-поинты:
Для проверки работоспособности DC-DC преобразователей разработчики заботливо вывели 8 тестовых поинтов. Буду надеяться, что они вам не пригодятся 🙂:
❯ Материнская плата Dock-ext
Перейдем к рассмотрению возможностей предоставляемых материнской платой:
❯ Питание платы
Давайте перейдем к схематику, посмотрим, что на материнской плате. Кажется, что обзор получится объемным 🙂 и начнем с питания.
Плата может запитываться со штыревого входа с входным напряжением 6-12 В:
Преобразованием 12В в 5В занимается
DC Buck Converter EUP3458VIR1:
Есть светодиодная индикация о том, что присутствует выходное напряжение с преобразователя.
Второй вариант обеспечить плату питающим напряжением: два type-C разъема. Один предназначен для
USB-OTG, второй — разъем для подключения
USB-JTAG:
Также есть
светодиодная индикация о том, что на плате присутствует напряжение в 5 В.
То есть при подключении питания к плате загорается один из вариантов светодиодной индикации для удобной диагностики, что всё с платой нормально или она не работает.
❯ JTAG-программатор на BL702
Ядром JTAG-программатора на плате является микроконтроллер BL702 — 32-разрядный процессор RISC-V от Bouffalo Labs. Полистав
базовое описание на этот SoC, я весьма был удивлен, что у этого МК есть еще и 2.4GHz RF transceiver c поддержкой IEEE 802.15.4 MAC/PHY, Bluetooth 5.0 LE и Zigbee 3.0. Но обо всём по порядку.
Основное назначение этого чипа и идущего по умолчанию ПО в нём — обеспечить прошивку ПЛИС микропрограммой, которую по итогу генерирует IDE. Но если у вас есть внешний программатор — его можно подключить через 8-пиновый разъем на самом SoM-модуле, а этот BL702 использовать для нужных вам целей: можно хоть USB Device сделать, хоть IoT-устройство под управлением Linux, который можно завести на ПЛИС.
Для отключения BL702 даже предусмотрена соответствующая перемычка подписанная на плате как 702_EN:
Прошивка заливается по UART на BL702 через USB-порт и для ввода BL702 в режиме Firmware Update так же предусмотрена кнопка, которая расположена в аккурат над перемычкой:
Неизвестно, можно ли через UART-пины управлять в последующем из ПЛИС BL702, но кажется что теоретически это возможно:
Также у BL702 есть два пользовательских светодиода, которые можно использовать в своих целях:
Особенно приятно было увидеть, что на что на плате всё-таки имеется чип-антенна и небольшая цепь согласования для пользования BL702 в качестве радиоустройства:
❯ GPIO-пины
На плате присутствует 4 PMOD разъема для подключения внешних устройств или какой-нибудь периферии, которые прямо шелкографией подписаны на оборотной стороне платы. Так же для GPIO предусмотрен разъем, который также подходит для подключения внешних микрофонов (подписан как MIC ARRAY на плате):
❯ Кнопки и светодиоды
Тут разработчики заложили кажется вполне оптимальное количество
кнопок и
LED-ов. Для пользовательских операций доступно 4 из 5 кнопок:
Первая кнопка S1 отвечает за сброс ПЛИС (почему-то он у меня на плате не срабатывал), остальные можно использовать для пользовательских кейсов:
Помимо кнопок доступен
5-разрядный DIP-переключатель:
Первый переключатель используется для переключения источника загрузки ПЛИС, остальные 4 из 5 переключателей можно использовать в пользовательском сценарии:
С LED-индикаторами тоже не все так просто. На плате их установлено 6 штук, из них доступно для пользователя только 4, т. к. первые два используются для индикации FPGA_DONE и FPGA_READY:
При программировании Blink-примера, LED-светодиоды наоборот тухли при когда FPGA-прошивка была загружена и работала. С этим тоже предстоит разобраться:
В дополнение к обычным светодиодам на плату еще разместили RGB-светодиод
WS2812B:
❯ HDMI интерфейс
На плате расположен
HDMI-разъем, через который можно вывести изображение на внешний монитор, телевизор и прочее. Всё выглядит достаточно стандартно, линии данных, Hot Plug Detect, SDA/SCL. Т. к. я практически не работал с HDMI — тут я мало чего могу вам рассказать.
❯ USB 2.0 PHY
На плате имеется
USB-контроллер Microchip USB3317 с поддержкой как USB Device так и USB Host сценариев. Для переключения между этими режимами на плате предусмотрен соответствующий переключатель. Всё выглядит достаточно стандартно и добавить тут, в целом, тоже нечего.
❯ Ethernet 10/100M
Приятным дополнением ко всему, что было перечислено выше является интерфейс Ethernet, с поддержкой 10/100 Half-Full Duplex. На плате установлен
Ethernet PHY, являющийся по сути надежным и проверенным стандартом — Realtek
RTL8201F-VB-CG.
На изображении ниже — линии RMII идущие в ПЛИС:
❯ Audio DAC + Headphone AMP
На плате для разнообразных сценариев, в которых нужен вывод звука, расположены несколько интересных микросхем.
Первая — двухканальный 16-битный ЦАП от Princeton Technology PT8211-S:
На правом и левом выходных аналоговых каналах установлены просты Low-Pass простые постфильтры второго порядка подавления остаточных шумов с частотой среза примерно около 40 кГц:
Вторая микросхема — стерео Headphone-усилитель от LowPowerSemi LPA4809MSF, который по заявлениям производителя может дать до 140 mW на канал с 16 Ω нагрузкой с THD 0.1% при питании от 5 В.
❯ Интерфейсы для подключения Display и DVP-камеры
Порадовало наличие на плате 40-пинового разъема для подключения внешнего
RGB24 дисплея и 24-пиновый
DVP-интерфейс для подключения CMOS сенсора.
Подошел дисплей, о котором я рассказывал в прошлой статье, и мне удалось запустить пример из набора Sipeed:
А вот с DVP-камерой из предыдущей статьи такое не получится т.к. гибкого шлейфа нет, и PMOD-интерфейс не подходит. Возможно закажу себе отдельный модуль с Aliexpress который совместим с этой платой.
❯ Touch Panel
На плате присутствует разъем для подключения внешнего тач-контроллера, который можно было бы использовать вместе с дисплеем:
❯ Доступная документация и примеры
Отдельно стоит отметить, что для данного отладочного набора есть всё что нужно в открытом доступе.
- После простой регистрации на сайте Gowin можно скачать IDE, любые Datasheet-ы, Reference Manual-ы и прочее: www.gowinsemi.com/en/product/detail/38
- Есть официальный Wiki со всей документацией и ЧаВо: wiki.sipeed.com/hardware/en/tang/tang-primer-20k/primer-20k.html
- Есть централизованное хранилище документации: dl.sipeed.com/shareURL/TANG/Primer_20K
- Есть Git-репозиторий с большим количеством примеров: github.com/sipeed/TangPrimer-20K-example
В дополнение к основному набору можно приобрести дополнительные модули:
❯ Заключение
После подробного изучения возможностей этой отладки — хочется вскрикнуть “Ого! И это — за такие небольшие деньги!”. Оптимальное количество LUT-ов, куча интерфейсов, всякое разное на борту и даже чип с RF-интерфейсом! Учитывая общую стоимость платы — кажется это отличная альтернатива Cyclone для начала работы с ПЛИС. Вывод который напрашивается после знакомства с этой отладкой “А может Cyclone IV действительно устарел?” 😀.
Жаль, конечно, что на плате нет EEPROM, которая мне необходима для построения I2C Master Controller, но кажется для этой отладки найдется куча самых разнообразных применений. Например, можно на этой плате “поднять” ядро RISC-V и на нем запустить полноценный Linux. На первый взгляд кажется, что можно собрать полноценный мини-ПК: оперативной памяти достаточно, есть USB-интерфейс для подключения клавиатуры, есть Ethernet для сетевого взаимодействия с другими элементами сети, интерфейс для дисплея. Кажется, это звучит как одна из идей для следующих статей.
Можно это добавить себе в заметки на будущее, но для начала в одной из следующих статей я познакомлю читателя с Gowin EDA, как с ним работать под Linux (да, есть поддержка), как настроить программатор, как заливать bitstream на плату и прочее.
До встречи в следующих статьях! 🙂