FPGA: GoWin (Китайская ПЛИС), первые проекты.

 

  1. Начало работы.
  2. Тестер TFT-LCD 7" на ПЛИС(GW2A-18). 
  3. VGA TXT 80x25, 64x30.

 

 


Начало работы.

Ноябрь 2020 года.

 

    Новость китайцы начали выпускать ПЛИС....

ПЛИСы интересные в них есть своя изюминка если сравнивать в именитыми игроками:

Intel(Altera), Xilinx, Lattice.

Посмотрел семинар, решил поиграться с плисиной.

Заказал плату на ebay.com Tang Nano, купил USB-C кабель.

 

На плате оказался установлен программатор на микросхеме CH552T.

Windows7-64 сама нашла драйвера, что очень удивило.

Зарегистрировался на сайте www.gowinsemi.com, скачал среду разработки,

всего 300 Мбайт (на диск разворачивается в ~ 1 Гбайт).

Установил на ПК среду, понадобился лицензионный ключ.

Сначала запросил ключ на сайте www.gowinsemi.com, от туда тишина.

Запросил ключ у http://icgamma.ru, ребята прислали ключ. Спасибо !

Создал проект мигания светодиодом, загрузил в плату - работает.

Проект грузиться в SRAM и при выключении питания ПЛИС все забывает.

Хорошо загрузим в строенную Flash и тут началось...

Загружаю прошивку в embeded Flash, а в ответ ошибка записи и тишина от платы,

не работает и все тут...

 

 

 

Потратив два дня перерыв документацию и не получил результата, пришел к выводу,

что где то глюк и не понятно где...

Решил подойти по другому. 

Прошить через программатор командной строки и о чудо заработало !

programmer_cli --device GW1N-1 --operation_index 5 --fsFile led_blink.fs

Что интересно если вызвать подсказку у programmer_cli.exe то --operation_index содержит

куда больше вариантов чем, представлено в графической оболочке.

Исходники и скрипт на GitHub.

 

Проект передатчик фиксированного пакета по UART.

 

    Понадобился для тестирования UART приемников автономный передатчик,

который может периодически передавать в UART порт известные данные.

При чем желательно чтобы умел работать на нескольких скоростях.

Так был реализован данный проект.

Передатчик умеет передавать раз в секунду строку "Hello1234567890\n",

передача идет одновременно на нескольких скоростях на нескольких выводах.

Передача осуществляется на фиксированных скоростях:

115200, 57600, 38400, 19200, 9600, 4800, 2400, 1200 бит/с, формат 8N1.

Один отдельный вывод работает на фиксированной скорости.

Т.е. достаточно только подключиться к нужному выводу.

 

Почему не микроконтроллер ?

Все просто, не в каждом микроконтроллере можно встретить большое количество USART модулей.

Реализации с программный USARTом и мультиплексированием оставим в покое,

т.к. время затраченное на подобную реализацию куда больше чем тот же проект на ПЛИС.

К тому же на ПЛИС можно сделать передатчик на нестандартные скорости,

которые не каждый USART позволит выставить.

 

Для чего еще можно приспособить ?

Например, если заменить передаваемую строку на пакет в формате Pelco-D,

то можно проводить тестирование камер и систем управления, этакий пульт дистанционного управления на ПЛИС :) и т.п.

 

Исходники gowin_tang_nano_prj/uart_testerна GitHub.


Предварительный итог:

ПЛИСы интересные, стоят того чтобы их изучать и применять.

Уже есть идеи куда применить, осталось прикупить сами микросхемы.

 

Достоинства:

+ Среда мало занимает места на диске.

+ Свой синтезатор, фиттер (что тоже удивило).

+ Скорость работы - высокая по сравнению с другими производителями (походу intel, xilinx 

забыли что так можно делать).

+ Есть ПЛИСы с CPU ядрами типа Cortex-M3, Risc-V, BLE (у других производителей жирные Cortex-Ax

для работы под Linux :( ).

+ Обещают низкие цены (посмотрим).

+ Наличие IP Ядер.

+ Наличие ПЛИС с SDRAM/DDR памятью на борту, MIPI и прочими интерфейсами.

  

Из недостатков:

Все еще несколько сырое... И среда и документация и поддержка...

- Среда находится в beta версии.

- Нет форума где можно задать вопросы.

- Нет FAQ.

- Вопросы можно задавать через сайт, но есть подозрение что отвечать не будут...

- Доставаемость - пока под вопросом, придется искать где купить.

 

 

И тем не менее, результаты работы с GoWin FGPA оставили положительные эмоции,

похоже что ребята решили взяться за ПЛИСы всерьёз и надолго.

Если так и дальше пойдет, то надо учить китайский.

Что у нас, в России ? :

Пока российский космос продолжает терять кадры, и строит очередной батут для покорения бюджета...

Воронеж осваивает производство устаревшие плис от Alter-ы... и предлагает использовать устаревший

софт (где сегодня под старый Quartus брать машины с ...XP и т.п. ?)

.....

.....

.....

китайцы тем временем, под руководством коммунистической партии планомерно захватывают мир.


 

Тестер TFT-LCD 7" на ПЛИС(GW2A-18).

 

Ноябрь 2022 года.

 

Произошли два события:

  1. Досталась мне TFT-LCD 7" SK-ATM0700D4-Plug панель от starterkit.ru в неизвестном состоянии.
  2. Пришла с алиэкcпресс отладка на основе FPGA GW2A-18.

 

 

 

Т.к. состояние LCD панели неизвестно (работает или нет),

необходимо произвести проверку (желательно по простому и быстро).

И по результатам проверки решить что с ней делать.

Делать проект на STM32 не стал, т.к. проще реализовать на FPGA.

Решил проверить работоспособность панели при помощи FPGA с новой отладочной платой.

 

Итого, необходимо реализовать на FPGA:

  1. Генератор развертки с заданными временными параметрами согласно документации на матрицу.
  2. Автомат перебора цвета и вывода изображение для визуального контроля работоспособности матрицы.

В качестве изображения решено выводить поочередное переключение цветов.

Смена цвета происходит каждый 25 кадр, т.е. один раз в секунду.

Причем для простоты цвета будут кодироваться одним битом и подключаться будут к

старшему разряду каждого из цветовых каналов.

Итого 3 бита RGB за место 24 бит RGB.

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

 

По плате с GW2A-18.

Плата была куплена в комплекте с программатором.

 

 

Программатор построен на микроконтроллере с ядром RISC-V.

При первом подключении к ПК с WIN7-64, драйвера нашлись виндой и в системе появились два COM порта.

При попытке прошить FPGA софт GOWIN сказал что программатора в сиcтеме НЕТ.....

Т.е. плата программатора по умолчанию прошита ПО переходника USB-to-COM.

 

Выяснилось, что необходимо прошить другую прошивку в программатор и после этого плата программатора станет программатором для FPGA,

а так это просто переходник USB-to-COM.

 

На форуме electronix.ru была выложена прошивка (за что большое спасибо автору который ее собрал из исходников).

Для заливки новой прошивки в плату программатора, необходимо нажать на кнопку (на плате) и

удерживая кнопку в нажатом состоянии подключить USB кабель к плате программатора.

После этого ПО микроконтроллера перейдет в загрузчик и будет ожидать прихода новой прошивки.

При этом в ОС должен появиться COM порт.

Но в WIN7-64, COM порт не появился, т.к. не нашлось нужных драйвером.

Все USB ID устройства = FFFF !!!!

 

Под ОС Linux COM порт был обнаружен без проблем и при помощи скрипта была произведена заливка прошивки.

Внимание: Для заливки прошивки требуется дополнительных софт (bflb_mcu_tool).

Судя по всему данная прошивка имитирует собой FT2232 (jtag + COM порт).

Хотя если есть в наличии FT2232, то можно использовать ее и не связываться с китайским клоном.

Порядок, теперь можно прошивать FPGA.

 

 

Прошиваем FPGA.

GW2A построена по технологии SRAM т.е. прошивку необходимо загружать каждый раз после подачи питания на FPGA.

GW2A имеет несколько режимов загрузки, но сейчас будет использоваться загрузка из

внешней SPI памяти (установлена на плате).

Подключаем программатор к плате:

Внимание: Плата будет питаться через USB порт программатора.

 

Запускаем Gowin программатор.

 

Нажимаем на кнопку Save.

Удаляем из списка General JTAG Device.

 

  

Производим поиск подключенной платы.

 

 

 Выбираем из списка наш кристалл GW2A-18C.

 

 

Выбираем и устанавливаем:

1. Access Mode: External Flash Mode.

2. File name: файл прошивки с расширением fs.

3. Device: Generic Flash.

Нажимаем кнопку Save.

 

 

Запускаем программирование SPI Flash.

 

 

Смотрим результат прошивки в логе Output.

 

 

Подключаем плату LCD к плате FPGA.

На плату LCD панели необходимо подать два внешних напряжения питания +5 и +3.3 вольта (разъем X2).

Внимание: Если будет отсутствовать +3.3 в, то это вызовет КЗ по 5 В !!!!

 

 

После подачи питания можно наблюдать работоспособность панели !

 

 

 

 

По проекту.

Проект делался как проект выходного дня (на коленке) по быстрому...

Все параметры развертки задаются "магическими" числами, что неудобно для последующих изменений...

Если задать параметры развертки в виде дефайнов в отдельном хедер файле,

то можно будет простым изменением хедер файла перестраивать проект под любую матрицу.

Но это будет в следующий раз, а теперь пора спать...

Исходники на GitHub.


 

VGA TXT 80x25, 64x30.

 

Май 2023. 

 

Купил для малых проектов FPGA GW1NZ-LV1FN32C6/I5, создал схему, развел плату, собрал макетку.

 

Подобрал шрифт 8x16 (CP1251), перенес исходники в GoWin IDE, запустил тест.

 

Ресурсы FPGA:

----------------------------------------------------------
Resources | Usage
----------------------------------------------------------
Logic | 196/1152 18%
--LUT,ALU,ROM16 | 196(196 LUT, 0 ALU, 0 ROM16)
--SSRAM(RAM16) | 0
Register | 104/939 12%
--Logic Register as Latch | 0/864 0%
--Logic Register as FF | 103/864 12%
--I/O Register as Latch | 0/75 0%
--I/O Register as FF | 1/75 2%
CLS | 119/576 21%
I/O Port | 4
I/O Buf | 4
--Input Buf | 1
--Output Buf | 3
--Inout Buf | 0
IOLOGIC | 0%
BSRAM | 75%
--SDPB | 1
--pROM | 2
PLL | 0/1 0%
DCS | 0/4 0%
DQCE | 0/12 0%
OSC | 0/1 0%
User Flash | 0/1 0%
CLKDIV | 0/4 0%
DLLDLY | 0/4 0%
DHCEN | 0/8 0%
=================================

Исходники на GiHub, подробнее про VGA в статье FPGA: Текстовый видеоконтроллер.