Intro
Одной из проблем первых сезонов Школы цифрового синтеза является малое число поддерживаемых плат, на которых можно легко и быстро повторить упражнение.
Чтобы справиться с данной проблемой, группа энтузиастов, под руководством Юрия Панчула, добавила поддержку множества плат и нескольких toolchain’ов от различных производителей FPGA.
В данном туториале, посвященном работе с FPGA от компании Gowin, я расскажу о том:
Как установить GOWIN EDA
Как подготовить FPGA плату и периферию
Как работать со скриптами сборки примеров
Who GOes and WINs?
Guangdong GOWIN Semiconductors – китайская компания-разработчик FPGA для различных применений. Она начала свою работу в 2014 году и за это время представила 3 семейства FPGA:
LittleBee - малые по объёму от 1k до 8,5k LUT4 FPGA с различными вариантами дополнительных внутренних блоков таких как SRAM, Bluetooth LE, ARM Cortex-M3
Arora - средние по объёму от 10k до 55k LUT4 FPGA с более продвинутой периферией и поддержкой DDR3 памяти.
Arora V - крупные по объёму до 138k LUT4 FPGA c поддержкой DDR3 памяти, продвинутыми DSP блоками и CDR SERDES 12,5Gbps.
Для работы с данными чипами мы можем использовать toolchain от производителя - GOWIN EDA или open source toolchain на основе Yosys.
Установка GOWIN EDA
GOWIN EDA - кроссплатформенная среда разработки для FPGA с полным набором функций необходимых для разработки. Для её скачивания вам потребуется зарегистрироваться на сайте разработчика
Регистрация
и скачать “Gowin Vn.n.n Education” для вашей ОС
Загрузка
Для Windows
После скачивания архива с сайта его необходимо распаковать и запустить .exe
файл с установщиком.
Этапы установки
Также соглашаемся на все дальнейшие шаги по установке драйверов
Linux
После скачивания архива с сайта его необходимо распаковать через GUI или командой
tar -xf your_archive_name
Создать директорию gowin
в домашней директории через GUI или командой
mkdir ~/gowin
Переместить распакованный архив через GUI или командой
mv ~/Downloads/your_archive_name ~/gowin
Опционально: добавление в PATH для запуска из консоли
Теперь добавим пути до бинарных файлов в переменную PATH
через добавление следующих строк в .bashrc
файл:
# GOWIN IDE path"
PATH="~/gowin/IDE/bin":$PATH
Теперь можно проверить корректность установки с помощью команд gw_sh
(появится приглашение от TCL консоли) и gw_ide
(начнётся загрузка EDA GUI).
OpenFPGALoader
В дополнение к Gowin EDA на Linux нам потребуется универсальная утилита для программирования плат с FPGA openFPGALoader.
О том, как установить утилиту на вашу ОС можно узнать на сайте разработчика
Поддерживаемые платы
Sipeed Tang Nano 9k – это маленькая и дешёвая, всего 17 USD, отладочная плата с чипом GW1NR-LV9 на 8,5k LUT4, встроенным программатором, 2 кнопками и 6 светодиодами.
Sipeed Tang Nano 20k – это почти полный аналог предыдущей модели за исключением чипа, здесь стоит более продвинутый GW2A-18 c 20k LUT4. Стоимость этой платы состовляет порядка 30 USD.
Две следующие платы построены на основе одного SOM-модуля Tang Primer 20K чипом GW2A-18 c 20k LUT4 и 128 MB DDR3 памяти.
Sipeed Tang Primer 20k Lite – это “простая” плата, она содержит 4 PMOD-совместимых разъема, 2 кнопки и 2 гребёнки пинов. Стоимость вместе с SOM-модулем около 35 USD.
Sipeed Tang Primer 20k Dock – это полноценная отладка с Ethernet PHY, USB-OTG, USB-JTAG, HDMI, stereo DAC, кнопками, переключателями и светодиодами. Стоимость вместе с SOM-модулем около 45 USD.
Поддерживаемая периферия
В упражнениях Школы активно используются семисегментные индикаторы, VGA и микрофоны, которых нет на представленных платах, поэтому предлагается использовать следующие внешние модули:
TM1638
Данный модуль на основе микросхемы TM1638 даёт возможность управлять 8 светодиодами, 8 семисегментными индикаторами и 8 кнопками. Стоимость модуля составляет около 2 USD.
PMOD-VGA
Этот модуль представляет собой 4-битный VGA коннектор. Модуль требует 22 провода: из которых 8 для питания, 12 для передачи базовых цветов и 2 для синхронизации сигнала. Стоимость модуля составляет около 8 USD.
INMP441
Этоn модуль является MEMS микрофоном с I2S интерфейсом. Стоимость модуля составляет около 2 USD.
Схемы подключения периферии
Далее приведены схемы для подключения периферийных модулей к отладочным платам.
Ссылки на схемы
О скриптах сборки примеров
Все примеры из репозитория позволяют использовать автоматизированную запуск примеров для различных отладочных плат.
В директории каждого примера находятся bash скрипты для запуска:
очистки директории от результатов предыдущих работ
симуляции с использованием Icarus Verilog
синтеза примера для выбранной отладочной платы
конфигурирования подключённой отладки
EDA GUI с открытым проектом примера
смены используемой платы
синтеза для ASIC с использованием OpenLane
Работа с системой сборки
Теперь мы готовы начать работу с примерами, для этого сначала создадим локальную копию репозитория с примерами
git clone https://github.com/yuri-panchul/basics-graphics-music
и перейдём в рабочую директорию
cd basics-graphics-music/
Выберем плату для работы
bash check_setup_and_choose_fpga_board.bash
и перед нами появится список всех доступных плат
После выбора платы, перемещаемся в директорию примера со сдвиговым регистром
cd labs/08_shift_register/
Запускаем синтез примера и последующую прошивку платы
bash 03_synthesize_for_fpga.bash
В терминале появятся логи синтеза
а в завершении появится сообщение от openFPGAlaoder
и мы сможем увидеть результат
Примеры работы других примеров
Outro
А на этом всё, и я надеюсь, что у вас получится запустить GOWIN EDA на своём копьютере.
Комментарии (4)
olartamonov
30.12.2023 16:32Александр, про INMP441 — оригинальных микрофонов этой модели в продаже уже нет, есть китайские клоны разной степени ущербности, от плохого звука до эффектов типа мусора в не своём канале.
Так что с ними могут быть... нюансы и невоспроизводимые результаты.
YuriPanchul
30.12.2023 16:32В принципе для нас INMP441 работают OK, но те микрофоны которые ты рекомендовал (SPH0645LM4H ?), я тоже закупил и они вроже тоже работают с этим же I2S интерфейсным модулем - я сейчас произвожу переучет всех плат и перепроверю.
Раз https://www.amazon.com/gp/product/B06XNL2GBWДва https://www.amazon.com/gp/product/B082KRJW62
Еще есть PDM который стоит в плане но пока не интегрирован
https://learn.adafruit.com/adafruit-pdm-microphone-breakout
https://www.amazon.com/dp/B093FYX46P
PDM нужен потому что он есть прямо на платах Digilent Nexys4 / Nexys 4-DDR / Nexys A7.
Что ты про это думаешь?
aystarik
30.12.2023 16:32Заметил что у Вас довольно старая версия openFPGALoader, с новой не пробовали?
vvvictor
Отличное введение.