![](https://habrastorage.org/webt/kk/c_/_s/kkc__ssnl4xpuoy7q2x2ay4c1ly.png)
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 с полным набором функций необходимых для разработки. Для её скачивания вам потребуется зарегистрироваться на сайте разработчика
Регистрация
![Приветсвенная страница для незарегистрированного пользователя](https://habrastorage.org/webt/me/ys/nn/meysnn9oiu79fupxmcovmo5_ebg.png)
![Страница регистрации](https://habrastorage.org/webt/ys/4w/bs/ys4wbs4s7grwvfi0nk7d-mprbkc.png)
![Страница GOWIN EDA для зарегистрированного пользователя](https://habrastorage.org/webt/77/7z/yf/777zyfde3fjc7eldzevnqpx6oaw.png)
и скачать “Gowin Vn.n.n Education” для вашей ОС
Загрузка
![Страница загрузки](https://habrastorage.org/webt/wu/-v/fd/wu-vfdjnhdz-1aviz_hlyfgyzfy.png)
Для Windows
После скачивания архива с сайта его необходимо распаковать и запустить .exe
файл с установщиком.
Этапы установки
![Начальная страница установщика](https://habrastorage.org/webt/dc/nn/pc/dcnnpc3fxdek1xmmurp4asufvri.png)
![Выбор компонентов для установки](https://habrastorage.org/webt/3g/nj/6w/3gnj6wkvz80pbu7svtntuppsn0g.png)
![Выбираем стандартный путь установки](https://habrastorage.org/webt/dd/wt/hd/ddwthdcs0bmz-gogqadcj4zie4a.png)
![Выбираем вс е драйвера для установки](https://habrastorage.org/webt/fj/0g/kl/fj0gklyvbfmkcudlgu0eppwne-y.png)
Также соглашаемся на все дальнейшие шаги по установке драйверов
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](https://habrastorage.org/webt/7x/ms/da/7xmsdarh11ghzzh9-mq7fhhntwy.png)
![Начало загрузки GUI](https://habrastorage.org/webt/0q/83/ys/0q83ys7ppvvynjiaeqextro_ega.png)
OpenFPGALoader
В дополнение к Gowin EDA на Linux нам потребуется универсальная утилита для программирования плат с FPGA openFPGALoader.
О том, как установить утилиту на вашу ОС можно узнать на сайте разработчика
Поддерживаемые платы
![Sipeed Tang Nano 9k](https://habrastorage.org/webt/ay/kb/ph/aykbphnvl3-do4zr2xfqznr59pc.png)
Sipeed Tang Nano 9k – это маленькая и дешёвая, всего 17 USD, отладочная плата с чипом GW1NR-LV9 на 8,5k LUT4, встроенным программатором, 2 кнопками и 6 светодиодами.
![Sipeed Tang Nano 20k](https://habrastorage.org/webt/_c/_p/9l/_c_p9ldqd7f3ibuyqib6jd5hqm0.png)
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](https://habrastorage.org/webt/k8/ku/q0/k8kuq0oqapow-tjiesiwcasxc-w.png)
Sipeed Tang Primer 20k Lite – это “простая” плата, она содержит 4 PMOD-совместимых разъема, 2 кнопки и 2 гребёнки пинов. Стоимость вместе с SOM-модулем около 35 USD.
![Sipeed Tang Primer 20k Dock](https://habrastorage.org/webt/6e/k6/ed/6ek6ednuz7cqlz_ssncdbgqcsfg.png)
Sipeed Tang Primer 20k Dock – это полноценная отладка с Ethernet PHY, USB-OTG, USB-JTAG, HDMI, stereo DAC, кнопками, переключателями и светодиодами. Стоимость вместе с SOM-модулем около 45 USD.
Поддерживаемая периферия
В упражнениях Школы активно используются семисегментные индикаторы, VGA и микрофоны, которых нет на представленных платах, поэтому предлагается использовать следующие внешние модули:
TM1638
![TM1638](https://habrastorage.org/webt/ey/0x/rz/ey0xrzvzuicn7n9jtdiw_t7zrrs.png)
Данный модуль на основе микросхемы TM1638 даёт возможность управлять 8 светодиодами, 8 семисегментными индикаторами и 8 кнопками. Стоимость модуля составляет около 2 USD.
PMOD-VGA
![PMOD-VGA](https://habrastorage.org/webt/r3/rs/gf/r3rsgfw0yuvly5lr_pcpoqfqmis.png)
Этот модуль представляет собой 4-битный VGA коннектор. Модуль требует 22 провода: из которых 8 для питания, 12 для передачи базовых цветов и 2 для синхронизации сигнала. Стоимость модуля составляет около 8 USD.
INMP441
![INMP441](https://habrastorage.org/webt/sq/yc/kd/sqyckdlhwdjn51ruk8uedvxh4mg.png)
Это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
и перед нами появится список всех доступных плат
![Все доступные варианты](https://habrastorage.org/webt/qn/tr/ul/qntrulq0oq5p7wdknd3vzma4qou.png)
После выбора платы, перемещаемся в директорию примера со сдвиговым регистром
cd labs/08_shift_register/
Запускаем синтез примера и последующую прошивку платы
bash 03_synthesize_for_fpga.bash
В терминале появятся логи синтеза
![Начало лога синтеза](https://habrastorage.org/webt/kj/rb/bl/kjrbblj8wdw2-eefw0hvuf5rncc.png)
![Конец лога синтеза](https://habrastorage.org/webt/2a/4y/zc/2a4yzcw1bs9rfkkwlhnruo7yabc.png)
а в завершении появится сообщение от openFPGAlaoder
![Лог от openFPGALoader](https://habrastorage.org/webt/ub/mh/c_/ubmhc_rb51zkmtywedqqtk162wa.png)
и мы сможем увидеть результат
![Пример со сдвиговым регистром](https://habrastorage.org/webt/6t/m3/lu/6tm3lunw9uiexuwx_xb8gzoaksi.gif)
Примеры работы других примеров
![Вывод слова на 7-сегментный индикатор (неоконченный)](https://habrastorage.org/webt/pe/mv/89/pemv89p9j85rz-mmwhjjy_jhze4.gif)
![Бинарный счётчик](https://habrastorage.org/webt/5g/px/xm/5gpxxmxxhlgkrc8tmppoo_o5i-u.gif)
![Простейший конечный автомат - улитка](https://habrastorage.org/webt/kr/s6/lq/krs6lqszgmnxhso2_g8hqbpb29q.gif)
![Счётчик отображающий значения в шестнадцатеричной системе счисления](https://habrastorage.org/webt/cu/cq/nj/cucqnjjxz4aqdkh_qvnat6ril5y.gif)
Outro
А на этом всё, и я надеюсь, что у вас получится запустить GOWIN EDA на своём копьютере.