GOWIN FPGA-Entwicklungsboard RISCV-Programmierung

Copyright © 2022 Guangdong Gowin Semiconductor Corporation. Alle Rechte vorbehalten.
ist eine Marke der Guangdong Gowin Semiconductor Corporation und ist in China, beim US-Patent- und Markenamt und anderen Ländern eingetragen. Alle anderen Wörter und Logos, die als Warenzeichen oder Dienstleistungsmarken gekennzeichnet sind, sind Eigentum ihrer jeweiligen Inhaber. Kein Teil dieses Dokuments darf ohne die vorherige schriftliche Zustimmung von GOWINSEMI in irgendeiner Form oder auf irgendeine Weise elektronisch, mechanisch, fotokopiert, aufgezeichnet oder auf andere Weise reproduziert oder übertragen werden.
Haftungsausschluss
GOWINSEMI übernimmt keine Haftung und gewährt keine Gewährleistung (weder ausdrücklich noch stillschweigend) und ist nicht verantwortlich für Schäden an Ihrer Hardware, Software, Daten oder Ihrem Eigentum, die sich aus der Nutzung der Materialien oder des geistigen Eigentums ergeben, außer wie in den Allgemeinen Geschäftsbedingungen von GOWINSEMI beschrieben des Verkaufs. Alle Informationen in diesem Dokument sind als vorläufig zu betrachten. GOWINSEMI kann dieses Dokument jederzeit ohne vorherige Ankündigung ändern. Jeder, der sich auf diese Dokumentation verlässt, sollte sich für die aktuelle Dokumentation und Errata an GOWINSEMI wenden.
Änderungsverlauf
| Datum | Version | Beschreibung |
| 04 | 1.0E | Erste Version veröffentlicht. |
|
11 |
1.1E |
|
Einführung
AE250 Einführung
AE250 ist ein 32-Bit-RISC-V-MCU-System; seine Struktur ist in Abbildung 1-1 dargestellt.

Abbildung 1-1 AE250 Strukturdiagramm
Das in Abbildung 250-1 dargestellte Entwicklungs- und Debuggingsystem für die RISC-V AE2-MCU basiert auf der Gowin FPGA-Entwicklungsplatine.

Abbildung 1-2 Strukturdiagramm des Entwicklungs- und Debugsystems
Der FPGA-Chip auf der Entwicklungsplatine wird mithilfe des Gowin Programmer im PC als AE250 MCU konfiguriert. Nachdem das Debug-Kabel angeschlossen wurde, können Sie die eingebettete Programmentwicklung und das Debuggen mit der AndeSight RDS v311-Software durchführen.
Vorbereitungen
Bevor Sie Gowin FPGA und AE250 zur Entwicklung und zum Debuggen verwenden, müssen die folgenden Tools vorbereitet werden:
- FPGA-Entwicklungsplatinen der GW2A-Serie von Gowin.
- Gowin-Softwareinstallationspaket zum Konfigurieren und Herunterladen des FPGA-Chips.
- AndeSight RDS v311-Installationspaket zum Entwickeln und Debuggen des eingebetteten Programms.
- Das Debug-Kabel wird zum Herunterladen und Debuggen des eingebetteten Programms verwendet. Die Standardeinstellung ist AICE-MINI+. Benutzer müssen es selbst erwerben.
Notiz!
- Wenn Informationen über UART ausgegeben werden müssen, wird ein UART-zu-USB-Kabel benötigt.
- Es müssen weitere Peripheriegeräte verwendet werden.
Schritte zum Entwickeln und Debuggen
Die grundlegenden Schritte zum Entwickeln und Debuggen von RISC-V AE250 MCU basierend auf der GW2A-55C-Entwicklungsplatine sind wie folgt:
- Software installieren: Gowin Software wird verwendet, um AE250 RTL-Design zu konfigurieren und zu generieren und den Bitstream zu generieren file des Designs; die Software AndeSight RDS v311 wird zum Entwickeln und Debuggen eingebetteter Programme verwendet; zum Debuggen werden außerdem andere Software und Treiber benötigt.
- Konfigurieren Sie die Stromversorgung und das Downloadkabel des Entwicklungsboards. Der Bitstream file von AE250_chip wird mit Gowin Programmer auf den FPGA-Chip auf der Entwicklungsplatine heruntergeladen und AE250 wird auf der Entwicklungsplatine ausgeführt.
- Öffnen Sie die RDS-Software, um ein neues eingebettetes Projekt zu erstellen, oder öffnen Sie ein vorhandenes Projekt zum Kodieren, Kompilieren und für andere Vorgänge. Schließen Sie das zum AE250-Debuggen verwendete Debug-Kabel an, laden Sie das Ergebnis der Projektkompilierung in den Befehlsspeicher (ILM) in AE250 herunter und beginnen Sie mit dem Debuggen auf dem Chip.
- Während des Debuggens können Sie die UART-Schnittstelle des AE250 über ein UART-zu-USB-Kabel mit dem PC verbinden und den integrierten seriellen Anschluss im RDS verwenden, um die Eingabe- und Ausgabevorgänge auszuführen. Sie können GPIO verwenden, um eine Verbindung zu LED-Anzeigen, Tasten oder externen Pins für Eingabe-/Ausgabevorgänge herzustellen. I2C, SPI, Ethernet und andere Peripheriegeräte können ebenfalls zur Verwendung ausgewählt werden.
- AE250 kann über SPI eine Verbindung zu einem Flash herstellen und das Kompilierungsergebnis des eingebetteten Programms mithilfe des Gowin Programmer auf den Flash herunterladen. Wenn der Chip eingeschaltet wird, liest AE250 automatisch das eingebettete Programm im SPI-Flash und startet. Sie können den Flash wiederverwenden, der den FPGA-Bitstream speichert. Einige können den FPGA-Bitstream speichern und andere können die Kompilierungsergebnisse eingebetteter Programme speichern. Dies ist eine praktische und kostengünstige Methode.
Siehe Kapitel 2 Debug-Kabelanschlussanweisungen, Kapitel
3 Ausführliche Schritte finden Sie in den Anweisungen für RDS und in Kapitel 4 „Referenzdesign“.
Anweisungen zum Anschließen des Debug-Kabels
RDS + AE250 verwenden standardmäßig das AICE-MINI+-Debugkabel. Das Äußere ist links in Abbildung 2-1 dargestellt und die Pins sind rechts in Abbildung 2-1 dargestellt. Es handelt sich um eine 12-polige Schnittstelle. Es ist zu beachten, dass Pin 1 in der Abbildung leer ist. Wenn das Kabel richtig angeschlossen und RDS geöffnet ist, erlischt die rote LED, die in der Abbildung mit einem gelben Kästchen markiert ist.
Abbildung 2-1 AICE-MINI+ Debug-Kabel und seine Pins

Die Pin-Definition des AICE-MINI+-Debugkabels ist in Tabelle 2-1 dargestellt. Es ist zu beachten, dass Pin 1 als „Keine Verbindung“ (NC) definiert ist, was dem leeren Pin entspricht. VREF muss einen 3.3-V-Stromanschluss verbinden, und GND muss nur den Pin 3 oder den Pin 5 verbinden.
Tabelle 2-1 Pin-Definition des AICE-MINI+ Debug-Kabels
| PIN-Nummer | AICE-MINI+ Debug-Kabelstift |
| 1 | NC |
| 2 | TSRST_N |
| 3 | Masse |
| 4 | TTMS |
| 5 | Masse |
| 6 | TCK |
| 7 | VREF |
| 8 | NC |
| 9 | NC |
| 10 | TTRST_N |
| 11 | TTDO |
| 12 | TTDI |
Gebrauchsanweisung für RDS
RDS-Installation
Entpacken Sie das Installationspaket und geben Sie Windows/Disk1 ein. Doppelklicken Sie auf setup.exe, um es zu installieren. Während der Installation sind keine besonderen Einstellungen erforderlich. Während der Installation wird ein Dialogfeld angezeigt, in dem Sie gefragt werden, ob der Treiber installiert werden soll. Wählen Sie „Ja“. Installationsschritte finden Sie unter
AndeSight_RDS_v3.2_Installation_Guide_UM207_V1.0.pdf, das im Installationspaket zu finden ist.
- Achten Sie beim Festlegen des Installationspfads und des Arbeitsbereichspfads darauf, dass Sie keine chinesischen Zeichen oder Leerzeichen verwenden, da sonst ein Laufzeitfehler auftritt.
- Die aktuelle Version von RDS unterstützt standardmäßig AICE-MINI+-Kabel.
- Nach der Installation von RDS kann GOWIN Programmer möglicherweise keine Verbindung zur Entwicklungsplatine herstellen. Dies kann durch eine Neuinstallation des Gowin Programmer-Treibers behoben werden.
- Für Seriennummer und Zertifikat files, wenden Sie sich bitte an Gowin Semiconductor Corp.
Neues Projekt erstellen
Klicken File > Neu > Projekt > Andes C-Projekt > Weiter auf der RDS-Schnittstelle, um die Konfigurationsschnittstelle des neuen C-Projekts aufzurufen, wie in Abbildung 3-1 dargestellt.
Abbildung 3-1 Neues Projekt erstellen

Für das neue C-Projekt müssen die folgenden Parameter konfiguriert werden:
- Projektname
- Standort: Der Standardstandort ist der aktuelle Arbeitsbereich.
- Die Verbindungskonfiguration ist auf ICE eingestellt, was bedeutet, dass die Entwicklungsplatine über ein ICE-Debugkabel angeschlossen ist. Wenn der Emulator als Testplattform verwendet wird, wählen Sie bitte SID.
- Für Chip Profile, wählen Sie ADP-AE250-N25-GOWIN, das gemäß Gowin FPGA optimiert ist.
- Der Projekttyp umfasst ein leeres Projekt und ein „Hello World“-ANSI-C-Projekt.
- Für Toolchains ist nds32le-elf-mculib-v5m der Standard.
Klicken Sie nach dem Erstellen eines neuen Projekts mit der rechten Maustaste auf den Projektnamen im Projekt-Explorer, wählen Sie „Projekt erstellen“ aus dem Dropdown-Menü oder klicken Sie auf „ “ in der Symbolleiste, um das Projekt zu kompilieren und zu verknüpfen; wählen Sie „Projekt bereinigen“ aus dem Dropdown-Menü, um das Projekt zu bereinigen.
Importieren und Exportieren eines Projekts
Klicken Sie mit der rechten Maustaste auf den Bereich des Projekt-Explorers, um „Importieren“ oder „Exportieren“ auszuwählen, wie in Abbildung 3-2 gezeigt.

Abbildung 3-2 Importieren/Exportieren eines Projekts
Klicken Sie auf „Importieren > Allgemein > Vorhandenes Projekt in Arbeitsbereich“, um ein Projekt zu importieren. Die Benutzeroberfläche ist wie in Abbildung 3-3 dargestellt. Wenn Sie „Stammverzeichnis auswählen“ auswählen, importieren Sie das Projekt in einen Ordner. Wenn Sie „Archivdatei auswählen“ auswählen, importieren Sie das Projekt in eine ZIP-Datei.

Abbildung 3-3 Importieren eines Projekts
Wählen Sie „Exportieren… > Archivieren File”, um die Schnittstelle zum Exportieren von Projekten zu öffnen, wie in Abbildung 3-4 dargestellt. Nachdem Sie das zu exportierende Projekt, das Komprimierungsformat, den Speicherpfad usw. ausgewählt haben, können Sie den Export abschließen.
Abbildung 3-4 Exportieren eines Projekts
Programme auf Flash herunterladen
AE250 unterstützt das Starten von Flash, liest dann das eingebettete Programm über die SPI-Schnittstelle von Flash und speichert es in ILM, und dann wird das eingebettete Programm ausgeführt. Die empfohlene Methode ist die Wiederverwendung von SPI-Flash, das FPGA-Bitstream speichert; verwenden Sie die erste Hälfte von Flash, um den FPGA-Bitstream zu speichern, und die verbleibende Hälfte, um die Binärdatei zu speichern. files von eingebetteten Programmen.
- Öffnen Sie den IP-Core-Generator in der Gowin-Software und rufen Sie die AE250 RTL-Parameter auf. Doppelklicken Sie auf die SMU, um die SMU-Schnittstelle zu öffnen, und setzen Sie „System Reset Vector Default“ auf 0x80400000, wie in Abbildung 3-5 gezeigt. Stellen Sie den Speicherplatz des SPI-Flashs 0~0x400000 mit insgesamt 4 MB als Speicheradresse des Bitstreams ein; beginnend bei 0x400000 wird als Speicheradresse des Binärcodes verwendet. files von eingebetteten Programmen.
Abbildung 3-5 System-Reset-Vektor-Standard

- Doppelklicken Sie auf SPI1, um die SPI1-Schnittstelle zu öffnen, aktivieren Sie „SPI1-Unterstützung“ und setzen Sie „SPI1 Memory Map Space Base Address“ auf 0x80400000, wie in Abbildung 3 6 gezeigt.
Abbildung 3-6 SPI1-Konfiguration

- In den physischen Einschränkungen des RTL-Designs sollte die SPI1-Schnittstelle mit SPI Flash verbunden werden, und die SPI1-Schnittstelle sollte gemäß der folgenden Tabelle physisch eingeschränkt sein. Bei verschiedenen FPGA-Chips ist auch der Standort der MSPI-Schnittstelle unterschiedlich, und die Einschränkung sollte der jeweiligen Situation entsprechend sein.
Tabelle 3-1 Physikalische Einschränkungen der SPI1-SchnittstelleAE250 SPI1-Schnittstelle FPGA MSPI-Schnittstelle CSN MCSN CLK MCLK MISO MSO MOSI MSI - MSPI-Schnittstelle als reguläre IO wiederverwenden. Klicken Sie im Fenster „Prozess“ der Gowin-Software mit der rechten Maustaste auf „Platzieren und routen“, wählen Sie im Popup-Menü „Konfiguration“ aus, wählen Sie die Registerkarte „Dual Purpose Pin“, aktivieren Sie „MSPI als reguläre IO verwenden“ und klicken Sie auf „OK“, um Platzierung und Routing abzuschließen.
Abbildung 3-7 MSPI-Schnittstelle auf reguläre E/A einstellen

- Ändern Sie die Parametereinstellungen des eingebetteten Programms. Ändern Sie zunächst die Parameter des Bootloaders im Linker-Skript. Da das Linker-Skript im eingebetteten AE250-Programm automatisch von SAG generiert wird file, sollte es in der SAG geändert werden file. Öffnen Sie ae250.sag, suchen Sie nach BOOTLOADER und ändern Sie es auf den Wert von System Reset Vector Default im RTL-Design, wie in Abbildung 3-8 gezeigt. Ändern Sie dann config.h. Öffnen Sie src/bsp/config/config.h und suchen Sie die Makrodefinition
„BUILD_MODE“ und ändern Sie es in „BUILD_BURN“.
Abbildung 3-8 ae250.sag Bootloader-Parametereinstellung

Notiz!
-
- Der Parameter sollte mit dem Wert des System Reset Vector Default des RTL-Parameters übereinstimmen.
- Ändern Sie die Kompilierungseinstellungen; klicken Sie mit der rechten Maustaste auf den Namen des eingebetteten Projekts, wählen Sie Build Settings; wählen Sie die Registerkarte „Objcopy > General“ und deaktivieren Sie „Disable“. (Ausgabe nicht automatisch generieren file.)
Kompilieren Sie das eingebettete Programm neu, um eine Binärdatei zu erzeugen. files des eingebetteten Projekts und laden Sie die files zur SPI-Flash-Adresse 0x400000 mithilfe des externen Flash-C-Bin-Modus des Gowin Programmer.
Synthetisieren und platzieren und routen Sie das geänderte RTL-Design erneut und laden Sie es im externen Flash-Modus des Gowin Programmer auf die SPI-Flash-Adresse 0x000000 herunter.
On-Chip-Debugging
Nach der Kompilierung können die Kompilierungsergebnisse des eingebetteten Projekts zum On-Chip-Debuggen auf die Entwicklungsplatine heruntergeladen werden.
Ändern Sie config.h, öffnen Sie src/bsp/config/config.h und suchen Sie die Makrodefinition BUILD_MODE. Ändern Sie sie in BUILD_LOAD und kompilieren Sie das eingebettete Programm erneut.
Klicken Sie mit der rechten Maustaste auf den Projektnamen im Projekt-Explorer und wählen Sie „Debuggen als > MCU-Programm“ aus dem Dropdown-Menü. Beim ersten Mal wird ein Dialogfeld zum Einstellen der „Debug-Konfiguration“ angezeigt, wie in Abbildung 3-9 dargestellt.

Abbildung 3-9 Debug-Konfigurationen
Aktivieren Sie auf der Registerkarte „Startup“ die Option „Zurücksetzen und Halten“, um das Programm vor der Ausführung der ersten Anweisung anzuhalten. Geben Sie „load“ in das Parameterfeld unter dieser Option ein, um die Kompilierungsergebnisse des eingebetteten Projekts vor dem On-Chip-Debugging in das ILM herunterzuladen.
Aktivieren Sie in „Runtime Options“ die Option „Set breakpoint at“ (Haltepunkt setzen bei). Geben Sie in das Eingabefeld eine Bezeichnung wie „main“ ein. Damit kann ein Haltepunkt am Anfang der Hauptfunktion gesetzt werden. Aktivieren Sie „Resume“ (Fortsetzen), und der Dauerbetrieb wird direkt nach dem Aufrufen des On-Chip-Debugs gestartet.
Beim Aufrufen des On-Chip-Debugs wird automatisch der Debug- view und ein Bereich wird angezeigt, wie in Abbildung 3-10 dargestellt. Dieser Bereich ist der Betriebsbereich für das On-Chip-Debugging. In der roten Box werden einige Tastenkombinationen für das Debugging angezeigt. Von links nach rechts bedeuten sie „DEBUG neu starten“, „Weiterlaufen“, „Anhalten“, „Beenden“, „Trennen“, „Mit einem Prozess verknüpfen“, „Einsteigen“, „Überspringen“, „Schritt zurück“ und „Befehlsschrittmodus“; in diesem Modus wird jedes Mal ein risc-v-Assemblerbefehl ausgeführt, andernfalls jedes Mal, wenn eine C-Anweisung ausgeführt wird.
Notiz!
Die grauen Symbole bedeuten, dass sie derzeit nicht verfügbar sind.
Doppelklicken Sie mit der linken Maustaste auf die Zeilennummer im Codetext, um schnell Haltepunkte festzulegen oder aufzuheben, und klicken Sie mit der rechten Maustaste in den Codetext, um im Popup-Menü „Bis Zeile ausführen“ auszuwählen.
Abbildung 3-10 Einführung in die Debug-Schaltflächen
Abbildung 3-11 ist ein Assembleranweisungen-Fenster, das den Inhalt von Assembleranweisungen anzeigt, die in Echtzeit in ILM ausgeführt werden.

Abbildung 3-11 Fenster „Assembler-Anweisungscode“
Verwendung des integrierten seriellen Terminals von RDS
Abbildung 3-12 zeigt das in das UART-Terminal integrierte RDS-Interface. Wenn Sie es verwenden möchten, klicken Sie auf „Fenster > Anzeigen View > Terminal“ im oberen Menü, um das Fenster „Terminal“ zu öffnen, und klicken Sie dann auf „Terminal öffnen“, um ein neues serielles Terminal zu erstellen. Nach dem Einstellen der Portnummer (die viewKlicken Sie auf „OK“, um die im Hardware-Manager festgelegte Baudrate und andere Parameter zu ändern und mit der Verwendung zu beginnen.

Abbildung 3-12 Integriertes serielles RDS-Terminal
Einzelheiten finden Sie im Dokument
AndeSight_RDS_v3.1_User_Manual_UM170_V1.0.pdf, zu finden im Doc-Pfad des Installationsverzeichnisses.
Referenzdesign
Projektcode
Der Schlüssel files in der eingebetteten Projektvorlage AE250 sind wie folgt:
- src/bsp/ae250/ae250.h: Dies file enthält die Systemtaktdefinition, die Peripherieregisterdefinition, die Peripherieregister-Adresszuordnungsdefinition und die Interrupt-Quellennummerndefinition. Die Taktdefinition muss mit der AE250-Parameterkonfiguration übereinstimmen.
- src/bsp/ae250/ae250.c: Die Funktion reset_handler ist der Eintrag zum Starten des eingebetteten Programms. Im Eintrag wird die UART-Initialisierung durchgeführt, bevor die Hauptfunktion ausgeführt wird. Der erforderliche UART-Port wird ausgewählt und die erforderliche Baudrate wird entsprechend der Parameterkonfiguration von AE250 konfiguriert.
- src/bsp/ae250/interrupt.c: Dies file ist die Definition der Interrupt-Handler-Funktionen von AE250
- src/bsp/config/config.h: Dies file enthält die Makrodefinition, die die Kompilierungsmethode steuert. #define BUILD_MODE kann als BUILD_LOAD oder BUILD_BURN definiert werden. BUILD_LOAD bedeutet, dass das Programm direkt in ILM geladen wird und wird im Allgemeinen beim Debuggen verwendet. BUILD_BURN bedeutet, dass das Programm auf SPI Flash heruntergeladen wird und das Programm nach dem Einschalten zuerst von SPI Flash in ILM gelesen und dann ausgeführt wird, was auf das Programm der Release-Version zutrifft.
- Start.S: Der Starter file in Assemblersprache geschrieben.
- src/bsp/loader.c: Bootloader file, das zum Starten von SPI Flash verwendet wird.
- ae250.sag: Sag ist das Scattering-and-Gathering-Formatskript. Es wird zum Generieren von Linkerskripten verwendet. Es ist zu beachten, dass die Speicherzuordnungsparameter in ae250.sag mit denen in AE250 übereinstimmen müssen.
- src/bsp/driver: Dieses Verzeichnis enthält zwei Ordner, ae250 ist der AE250-Treibercode, include ist die Aufrufschnittstelle der Treiberfunktionen.
- src/bsp/lib: Es enthält zwei files. In printf.c wird die Form der Unterfunktion in der C-Standardbibliothek neu definiert, um printf-Informationen über UART auszugeben. In read.c gibt es eine einfache Funktion zum Lesen von Eingabeinformationen über UART.
Referenzdesign
Nach der Installation finden Sie einige grundlegende Referenzdesigns im Demo-Ordner des Installationsverzeichnisses oder in der Referenzdesign-ZIP-Datei im webSite; das Referenzdesign kann zum Testen, Debuggen und Neuentwickeln durch Importieren in RDS geladen werden. Die Referenzdesigns werden wie folgt angezeigt:
- ae250_demo: Demonstriert UART-Ein-/Ausgabe und GPIO-Ausgabe des AE250.
- ae250_plic: Demonstriert die Reaktion des Interrupt-Controllers auf Interrupts und bietet Demonstrationen des Maschinen-Timers und des Pit-Timers.
- ae250_freertos: Zeigt, dass die AE250-Ports eingebettet sind
Echtzeitbetriebssystem FreeRTOS mit Multithreading-Laufprogramm. - ae250_ucosiii: Zeigt, dass die AE250-Ports eingebettete Echtzeitbetriebssystem uC/OS-III-Multithreading-Programme ausführen.
Dokumente / Ressourcen
![]() |
GOWIN FPGA-Entwicklungsboard RISCV-Programmierung [pdf] Benutzerhandbuch FPGA-Entwicklungsboard RISCV-Programmierung, Board RISCV-Programmierung, FPGA-Entwicklung RISCV-Programmierung, RISCV-Programmierung, Board RISCV |





