Zum Hauptinhalt Zur Navigation

Sipeed Tang Nano im Test: Günstiger FPGA-Einstieg mit Frustpotenzial

20 Euro für ein gut ausgestattetes FPGA -Board klingen verlockend. Wir haben ausprobiert, wie gut sich damit arbeiten lässt - und ob es sich für Einsteiger eignet.
/ Johannes Hiltscher
23 Kommentare News folgen (öffnet im neuen Fenster)
Die Tang Nanos verkauft Sipeed in vier Größen, oben der getestete Nano 9k, unten das kleinste Modell Nano 1k. (Bild: Johannes Hiltscher, Golem.de)
Die Tang Nanos verkauft Sipeed in vier Größen, oben der getestete Nano 9k, unten das kleinste Modell Nano 1k. Bild: Johannes Hiltscher, Golem.de

Der Einstieg in die Welt der rekonfigurierbaren Logik, also den Entwurf eigener Prozessoren mit Field Programmable Gate Arrays (FPGAs), ist nicht günstig: 100 Euro sind für ein Einsteiger-Board schnell ausgegeben. Das ist viel Geld für die ersten Versuche - zumal die Einsteigerboards der Marktführer AMD ( früher Xilinx ) und Intel ( früher Altera ) nicht einmal besonders gut ausgestattet sind. Deutlich günstiger sind die Boards der Reihe Tang Nano von Sipeed: Das günstigste kostet nicht einmal 10 Euro, wir haben das Tang Nano 9k für rund 20 Euro ausprobiert.

Auf den vier Tang-Nano-Boards sind FPGAs des chinesischen Herstellers Gowin verbaut. Sie unterscheiden sich in der Anzahl der Logik-Ressourcen (dazu kommen wir noch im Detail), dem verfügbaren Speicher, ihrer Größe und den verbauten Anschlüssen. Der Chip des Tang Nano 4k enthält neben dem FPGA-Teil zusätzlich einen ARM Cortex-M3-Kern, beim Tang Nano 9k und 20k sind 8 MByte Pseudo-SRAM(öffnet im neuen Fenster) integriert. Für einen FPGA ist das viel Speicher.

Mit 8.640 sogenannten Lookup Tables (LUTs), mit denen Logikgatter nachgebildet werden, ist der GW1NR-9 auf unserem Tang Nano 9k deutlich kleiner als die günstigsten Boards von AMD und Intel. Deren FPGAs verfügen über mehr als doppelt so viele LUTs, die bei Intel Logic Elements (LEs) heißen.

Dafür hat das Tang Nano 9k spannende Anschlüsse: Es kann mit Stiftleisten, die noch selbst eingelötet werden müssen, in ein Breadboard gesteckt werden. Die Stiftleisten einzulöten, ist nicht ganz einfach, da die Platinen sehr dick sind. Außerdem sind eine HDMI-Buchse, ein Mikro-SD-Karten-Slot und gleich zwei Anschlüsse für Displays vorhanden: ein 40-poliger RGB-Anschluss sowie ein achtpoliger SPI-Anschluss (für Serial Peripheral Interface(öffnet im neuen Fenster) ), jeweils für Flachkabel. Bevor wir irgendetwas testen, benötigen wir zunächst die passende Entwicklungsumgebung.

Die Software ist schlank und übersichtlich

Hier sind wir direkt positiv überrascht: Wir müssen lediglich ein rund 380 MByte großes Archiv herunterladen, nach dem Entpacken können wir die Entwicklungsumgebung unter Linux gleich verwenden. Unter Windows muss sie noch installiert werden.

Zum Vergleich: Allein das Installationsprogramm für AMDs Entwicklungsumgebung Vivado ist bereits über 260 MByte groß, während der Installation müssen noch einmal mehrere GByte heruntergeladen werden. Verwendet haben wir die Education-Variante, die bis auf das Tang Nano 20k alle Boards unterstützt und keine Lizenz erfordert.

Übersicht Sipeed Tang Nano
Tang Nano 1k Tang Nano 4k Tang Nano 9k Tang Nano 20k
FPGA GW1NZ-LV1 GW1NSR-LV4C GW1NR-9 GW2AR-18
LUT4 1.152 4.608 8.640 20.736
Register 864 3.456 6.480 15.552
Block RAM (18 kBit) 4 10 26 46
Shadow SRAM (Bit) 4.096 - 17.280 41.472
PSRAM/SDRAM (MByte) - 8 8 8
DSP - 8 10 24
PLL 1 2 2 4
Prozessor - ARM Cortex M3 - -
Flash (kBit) 64 256 608 -
Breadboard I/Os 32 38 45 34
Schnittstellen RGB 40-polig HDMI, DVP HDMI, SPI 8-polig, RGB 40-polig, Mikro-SD-Karte HDMI, RGB 40-polig, Mikro-SD-Karte
Preis (zzgl. Versand) ca. 9 Euro ca. 16 Euro ca. 18 Euro ca. 30 Euro

Die Oberfläche der Software erinnert stark an das zuvor genannte Vivado, wirkt allerdings deutlich aufgeräumter. Dass Marktführer AMD Gowins Vorbild ist, zeigt sich noch an anderer Stelle: Das Layout der Datenblätter ist sehr ähnlich, sogar deren Namensschema gleicht dem von AMD. Allerdings müssen wir bei Gowin einen Account erstellen, um auf die Datenblätter zugreifen zu können.

Aber zurück zur Entwicklungsumgebung: Zunächst probieren wir diese mit den Beispielen, die Sipeed in einem Github-Repository(öffnet im neuen Fenster) bereitstellt, aus. Zunächst ist alles ganz einfach: Wir öffnen die Projektdatei, klicken auf die Schaltfläche Run all , um die Prozesse Synthese und Place & Route zu starten. Die Synthese erzeugt zunächst Schaltplan und Logikgleichungen aus der Hardwarebeschreibung. Place & Route bildet beides dann auf LUTs, Verbindungen und Speicher ab und konfiguriert die sogenannten Switch Boxes (Schaltkästen), welche die Signale zu LUTs und Speicher führen. Nach kurzer Zeit ist die Programmierdatei fertig.

Gowins Software allein reicht nicht

Jetzt stehen wir vor dem ersten Problem: Die integrierte Programmiersoftware will Root-Rechte haben, um eigene Treiber zu laden. Sipeed weist allerdings darauf hin, dass sie eh nicht richtig mit den Boards funktioniert - und schlägt vor, dass wir Openfpgaloader verwenden. Den Ratschlag nehmen wir an, und nachdem wir die Open-Source-Software kompiliert haben, landet die Programmierdatei schnell im FPGA. Programmiert werden die Boards übrigens über eine USB-C-Buchse.

Nach einem ersten erfolgreichen Test wollen wir ein eigenes Projekt starten. Wir wollen den HDMI-Ausgang nutzen , einen passenden IP-Core (für Intellectual Property) haben wir bereits, er muss nur noch für den Gowin-FPGA angepasst werden - was sich jedoch als schwieriger erweist als gedacht.

Funktionsarme Software und schwache Hardware

Mit einem Kintex-7 von AMD schafft unser IP-Core eine Full-HD-Auflösung mit 60 Hertz (1080p60). Dass das mit dem Tang Nano 9k nichts wird, ist schnell klar: Gowins FPGAs schaffen mit ihren differentiellen Ausgängen lediglich eine Signalrate von 1.200 MBit/s. Das ist zwar auf der Höhe der direkten Konkurrenz, AMDs Einsteiger-FPGA Spartan-7 schafft ebenfalls nur 1.250 MBit/s. Für 1080p60 wären aber 1.485 MBit/s erforderlich(öffnet im neuen Fenster) .

Also setzen wir das Ziel niedriger an: 1.280 x 720 Pixel sollten mit 60 Hz auszugeben sein, die Datenrate pro Leiterpaar liegt bei nur 742,5 MBit/s. Erst einmal muss allerdings die Hardwarebeschreibung angepasst werden: Alle herstellerspezifischen IP-Cores etwa zur Takterzeugung und zur Serialisierung der auszugebenden Daten müssen ersetzt werden.

Die Dokumentation des Gowin-FPGAs ist in Ordnung, wenn auch an manchen Stellen arg knapp. Die passenden IP-Cores haben wir schnell gefunden. Wie bei AMD gibt es einen IP-Core Generator, der einige Arbeit bei deren Konfiguration abnimmt. Allerdings scheinen die erzeugten Cores sich nicht nachträglich über den Generator ändern zu lassen.

Debugging gibt es nicht

Leider schleicht sich bei unseren Änderungen ein Fehler ein, weshalb bei der Synthese das böse Erwachen kommt: Der Großteil unserer Funktionseinheiten wird entfernt, weil die Synthesesoftware erkannt hat, dass sie konstante Signale erzeugen.

Das bekommen wir zwar angezeigt, aus welchem Grund die Komponenten entfernt wurden, erfahren wir allerdings nicht. Bei AMDs Vivado hingegen bekommen wir einen sogenannten Trim Report. In ihm dokumentiert die Synthesesoftware, welche Signale konstant sind und warum.

Jetzt heißt es also: Die Hardwarebeschreibung simulieren, um den konstanten Signalen auf den Grund zu gehen. Allerdings fehlt der Entwicklungsumgebung von Gowin ein Simulator. Hier müsste, neben der Programmiersoftware, das zweite externe Programm bemüht werden. Das ist kein grundlegendes Problem, es gibt genügend kostenfreie Software. Die muss allerdings erst eingerichtet werden, damit sie mit Gowins IP-Cores umgehen kann.

Schließlich finden wir den Fehler auch ohne Simulator, ein falsch gesetztes Reset-Signal ist schuld. Leider schafft unser HDMI-Treiber aus dem Stand nicht einmal 720p. Das Problem liegt allerdings in der Erzeugung der TMDS-Daten (für Transition-Minimized Differential Signaling(öffnet im neuen Fenster) ). Hier hatten wir stark auf die LUTs von AMD optimiert, die Triviallösung ist mit den LUTs von Gowin viel zu langsam.

Werfen wir daher noch einen Blick auf die technischen Gemeinsamkeiten und Unterschiede.

Technik im Detail

Auch wenn der Aufbau aller FPGAs grundlegend gleich ist, gibt es doch einige Unterschiede. Der fundamentalste ist die Größe der LUTs: Während diese bei AMD sechs Eingänge haben (LUT6), sind es bei Gowin nur vier (LUT4). Das hat direkte Auswirkungen auf die Leistung: Komplexe Logikgleichungen benötigen bei Gowin mehr LUTs, was ein langsameres Design bedeutet.

Wie groß der Unterschied ist, haben wir mit einem IP-Core ausprobiert, der einen 32-Bit-CRC-Prüfwert (für Cyclic Redundancy Check(öffnet im neuen Fenster) ) berechnet. Entwickelt wurde er für PCIe, in jedem Takt wird ein Byte verarbeitet. Auf einem Spartan-7 erreichen wir damit mehr als die erforderlichen 250 MHz, der GW1NR-9 knackt gerade einmal die 100 MHz.

Der Grund dafür liegt in einer Tabelle, die zur CRC-Berechnung genutzt wird. Sie sollte als ROM in den LUTs angelegt werden, ein Feature, zu dem wir gleich noch kommen. Da jede LUT bei Gowin 16 Bit speichert, bei AMD jedoch 64 Bit, wären viermal so viele LUT4 erforderlich wie LUT6. Der Aufwand hierfür wäre so hoch, dass die Synthesesoftware lieber gleich den langsameren Block RAM für die Tabelle verwendet - zu dem wir jetzt kommen.

Die Funktionalität der Hardware überzeugt

Arbeiten lässt sich mit den Gowin-FPGAs allerdings ebenso gut wie mit denen von AMD: SRAM-Blöcke (sogenannte Block RAMs) für größere Speicher sind vorhanden, sogar mit den gleichen Konfigurationen wie bei AMD. Der IP-Core Generator kann damit FIFOs ( First-In-First-Out(öffnet im neuen Fenster) -Speicher) erstellen. Von denen raten wir allerdings ab, wenn Lese- und Schreibtakt unterschiedlich sind, hier scheinen Register für die Statussignale zu fehlen.

Auch lassen sich, wie oben bereits angedeutet, LUTs als Speicher verwenden. Dieses Feature, das AMD distributed RAM nennt, heißt bei Gowin shadow SRAM . Es lohnt sich für kleine, schnelle Speicher und funktioniert, weil die LUTs als SRAM-Zellen implementiert sind - ohne Versorgungsspannung geht die Konfiguration des FPGAs also verloren. Eine Ausnahme stellt der FPGA des Tang Nano 4k dar: Er unterstützt den Schattenspeicher nicht, LUTs lassen sich nur für ROM verwenden.

Daneben sind Blöcke für digitale Signalverarbeitung (Digital Signal Processing, DSP) vorhanden. Sie enthalten je zwei Hardware-Multiplizierer, die mit zwei 18-Bit-Zahlen arbeiten. Um aus dem Systemtakt von 27 MHz andere Takte abzuleiten, sind PLLs ( Phase-Locked-Loops(öffnet im neuen Fenster) ) integriert. Sie erzeugen schnellere und langsamere Takte mit optionaler Phasenverschiebung. Eine Besonderheit bei Gowin ist der integrierte Flash-Speicher.

Auch die Synthesesoftware macht einen ordentlichen Job, sie ist in der Lage, automatisch Speicher aus der Hardwarebeschreibung abzuleiten. Kommen wir nach dem Blick auf die Technik zum Fazit.

Preis, Verfügbarkeit und Fazit

Sipeed verkauft seine FPGA-Boards über Aliexpress(öffnet im neuen Fenster) , der von uns getestete Tang Nano 9k kostet aktuell rund 18 Euro. Steuern und Zollgebühren fallen nicht an, die führt Aliexpress bereits ab. Für den Versand kommen noch einmal knappe 7 Euro hinzu. Das Tang Nano mit mehr als doppelt so großem FPGA kostet aktuell rund 30 Euro.

Die kleineren Boards, das Tang Nano 1k (knapp 9 Euro) und das Tang Nano 4k (rund 16 Euro), finden wir eher uninteressant. Der sehr kleine FPGA des Nano 1k wird schnell zu eng, außerdem kommt das Board ohne SPI-Flash, in dem sich die FPGA-Konfiguration speichern ließe. Der ARM-Kern im Nano 4k kostet einen ordentlichen Aufschlag.

Fazit

Kommen wir also zum Fazit und der Frage: Würden wir einem Einsteiger ein Tang Nano empfehlen oder lieber zu den Branchengrößen raten? Betrachten wir allein Hardware und Preis, fällt die Entscheidung leicht: Hier haben besonders das Tang Nano 9k und 20k deutlich mehr zu bieten als Terasic und Digilent, von denen die Einsteiger-Boards mit Intel- und AMD-FPGAs kommen. Trotz der kleineren LUTs bieten die Gowin-FPGAs ordentliche Leistung, auch weil AMD und Intel hier in den vergangenen Jahren nichts Neues entwickelt haben. Der FPGA des Tang Nano 9k bietet auf jeden Fall ausreichend Platz für die ersten Projekte.

Allerdings ist ein FPGA immer ein Gesamtpaket aus Hard- und Software, und bei Letzterer macht Gowin keine besonders gute Figur. Die Entwicklungsumgebung ist deutlich eingeschränkter als bei den beiden großen Anbietern. Das kann besonders für Einsteiger problematisch werden, da auch die Fehlersuche in Hardwarebeschreibungen erst gelernt werden muss.

Zwar sind Vivado (AMD) und Quartus (Intel) deutlich komplexer, was einige Einarbeitungszeit bedeutet. Aufgrund der größeren Nutzerbasis finden sich aber viel leichter Antworten auf aufkommende Fragen.

Aus diesem Grund können wir die Tang Nanos nur bedingt empfehlen, besonders für Einsteiger: Wer sie kauft sollte sich im Klaren sein, dass zusätzliche Software erforderlich ist, die selbst einzurichten und zu erlernen ist. Wer etwa im Rahmen des Studiums in die Hardwareentwicklung einsteigt, ist mit einem Board des in der Lehre genutzten Herstellers letzten Endes am besten beraten - auch wenn wir diesen Rat selbst nicht gern geben.


Relevante Themen