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 EDA для зарегистрированного пользователя
Страница GOWIN EDA для зарегистрированного пользователя

и скачать “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).

Приглашие от TCL Command Line
Приглашие от TCL Command Line
Начало загрузки GUI
Начало загрузки GUI

OpenFPGALoader

В дополнение к Gowin EDA на Linux нам потребуется универсальная утилита для программирования плат с FPGA openFPGALoader.

О том, как установить утилиту на вашу ОС можно узнать на сайте разработчика

Поддерживаемые платы

Sipeed Tang Nano 9k
Sipeed Tang Nano 9k

Sipeed Tang Nano 9k – это маленькая и дешёвая, всего 17 USD, отладочная плата с чипом GW1NR-LV9 на 8,5k LUT4, встроенным программатором, 2 кнопками и 6 светодиодами.

Sipeed Tang Nano 20k
Sipeed Tang Nano 20k

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
Sipeed Tang Primer 20k Lite

Sipeed Tang Primer 20k Lite – это “простая” плата, она содержит 4 PMOD-совместимых разъема, 2 кнопки и 2 гребёнки пинов. Стоимость вместе с SOM-модулем около 35 USD.

Sipeed Tang Primer 20k Dock
Sipeed Tang Primer 20k Dock

Sipeed Tang Primer 20k Dock – это полноценная отладка с Ethernet PHY, USB-OTG, USB-JTAG, HDMI, stereo DAC, кнопками, переключателями и светодиодами. Стоимость вместе с SOM-модулем около 45 USD.

Поддерживаемая периферия

В упражнениях Школы активно используются семисегментные индикаторы, VGA и микрофоны, которых нет на представленных платах, поэтому предлагается использовать следующие внешние модули:

  • TM1638

TM1638
TM1638

Данный модуль на основе микросхемы TM1638 даёт возможность управлять 8 светодиодами, 8 семисегментными индикаторами и 8 кнопками. Стоимость модуля составляет около 2 USD.

  • PMOD-VGA

PMOD-VGA
PMOD-VGA

Этот модуль представляет собой 4-битный VGA коннектор. Модуль требует 22 провода: из которых 8 для питания, 12 для передачи базовых цветов и 2 для синхронизации сигнала. Стоимость модуля составляет около 8 USD.

  • INMP441

INMP441
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

Лог от openFPGALoader
Лог от openFPGALoader

и мы сможем увидеть результат

Пример со сдвиговым регистром
Пример со сдвиговым регистром
Примеры работы других примеров
Вывод слова на 7-сегментный индикатор (неоконченный)
Вывод слова на 7-сегментный индикатор (неоконченный)
Бинарный счётчик
Бинарный счётчик
Простейший конечный автомат - улитка
Простейший конечный автомат - улитка
Счётчик отображающий значения в шестнадцатеричной системе счисления
Счётчик отображающий значения в шестнадцатеричной системе счисления

Outro

А на этом всё, и я надеюсь, что у вас получится запустить GOWIN EDA на своём копьютере.

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


  1. vvvictor
    30.12.2023 16:32

    Отличное введение.


  1. olartamonov
    30.12.2023 16:32

    Александр, про INMP441 — оригинальных микрофонов этой модели в продаже уже нет, есть китайские клоны разной степени ущербности, от плохого звука до эффектов типа мусора в не своём канале.

    Так что с ними могут быть... нюансы и невоспроизводимые результаты.


    1. 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.

      Что ты про это думаешь?


  1. aystarik
    30.12.2023 16:32

    Заметил что у Вас довольно старая версия openFPGALoader, с новой не пробовали?