Lizenzfreie Prozessoren Freie FPGA-Softcore-CPUs auf RISC-V-Basis

Von Johannes Schwenk*

Anbieter zum Thema

Die quelloffene Befehlssatzarchitektur RISC-V gewinnt stetig Marktanteile. Neben kommerziell verfügbaren Hardware-Prozessoren ist auch die Implementierung als Softcore-CPU in FPGAs eine interessante Alternative zu bereits etablierten Lösungen.

Der PolarFire SoC des M100PFS SoMs kombiniert einen vierfachen 64-Bit RISC-V 64GC-Kern und einen 64-Bit RISC-V 64 IMAC-Monitorkern. Das SoM zielt auf Anwendungen wie Smart Embedded Vision, Industrieautomatisierung, Telekommunikation und IIoT.
Der PolarFire SoC des M100PFS SoMs kombiniert einen vierfachen 64-Bit RISC-V 64GC-Kern und einen 64-Bit RISC-V 64 IMAC-Monitorkern. Das SoM zielt auf Anwendungen wie Smart Embedded Vision, Industrieautomatisierung, Telekommunikation und IIoT.
(Bild: ARIES Embedded)

RISC-V startete 2010 als Projekt der Universität UC Berkeley mit dem Ziel, eine offene Befehlssatzarchitektur (Instruction Set Architecture, ISA) zu entwickeln. Ursprünglich war es für Forschung und Lehre ausgelegt, da kommerzielle Architekturen wie x86 oder Arm komplex sind und Lizenzgebühren kosten. Bereits früh wurden Industriepartner mit in die Entwicklung einbezogen. Freie Verfügbarkeit war bei RISC-V von Beginn an ein wichtiges Thema. Die ISA unterliegt der BSD-Lizenz. Diese ermöglicht den Einsatz im Forschungsbereich, bietet aber auch die Möglichkeit, kommerzielle Produkte zu entwickeln und dabei eingesetztes Knowhow zu schützen.

RISC-V ist vom Design her auch für den Einsatz in der Industrie ausgelegt. Die Spanne reicht von 32- über 64- bis hin zu 128-Bit-Versionen der Architektur. Sie kann als Softcore-Prozessor in FPGAs oder auch als ‚harte‘ Implementierung in einer CPU verwendet werden. Beispiele für RISC-V-Umsetzungen als ‚hartes‘ System-on-Chip sind der Single Core RZ/Five von Renesas und das Polarfire SoC-FPGA, bei dem Microchip insgesamt fünf RISC-V-Kerne mit einem Low–power Mid-range FPGA kombiniert. In der Praxis umfasst die Spanne Kleinsysteme auf Microcon­troller-Niveau bis zu komplexen Systemen im Supercomputer-Bereich. RISC-V wird auch häufig in Form von Support- und Kontrollprozessoren, beispielsweise in Grafikkarten oder Smartphones, eingesetzt.

Bildergalerie

Die Spezifikationen für die zentralen RISC-V-Komponenten wurden 2019 ratifiziert. Dabei ist die Architektur in Funktionskomponenten unterteilt. Die Bezeichnung „RV32IMC“ definiert die „RV32I“-Basisarchitektur mit 32-Bit-Registern. Der Zusatz ‚M‘ steht für die Funktion ‚Multiplikation und Division‘ und ‚C‘ für komprimierte Instruktionen. Insgesamt sind mehr als 16 Exten­sions verfügbar, zum Beispiel Single-/Double-/Quad-precision Floating Point, Atomic Instructions, Hypervisor etc. Die Instruktionen des RV32I teilen sich auf sechs Grundformate auf: Register-zu-Register-Operationen (R-Type), Short Immediates und Ladebefehle (I-Type), Instruktionen zum Abspeichern von Datenworten (S-Type), bedingte Verzweigungen (B-Type), Befehle für Long Immediates (U-Type) und unbedingte Sprünge (J-Type). Der mit RVI32I vorgegebenen Architektur entsprechend sind diese Befehle 32 Bit breit angelegt und werden in einem Taktzyklus ausgeführt.

Warum RISC-V auf FPGAs ?

Werden Softcore-Prozessoren auf FPGAs integriert, sind diese oft durch den Hersteller des FPGAs vorgegeben. Die meisten Anbieter bieten eigene Softcore-CPUs zusammen mit den notwendigen Tools an, etwa Compiler-Toolchains, Binutils und Libraries. Positiv wirkt sich für den Entwickler aus, dass damit auch die Instandhaltung und Weiterentwicklung dieses Ökosystems inbegriffen ist, er muss sich um diese Themen nicht kümmern. Diese Softcore-CPUs sind meistens durch entsprechende Lizenzvereinbarungen geschützt und damit an den Einsatz auf der ursprünglichen FPGA-Technologie gebunden. Sie können nicht frei, z. B. auf FPGAs anderer Hersteller, migriert und weiterverwendet werden.

Die RISC-V-Technologie bietet hier den Vorteil, offen in der Verwendung zu sein und mit ihrem Lizenzmodell den Einsatz auf unterschiedlichsten FPGA-Familien zu unterstützen. Der Vorteil für die Entwickler besteht darin, entwickelte FPGA-IP weiter auch auf anderen Architekturen nutzen zu können. Das ist speziell bei abgekündigten oder aktuell schwer verfügbaren FPGAs oder neuen Zielarchitekturen von Nutzen. ARIES Embedded (Aries) unterstützt die Verwendung von RISC-V Softcore-Prozessoren aktuell auf Microchips PolarFire FPGAs sowie auf MAX10 FPGAs der Intel Programmable Solutions Group (Intel PSG). Über die Etablierung eines jeweils geeigneten Ökosystems hinaus konnten die Standardmodule (System-on-Modules, SoM) beider FPGA-Familien erfolgreich bei Machbarkeitsstudien, Prototypen und Nullserien, Prüfgeräten sowie in der Serienproduktion eingesetzt werden. Der RISC-V-Softprozessor wurde dabei sowohl als Hauptprozessor, z. B. zum Berechnen von Messwerten, als auch als Systemcontroller für die Systeminitialisierung und Überwachung verwendet.

Die M100PF-Module unterstützen Microchip PolarFire FPGAs in Größen von 109 kLE bis 300 kLE (LE: Logical Element) und kombinieren das FPGA mit Fest- und Arbeitsspeicher, einem intelligenten Power-Management sowie einem programmierbaren Taktgenerator. Polarfire FPGAs sind aufgrund ihrer geringen Verlustleistung für viele unterschiedliche Märkte prädestiniert. Seitens Microchip werden offiziell mehrere MIV RV32I-basierte Softcore-CPUs angeboten.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Die MAX10 basierten Module sind in zwei Ausprägungen verfügbar. Während die MX10-Module die größeren FPGA-Typen bis hin zu 50 kLE unterstützen und für den Einsatz in professionellen Applikationen gedacht sind, zielen die SpiderSoM-Module auf den Einsatz im Hobby-Umfeld ab und unterstützen die kleineren FPGAs mit 2 kLE und 8 kLE. Beide Modulfamilien können auf dem gleichen SpiderBase-Basisboard verwendet werden. Das SpiderBase bietet 4 PMOD-kompatible Steckverbinder, ein Arduino-Shield-kompatible Interface und einen Prototypenbereich, in dem Fädelaufbauten leicht realisiert werden können. SpiderSoM und SpiderBase sind mit allen Design-Daten zu Stromlaufplan, Leiterplatte und Stückliste als offene Hardware verfügbar.

Intel unterstützt offiziell den NiosV/m Softcore-Microcontroller, der auf einem RV32IA-Core basiert. Die MAX10-basierten SoMs enthalten einen PIC-Microcontroller, worüber sie mit dem Host-PC über die USB-Schnittstelle verbunden werden können. Das FPGA lässt sich dadurch mittels OpenOCD programmieren. Auch die serielle Kommunikation (UART) findet über diese USB-Schnittstelle statt. Intels Programmierumgebung für MAX10 FPGAs – Quartus Prime – bietet den Intel Platform Designer (Qsys) an, mithilfe dessen verschiedenste IP-Cores über den Avalon-Interconnect mit dem RISC-V Core verbunden werden können. Dieser agiert dort als Host und kann mit mehreren Agents, wie in etwa ein UART Core oder On-Chip RAM, interagieren.

Freie RISC-V Cores und weitere Tools

Aries bietet das „riscv-on-max10“-Repository auf GitHub an. Dort werden die Referenzprojekte gehostet, um RISC-V-Cores auf den MAX10-Modulen zu benutzen. Die Cores sind unter MIT- oder ISC-Lizenz verfügbar. Drei Open-Source-Cores stehen bereit: SERV, entwickelt von Olof Kindgren, PicoRV32, entwickelt von Claire Wolf, und VexRiscv, entwickelt von SpinalHDL. Die CPU-Cores sind als Qsys-Design verfügbar und lassen sich auf einfache Art und Weise in das FPGA-System integrieren.

SERV (SErial Risc-V) ist ein Prozessordesign von extrem kleiner Größe, das den RV32I-Befehlssatz vollständig unterstützt, jedoch verarbeitet der Core nur jeweils ein Bit pro Zyklus. Als logische Folge daraus benötigt der SERV-Core in etwa nur 1 Prozent der Ressourcen des MX10-U-Moduls. Als Kompromiss für den geringen Platzbedarf im FPGA müssen mindestens 32 Takte für die Abarbeitung einer Instruktion investiert werden. SERV eignet sich also ideal für Anwendungen, welche die Vorteile einer CPU genießen wollen und geringe Leistungsanforderungen haben, dafür aber an FPGA-Ressourcen sparen wollen. Die Funktionalität des SERV-Cores wurde anhand der Compliance-Tests von RISC-V International geprüft.

Mit PicoRV32 ist ein weiterer Softcore-Prozessor verfügbar, der mehrere Optionen zur Optimierung von Core-Größe und -Leistung bereitstellt. Er verwendet das RISC-V RV32IMC Instruction Set und kann als RV32E, RV32I, RV32IC, RV32IM, oder RV32IMC instantiiert werden. Als Option kann ein Interrupt Controller verwendet werden. Der Core ist auf geringe FPGA-Ressourcen und höhere Taktraten optimiert und wurde ursprünglich als Hilfsprozessor für FPGAs und ASICs entwickelt. Die unterstützten Befehlssätze umfassen RV32E bis RV32IMC. PicoRV32 ist ohne Pipeline ausgestattet, was das Debugging von Applikationen oder Cores vereinfacht.

Der Open-Source-Core VexRiscv wird mit Hilfe des Tools SpinalHDL in die Hardwarebeschreibungssprache Verilog übersetzt. Das Ergebnis kann so in Quartus verwendet werden. Der VexRiscv verfügt über fünf Pipelines (fetch, decode, execute, memory und writeback) und weitere konfigurierbare Features. Im Repository werden fünf vorkompilierte Konfigurationen angeboten, welche die Befehlssätze RV32I bis RV32IMAFC unterstützen. VexRiscv erreicht von den im Repository verfügbaren Cores die höchste Leistung, in der größten Ausführung verfügt VexRiscv auch über eine Floating-Point-Unit.

Für alle bereitgestellten Cores existiert jeweils ein Interrupt-Controller, der Timer-, Software- und externe Interrupts implementiert. Zusätzliche Funktionen können durch den Entwickler selbst realisiert oder aber als kommerzielle Dienstleistung beauftragt werden. Um neben einer geeigneten Auswahl an RISC-V-basierten Soft­core-CPUs auch eine geeignete Softwareentwicklungsumgebung anbieten zu können, wurde FreeRTOS als Embedded-Betriebssystem angepasst. FreeRTOS bietet den Vorteil einer sehr breiten Architekturunterstützung. Neben Mikrocontrollern werden auch die Softcore-CPUs der etablierten FPGA-Hersteller unterstützt. Für jeden der im Repository bereitgestellten Cores liegt eine entsprechende Portierung inklusive eines kleinen Beispiels vor. Der Anwender hat dadurch leichtes Spiel, erste Cores zu instanziieren und zu erweitern, erste Schritte bei der Entwicklung und Anpassung von Software zu machen, und damit eine Plattform zu entwickeln, die unabhängig vom verwendeten FPGA frei für eigene Projekte eingesetzt werden kann.

Softcore-CPUs – alles in einem Pack

CPU-Softcores auf FPGAs können die Vorteile beider Architekturen ausnutzen. Allgemeine und flexible Lösungen lassen sich schnell auf der CPU implementieren, während das FPGA für effiziente, performante und zeitkritische Lösungen bereitsteht. Das Projekt ist in sich geschlossen und verzichtet auf externe Abhängigkeiten, wie etwa einen Bootloader oder ein höheres Betriebssystem. Die Firmware für den RISC-V-Core wird über ein Makefile-Projekt als „bare metal“ erstellt. Damit sind sämtliche Komponenten der Firmware, von der C-Runtime bis zum Code, der LEDs blinken lässt, in der erzeugten Binärdatei enthalten.

Nach der Installation des RISC-V-GCC-Compilers genügt ein Aufruf von „make“ im Terminal, um die Firmware zu erstellen. Mit einem Klick in der FPGA-Design-Suite wird das FPGA-Image erstellt und kann ebenso einfach auf das Modul programmiert werden. Sei es für Hobbyisten im Privatgebrauch oder in industriellen Applikationen, mit dem simplen Buildprozess lässt sich jedes Projekt mit RISC-V erweitern. Viele FPGA-Hersteller stellen eine solide Auswahl an IP-Cores zur Verfügung, die in einem möglichen Design verwendet werden kann. Über eine Wishbone-Bridge lässt sich zusätzlich ein noch größeres Repertoire an Open-Cores in das System einbinden.

Die für die MAX10 SoMs MX10 und SpiderSoM erstellten Beispiele umfassen zur Demonstration standardmäßig einen RISC-V Core, On-Chip-Memory initialisiert mit der Firmware, eine UART-Schnittstelle verbunden mit dem PIC-Microcontroller und GPIO, das einen Binärzähler auf dem PMod des Spider-Baseboard anzeigt. Das Spider-Baseboard verfügt neben PMod auch über einen Arduino-Shield-Konnektor. Somit können eine Vielzahl von Peripheriegeräte direkt an das RISC-V-System angeschlossen werden. Beispielsweise lässt sich das System mit einem Touchscreen oder I2S-Soundmodul erweitern, auf der Seite des FPGAs wird die Steuerung mithilfe von Open-Cores und Firmware realisiert. MX10- und Spider-SoMs inklusive Spider-Baseboard sind bereits für unter 100 Euro erhältlich. (me)

* Johannes Schwenk ist Software Developer bei ARIES Embedded

(ID:48675322)