GOWIN FPGA съвет за разработка RISCV програмиране

Copyright © 2022 Guangdong Gowin Semiconductor Corporation. Всички права запазени.
е търговска марка на Guangdong Gowin Semiconductor Corporation и е регистрирана в Китай, Службата за патенти и търговски марки на САЩ и други страни. Всички други думи и лога, идентифицирани като търговски марки или марки за услуги, са собственост на съответните им притежатели. Никаква част от този документ не може да бъде възпроизвеждана или предавана под каквато и да е форма или чрез каквито и да е обозначения, електронни, механични, фотокопиране, запис или по друг начин, без предварителното писмено съгласие на GOWINSEMI.
Отказ от отговорност
GOWINSEMI не поема отговорност и не предоставя никаква гаранция (изрична или подразбираща се) и не носи отговорност за каквито и да е щети, нанесени на вашия хардуер, софтуер, данни или собственост в резултат на използването на материалите или интелектуалната собственост, освен както е посочено в Правилата и условията на GOWINSEMI на продажба. Цялата информация в този документ трябва да се третира като предварителна. GOWINSEMI може да прави промени в този документ по всяко време без предизвестие. Всеки, който разчита на тази документация, трябва да се свърже с GOWINSEMI за текущата документация и грешки.
История на ревизиите
| Дата | Версия | Описание |
| 04/29/2019 | 1.0Е | Първоначалната версия е публикувана. |
|
11/11/2022 |
1.1Е |
|
Въведение
AE250 Въведение
AE250 е 32-битова RISC-V MCU система; неговата структура е показана на фигура 1-1.

Фигура 1-1 Структурна диаграма на AE250
Базирана на платката за разработка Gowin FPGA, системата за разработка и отстраняване на грешки RISC-V AE250 MCU е показана на фигура 1-2.

Фигура 1-2 Диаграма на структурата на системата за разработка и отстраняване на грешки
FPGA чипът на платката за разработка е конфигуриран като AE250 MCU с помощта на Gowin Programmer в компютър, след като кабелът за отстраняване на грешки е свързан, можете да извършите разработването на вградена програма и отстраняване на грешки със софтуера AndeSight RDS v311.
Препарати
Преди да използвате Gowin FPGA и AE250 за разработка и отстраняване на грешки, трябва да се подготвят следните инструменти:
- Gowin GW2A серия от платки за разработка на FPGA.
- Инсталационен пакет на Gowin Software за конфигуриране и изтегляне на FPGA чипа.
- AndeSight RDS v311 инсталационен пакет за разработване и отстраняване на грешки на вградената програма.
- Кабелът за отстраняване на грешки се използва за изтегляне и отстраняване на грешки на вградената програма, а по подразбиране е AICE-MINI+; потребителите трябва да го закупят сами.
Забележка!
- Ако трябва да изведе информация чрез UART, е необходим UART към USB кабел.
- Необходими са други периферни устройства, които да се използват.
Стъпки за разработване и отстраняване на грешки
Основните стъпки за разработване и отстраняване на грешки на RISC-V AE250 MCU, базирани на платката за разработка GW2A-55C, са както следва:
- Инсталиране на софтуер: Софтуерът Gowin се използва за конфигуриране и генериране на AE250 RTL дизайн и генериране на Bitstream file на дизайна; Софтуерът AndeSight RDS v311 се използва за разработване и отстраняване на грешки на вградени програми; друг софтуер и драйвери за отстраняване на грешки също са необходими.
- Конфигурирайте захранването и кабела за изтегляне на развойната платка. Битстриймът file от AE250_chip се изтегля в FPGA чипа на развойната платка с помощта на Gowin Programmer и AE250 работи на развойната платка.
- Отворете софтуера RDS, за да създадете нов вграден проект или да отворите съществуващ проект за кодиране, компилиране и други операции. Свържете кабела за отстраняване на грешки, използван за отстраняване на грешки в AE250, изтеглете резултата от компилацията на проекта в паметта с инструкции (ILM) в AE250 и започнете отстраняване на грешки в чипа.
- По време на отстраняване на грешки можете да използвате UART към USB кабел, за да свържете UART интерфейса на AE250 към компютър, да използвате вградения сериен терминал в RDS, за да управлявате входните и изходните операции. Можете да използвате GPIO за свързване към LED индикатори, клавиши или външни щифтове за входно/изходни операции; I2C, SPI, Ethernet и други периферни устройства също могат да бъдат избрани за използване.
- AE250 може да се свърже с Flash чрез SPI, да изтегли резултата от компилацията на вградената програма във Flash с помощта на Gowin Programmer; когато чипът е включен, AE250 автоматично ще прочете вградената програма в SPI Flash и ще стартира. Можете да използвате повторно Flash, който записва FPGA Bitstream; някои могат да запазят битовия поток на FPGA, а други могат да запазят резултатите от компилацията на вградени програми. Това е практичен и икономичен метод.
Можете да видите глава 2 Инструкции за кабелна връзка за отстраняване на грешки, глава
3 Използвайте Инструкции за RDS и глава 4 Референтен дизайн за подробни стъпки.
Инструкции за кабелна връзка за отстраняване на грешки
RDS + AE250 използва AICE-MINI+ кабел за отстраняване на грешки по подразбиране; външността е показана вляво на Фигура 2-1, а щифтовете са показани вдясно на Фигура 2-1. Това е 12-пинов интерфейс. Трябва да се отбележи, че щифт 1 е празен на фигурата. Когато кабелът е свързан правилно и RDS е отворен, червената LED светлина, маркирана с жълта кутия на фигурата, ще изгасне.
Фигура 2-1 AICE-MINI+ кабел за отстраняване на грешки и неговите щифтове

Дефиницията на щифта на AICE-MINI+ кабела за отстраняване на грешки е както е показано в Таблица 2-1. Трябва да се отбележи, че Pin 1 е дефиниран като No Connection (NC), съответстващ на празния. VREF трябва да свърже щифт за захранване от 3.3 V, а GND трябва само да свърже щифт 3 или щифт 5.
Таблица 2-1 Определение на щифта на кабела за отстраняване на грешки AICE-MINI+
| PIN номер | AICE-MINI+ кабелен щифт за отстраняване на грешки |
| 1 | NC |
| 2 | TSRST_N |
| 3 | GND |
| 4 | TTMS |
| 5 | GND |
| 6 | TCK |
| 7 | VREF |
| 8 | NC |
| 9 | NC |
| 10 | TTRST_N |
| 11 | TTDO |
| 12 | TTDI |
Използвайте инструкции за RDS
RDS инсталация
Разархивирайте инсталационния пакет и въведете Windows/Disk1; щракнете двукратно върху setup.exe, за да го инсталирате. Не са необходими специални настройки по време на инсталацията. По време на инсталацията ще се появи диалогов прозорец с въпрос дали да инсталирате драйвера, моля изберете да. За стъпките на инсталиране вижте
AndeSight_RDS_v3.2_Installation_Guide_UM207_V1.0.pdf, който може да се намери в инсталационния пакет.
- Когато задавате инсталационния път и пътя на работното пространство, не включвайте китайски символи или интервал, или ще получите грешка по време на изпълнение.
- Текущата версия на RDS поддържа AICE-MINI+ кабел по подразбиране.
- GOWIN Programmer може да не успее да се свърже с платката за разработка след инсталиране на RDS, което може да бъде поправено чрез преинсталиране на Gowin Programmer драйвер.
- За сериен номер и сертификат files, моля свържете се с Gowin Semiconductor Corp.
Създайте нов проект
Кликнете File > Нов > Проект > Проект Andes C > Следващ в интерфейса RDS, за да влезете в интерфейса за конфигурация на Нов проект C, както е показано на Фигура 3-1.
Фигура 3-1 Създайте нов проект

За новия C проект трябва да се конфигурират следните параметри:
- Име на проекта
- Местоположение: Местоположението по подразбиране е текущото работно пространство.
- Конфигурацията на връзката е настроена на ICE, което показва, че платката за разработка е свързана с помощта на ICE кабел за отстраняване на грешки. Ако емулаторът се използва като тестова платформа, моля, изберете SID.
- За Chip Profile, изберете ADP-AE250-N25-GOWIN, който е оптимизиран според Gowin FPGA.
- Типът проект включва празен проект и проект Hello World ANSI C.
- За Toolchains nds32le-elf-mculib-v5m е по подразбиране.
След като създадете нов проект, щракнете с десния бутон върху името на проекта в Project Explorer, изберете Build Project от падащото меню или щракнете върху ” ” в лентата с инструменти, за да компилирате и свържете проекта; изберете Clean Project от падащото меню, за да направите проекта чист.
Импортиране и експортиране на проект
Щракнете с десния бутон върху пространството на Project Explorer, за да изберете „Импортиране“ или „Експортиране“, както е показано на Фигура 3-2.

Фигура 3-2 Импортиране/Експортиране на проект
Щракнете върху „Импортиране > Общи > Съществуващ проект в работно пространство”, за да импортирате проект и интерфейсът е както е показано на Фигура 3-3. Когато изберете „Избор на основна директория“, импортирайте проекта в папка; когато изберете „Избор на архивен файл“, импортирайте проекта в zip.

Фигура 3-3 Импортиране на проект
Изберете „Експортиране… > Архив File”, за да отворите интерфейса на проекта за експортиране, както е показано на Фигура 3-4. След като изберете проекта за експортиране, формат на компресия, път за запис и т.н., можете да завършите експортирането.
Фигура 3-4 Експортиране на проект
Изтегляне на програми за флаш
AE250 поддържа стартиране от Flash, след което чете вградената програма от Flash чрез SPI интерфейс и я съхранява в ILM, след което вградената програма се изпълнява. Препоръчителният метод е повторно използване на SPI Flash, който запазва FPGA Bitstream; използвайте първата половина на Flash, за да запазите битовия поток на FPGA, а останалата част, за да запазите двоичния файл files на вградени програми.
- Отворете основния IP генератор в Gowin Software и извикайте AE250 RTL параметри. Щракнете два пъти върху SMU, за да отворите интерфейса на SMU и задайте „System Reset Vector Default“ на 0x80400000, както е показано на Фигура 3-5. Задайте пространството на SPI Flash 0~0x400000 с общо 4M байта като адрес за запис на Bitstream; започвайки от 0x400000 се използва като адрес за запис на двоичен файл files на вградени програми.
Фигура 3-5 Системно нулиране на вектора по подразбиране

- Щракнете двукратно върху SPI1, за да отворите интерфейса SPI1, проверете „SPI1 Support“ и задайте „SPI1 Memory Map Space Base Address“ на 0x80400000, както е показано на Фигура 3 6.
Фигура 3-6 Конфигурация на SPI1

- При физическите ограничения на дизайна на RTL, интерфейсът SPI1 трябва да бъде свързан към SPI Flash, а интерфейсът SPI1 трябва да бъде физически ограничен според следната таблица. За различните FPGA чипове местоположението на MSPI интерфейса също е различно и ограничението трябва да бъде специфично за конкретната ситуация.
Таблица 3-1 Физически ограничения на интерфейса SPI1Интерфейс AE250 SPI1 FPGA MSPI интерфейс CSN MCSN CLK MCLK Мишо MSO МОСИ MSI - Повторно използване на MSPI интерфейса като обикновен IO. В прозореца „Процес“ на Gowin Software щракнете с десния бутон върху „Място и маршрут“, изберете „Конфигурация“ в изскачащото меню; изберете раздела „Dual Purpose Pin“ и маркирайте „Use MSPI as regular IO“ и щракнете върху „OK“, за да завършите поставянето и маршрутизирането.
Фигура 3-7 Задайте MSPI Interface на Regular IO

- Променете настройките на параметрите на вградената програма. Първо, променете параметрите на буутлоудъра в скрипта за свързване. Тъй като скриптът за свързване във вградената програма AE250 се генерира автоматично от SAG file, трябва да се промени в SAG file. Отворете ae250.sag, намерете BOOTLOADER и го променете до стойността на System Reset Vector Default в RTL дизайн, както е показано на Фигура 3-8. След това променете config.h. Отворете src/bsp/config/config.h и намерете дефиницията на макроса
„BUILD_MODE“ и го променете на „BUILD_BURN“.
Фигура 3-8 Настройка на параметрите на буутлоудъра ae250.sag

Забележка!
-
- Параметърът трябва да съответства на стойността на System Reset Vector Default на RTL параметъра.
- Променете настройките на компилацията; щракнете с десния бутон върху името на вградения проект, изберете Настройки за изграждане; изберете раздела „Objcopy > General“ и премахнете отметката от „Disable“. (Не генерирайте автоматично изход file.)
Прекомпилирайте вградената програма, за да генерирате двоичен файл files на вградения проект и изтеглете files към SPI Flash 0x400000 адрес, използвайки Gowin Programmer външен Flash C Bin режим.
Синтезирайте и поставете и маршрутизирайте модифицирания RTL дизайн отново и го изтеглете на SPI Flash 0x000000 адрес, като използвате Gowin Programmer външен Flash режим.
Отстраняване на грешки в чип
След компилация, резултатите от компилацията на вградения проект могат да бъдат изтеглени в платката за разработка за отстраняване на грешки в чипа.
Промяна на config.h; отворете src/bsp/config/config.h и намерете дефиницията на макрос BUILD_MODE; модифицирайте го на BUILD_LOAD и прекомпилирайте вградената програма.
Щракнете с десния бутон върху името на проекта в Project Explorer и изберете „Debug as > MCU Program“ от падащото меню. За първи път ще се появи диалогов прозорец за настройка на „Debug Configuration“, както е показано на Фигура 3-9.

Фигура 3-9 Конфигурации за отстраняване на грешки
В раздела „Стартиране“ отметнете опцията „Нулиране и задържане“, за да спрете програмата, преди да изпълните първата инструкция. Въведете load в полето за параметри под тази опция, за да изтеглите резултатите от компилацията на вградения проект в ILM преди отстраняване на грешки в чипа.
В „Опции за изпълнение“ отметнете „Задаване на точка на прекъсване при“. Въведете етикет, като main в полето за въвеждане. Може да зададе точка на прекъсване в началото на основната функция. Поставете отметка на „Resume“ и тя ще започне непрекъсната работа директно след въвеждане на отстраняване на грешки в чипа.
Когато се въведе on-chip debug, автоматично се преминава към debug view и ще се покаже област, както е показано на Фигура 3-10. Тази област е работната област за отстраняване на грешки в чипа. Някои бутони за бърз достъп за отстраняване на грешки са показани в червеното поле. Отляво надясно те означават рестартиране на DEBUG, продължаване на изпълнението, спиране, край, прекъсване на връзката, свързване към един процес, влизане, преминаване, връщане на стъпка и стъпков режим на инструкции; в този режим, всеки път, когато изпълнява risc – v инструкция за асемблиране, в противен случай всеки път, когато изпълнява C израз.
Забележка!
Сивите икони означават, че те не са достъпни в момента.
Щракнете двукратно вляво върху номера на реда в текста на кода, за да зададете бързо точки на прекъсване или да отмените точки на прекъсване, и щракнете с десния бутон върху текста на кода, за да изберете „изпълни до ред“ от изскачащото меню.
Фигура 3-10 Въведение в бутоните за отстраняване на грешки
Фигура 3-11 е прозорец с инструкции за асемблиране, който показва съдържанието на инструкции за асемблиране, изпълнявани в реално време в ILM.

Фигура 3-11 Прозорец с код на инструкция за сглобяване
Използване на вграден сериен терминал RDS
Фигура 3-12 показва UART терминала, вграден в RDS интерфейс. Ако трябва да използвате, щракнете върху „Прозорец > Показване View > Терминал” в горното меню, за да отворите прозореца „Терминал”, след което щракнете върху „отворете терминал”, за да създадете нов сериен терминал. След като зададете номера на порта (който може да бъде viewв хардуерния мениджър), скорост на предаване и други параметри, щракнете върху „OK“, за да започнете да използвате.

Фигура 3-12 RDS вграден сериен терминал
За подробности вижте документа
AndeSight_RDS_v3.1_User_Manual_UM170_V1.0.pdf, който може да се намери в пътя на документа на инсталационната директория.
Референтен дизайн
Код на проекта
Ключът files в шаблона за вграден проект AE250 са както следва:
- src/bsp/ae250/ae250.h: Това file съдържа дефиницията на системния часовник, дефиницията на периферния регистър, дефиницията на съпоставянето на адреса на периферния регистър и дефиницията на номера на източника на прекъсвания. Дефиницията на часовника трябва да е в съответствие с конфигурацията на параметрите на AE250.
- src/bsp/ae250/ae250.c: Функцията reset_handler е записът за стартиране на вградената програма. В записа инициализацията на UART се извършва преди изпълнението на основната функция. Избира се необходимият UART порт и необходимата скорост на предаване се конфигурира според конфигурацията на параметрите на AE250.
- src/bsp/ae250/interrupt.c: Това file е дефиницията на функциите за обработка на прекъсвания на AE250
- src/bsp/config/config.h: Това file съдържа макро дефиницията, която контролира метода на компилиране. #define BUILD_MODE може да се дефинира като BUILD_LOAD или BUILD_BURN. BUILD_LOAD означава, че програмата се зарежда директно в ILM и обикновено се използва при отстраняване на грешки. BUILD_BURN означава, че програмата се изтегля в SPI Flash и програмата се чете от SPI Flash в ILM първо след включване и след това се изпълнява, което е приложимо за версията на програмата.
- Start.S: Стартерът file написан на асемблер.
- src/bsp/loader.c: буутлоудър file, който се използва за стартиране от SPI Flash.
- ae250.sag: Sag е скриптът за формат на разпръскване и събиране. Използва се за генериране на скрипт за свързване. Трябва да се отбележи, че параметрите на картата на паметта в ae250.sag трябва да са в съответствие с тези в AE250.
- src/bsp/driver: Тази директория съдържа две папки, ae250 е AE250 код на драйвера, include е интерфейсът за извикване на функциите на драйвера.
- src/bsp/lib: Съдържа две fileс. В printf.c формата на подфункцията в стандартната библиотека на C е предефинирана за извеждане на информация за printf чрез UART. В read.c има проста функция за четене на входна информация чрез UART.
Референтен дизайн
След инсталацията няколко основни референтни дизайна могат да бъдат намерени в демонстрационната папка на инсталационната директория или в zip файла за референтен дизайн на webсайт; референтният дизайн може да бъде зареден в RDS за изпробване, отстраняване на грешки и повторно разработване чрез импортиране. Референтните проекти са показани, както следва:
- ae250_demo: Демонстрира UART вход/изход и GPIO изход на AE250.
- ae250_plic: Демонстрира реакцията на контролера за прекъсване на прекъсвания и предоставя демонстрации на машинния таймер и пит таймера.
- ae250_freertos: Демонстрира, че AE250 портовете са вградени
операционна система в реално време FreeRTOS многонишкова работеща програма. - ae250_ucosiii: Демонстрира, че портовете AE250 са вградени в реално време операционна система uC/OS-III, изпълняваща многонишкова програма.
Документи / Ресурси
![]() |
GOWIN FPGA съвет за разработка RISCV програмиране [pdf] Ръководство за потребителя Платка за разработка на FPGA RISCV Програмиране, Програмиране на платка RISCV, Разработка на FPGA RISCV Програмиране, Програмиране на RISCV, Платка RISCV |





