Forum: FPGA, VHDL & Co. FPGA - Erstes Projekt


von Wühlhase (Gast)


Lesenswert?

Guten Abend allerseits

Ich habe beschlossen, mich auch mal etwas näher mit FPGAs zu 
beschäftigen. Und da ich kein passendes Evaluationsboard finde (die 
meisten Boards, die ich so gefunden habe, sind eher für Übungen die mich 
recht wenig interessieren) hatte ich vor, auch mit FPGAs genauso 
anzufangen wie ich es bei Mikrocontrollern gemacht habe: Ich baue mir 
einfach selber was zum Lernen.

Ich würde am liebsten mit FPGAs von Lattice anfangen, da scheint mir die 
Lizensierung fürs Hobby am einfachsten und sinnvollsten zu sein.
Es gibt - bisher - zwei Dinge, an denen ich mich versuchen will (in 
dieser Reihenfolge):

1. Etwas Signalverarbeitung auf mehreren Kanälen und damit eine 
anständige Leistungsmessung zu bauen.
2. Ethernet-Verkehr mitschneiden und gegebenenfalls manipulieren können.


Jetzt stehe ich vor dem Problem: wie wähle ich denn einen halbwegs 
passenden FPGA aus? Wieviele LUTs brauche ich für eine FFT mit, keine 
Ahnung, sagen wir mal 16 Bit und 10kS/s auf sechs Kanälen?

Und was sind eigentlich so die aktuellen Serien? Ich lese mich gerade 
etwas in den MachXO3D ein - wären die passend oder stehen die kurz vor 
der Abkündigung?

von abc. (Gast)


Lesenswert?

Für die ersten Schritte ist es egal, ob der FPGA abgekündigt ist oder 
nicht. Demo-Board besorgen und ausprobieren.

von def (Gast)


Lesenswert?

er will doch selber eins bauen ...

von oerks (Gast)


Lesenswert?

> da scheint mir die
> Lizensierung fürs Hobby am einfachsten und sinnvollsten zu sein

Eher nicht. Siehe ispLever.
Als relativ stabil wuerde ich eher Altera/Intel und Xilinx ansehen.
Lattice kaeme mir nicht ins Haus.

> wie wähle ich denn einen halbwegs passenden FPGA aus?

Man schreibt seine Beschreibung und laesst das Tool arbeiten.
Da kommen dann die verwendeten LUTs, Multiplizierer und RAMs
im Report.

> eher für Übungen die mich recht wenig interessieren

Auch der Pianist faengt mit Fingeruebungen an.

> Ich baue mir einfach selber was zum Lernen.

Damit machst du dir voellig unnoetig einen Nebenschauplatz auf.
Und mit den Dingen die du vorhast, wird das Board mit Sicherheit
schon etwas komplexer, und damit fehlertraechtiger.
Fuer die ersten Schritte tust du dir damit keinen Gefallen.

von Fitzebutze (Gast)


Lesenswert?

Wühlhase schrieb:
> 1. Etwas Signalverarbeitung auf mehreren Kanälen und damit eine
> anständige Leistungsmessung zu bauen.
> 2. Ethernet-Verkehr mitschneiden und gegebenenfalls manipulieren können.

Das hier 
https://www.latticesemi.com/Products/DevelopmentBoardsAndKits/ECP5VersaDevelopmentKit.aspx

kann das - von der Hardware. Ein Board in der Art selber bauen empfiehlt 
sich für den Anfang eher nicht, Gründe siehe 'oerks'.

Da der ECP5 von yosys/nextpnr recht gut unterstützt wird, hat man auch 
den Aerger mit auslaufenden Lizenzen nicht. Gibt dazu 'legale' fertige 
Docker container, so dass man sich auch das Gefrickel mit der 
Installation spart.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Wühlhase schrieb:
> Ich baue mir einfach selber was zum Lernen.
Würde ich auf keinen Fall empfehlen. Kauf ein Evalboard und schau es dir 
genau an. Dann kannst du immer noch selber was basteln.
Sonst ist das wie wenn du eigentlich Fahrradfahren lernen willst, dir 
aber das zugehörige Fahrrad selber zusammenbastelst.

Wenn verfügbar kaufe ich immer Evalboards zum Kennenlernen der 
Bausteine, der gesamten Plattform und der Toolchain.

> Es gibt - bisher - zwei Dinge, an denen ich mich versuchen will (in
> dieser Reihenfolge):
Vor solcherartiges Ansinnen solltest du aber unbedingt die Grundlagen 
des Hardwaredesigns setzen. Denn sonst bastelst du da letztlich einfach 
einen Softcore aufs FPGA und "programmierst" den dann wieder in C, so 
wie du es kennst und gewohnt bist.

> 1. Etwas Signalverarbeitung auf mehreren Kanälen und damit eine
> anständige Leistungsmessung zu bauen.
In welchem Frequenzbereich?

> 2. Ethernet-Verkehr mitschneiden
Dafür gibts doch Wiresharc...
> und gegebenenfalls manipulieren können.
Wie "manipulieren"? Inline, am "lebenden Bit"?
Dann musst du doch das Protokoll auswerten und die Daten darin ändern. 
Dazu brauchst du Wissen über diese Daten.

Aber eigentlich hören sich beide Aufgaben für mich im Grunde nicht nach 
"löse ich mit einem FPGA" an...

> Und was sind eigentlich so die aktuellen Serien? Ich lese mich gerade
> etwas in den MachXO3D ein - wären die passend oder stehen die kurz vor
> der Abkündigung?
Warum sollten die abgekündigt werden? Gibts schon MachXO6?

> in den MachXO3D ein - wären die passend
Wofür brauchst du das "D"?

oerks schrieb:
> Lattice kaeme mir nicht ins Haus.
Kein Problem mit Lattice. Das Gehampel mit der Toolchain gabs bei Xilinx 
auch.

von W.S. (Gast)


Lesenswert?

Wühlhase schrieb:
> Jetzt stehe ich vor dem Problem: wie wähle ich denn einen halbwegs
> passenden FPGA aus? Wieviele LUTs brauche ich für eine FFT mit, keine
> Ahnung, sagen wir mal 16 Bit und 10kS/s auf sechs Kanälen?

Zur Auswahl: Schau dir im Manual an, wie knifflig die diversen 
Konfigurations-Prozeduren so sind. Schließlich kannst du ein FPGA nur 
dann zum Leben erwecken, wenn du es nach dem Einschalten des Netzteils 
erst einmal konfigurierst. Und je komplexer und mit Sicheheits-Zeug 
(über-)beladen das ist, desto schwieriger wird dieses Unterfangen - was 
dich wohl dazu leiten wird, deine Auswahl einzuschränken.

Zu den LUT's: oftmals hängt das von den verbauten Sonder-Logiken ab 
(Akkus, Schieberegister usw.) - da kannst du mit der ISE probieren, in 
welchen Chip dein Projekt hinein paßt.

W.S.

von Testuser (Gast)


Lesenswert?

Wühlhase schrieb:
> Ich baue mir
> einfach selber was zum Lernen.

Kann man machen, habe ich gemacht, ist aber ein fettes weiteres Thema 
das erstmal vom FPGA ablenkt.

Wühlhase schrieb:
> 1. Etwas Signalverarbeitung auf mehreren Kanälen und damit eine
> anständige Leistungsmessung zu bauen.

Das ist eine wunderbare Aufgabe. Definiere was du an Eingängen haben 
willst, also Abtastrate, Auflösung, ... selber bauen lohnt auch da nur 
wenn man lernen möchte, sonst musst du einmal durch das ganze 
Analogdesign durch ...
Und dann braucht man da vermutlich keinen FPGA außer das sind viele 
Eingänge, hohe Abtastrate, ...

Wühlhase schrieb:
> 2. Ethernet-Verkehr mitschneiden und gegebenenfalls manipulieren können.

Sieht schon sportlicher aus. Aber die Frage ist wieso FPGA? Bei hohen 
Datenraten oder zeitkritischen Dingen ist ein FPGA sinnvoll.

Du kannst beide AUfgaben, wie Lothar schrieb, durch eine CPU im FPGA und 
C Code erschießen. Dazu musst du nix selber können. Du klickst nur 
Blöcke zusammen und am Ende programmierst du einen uC.
Wenn du was zum Thema FPGA lernen willst ist das aus meiner Sicht nicht 
sinnvoll. Da solltest du wirklich tiefer eintauchen und in einer 
Hardwarebeschreibungssprache dein eigenes Design hochziehen.

Wühlhase schrieb:
> Jetzt stehe ich vor dem Problem: wie wähle ich denn einen halbwegs
> passenden FPGA aus?

Du beschreibst dein Design, lässt das simulieren bis du keine Fehler 
mehr findest und dann wirfst du das durch die Synthese. Da kommt dann 
raus wie viel das von was braucht.
Aber zum Lernen würde ich ein Eval Board nehmen, dann kannst du auch 
schon vorher auf die Hardware gehen und dort Dinge ausprobieren. 
Ausserdem ist es nicht verkehrt einen dickeren FPGA zu nehmen weil man 
vielleicht irgendwann noch Funktionalität dazubauen möchte.

von Radler (Gast)


Lesenswert?

Lothar M. schrieb:
> Sonst ist das wie wenn du eigentlich Fahrradfahren lernen willst, dir
> aber das zugehörige Fahrrad selber zusammenbastelst.

Genau so haben wir das gemacht: Man Vater hat aus alten Teilen ein für 
mich passendes Rad zusammengebaut, als ich 5 wurde, mich draufgesetzt 
und angeschoben. Ich kam 100m weit, dann habe ich mich hingelegt. Nach 
dem zweiten Versuch bin ich sicher 2 Jahre sturzfrei gefahren. Mit 9 
habe ich angefangen, selber zu bauen, mit 10 kamen die ersten Rennen. So 
ging das Jahr für Jahr weiter. Das erste Rad, dass ich nicht 
zusammengebaut habe sondern komplett vor die Haustür gestellt bekam, 
wurde vom Sponsor geliefert. Das machte Probleme beim schnellen 
Kettenwechsel, die Schaltung hing andauernd und hatte schon mitten in 
der ersten Saison einen Gabelbruch.

Das war das erste und letzt Bianchi in meinem Leben. Danach kam 
Panasonic+Shimano.

Dazu mal eine Frage: Warum bauen die Japaner eigentlich keine FPGA`s?

von Wühlhase (Gast)


Lesenswert?

Erstmal danke für die Rückmeldungen von euch.

So wie ich die Sache sehe, werde ich wohl erstmal beim Simulator bleiben 
und dann erst abschätzen, wie dick der FPGA mindestens sein muß. Wenn er 
fünfzehn statt zehn Euro kostet ist das kein Problem, wenn er zu klein 
ist und einer für 20 Euro besser gewesen wäre, ist das blöd.


Zum Hardwarebau:
Ich habe mal eine Platine mit einem AD-Wandler (16 Bit, 8x100MS/s, inkl. 
Analoggeraffel) und einem Trenz-Board gebaut...irgendein Artix war da 
drauf. Ich hab mir damals die Schaltung vom FPGA-Board durchaus genau 
angesehen - das sind schon recht umfangreiche Schaltungen, aber nichts 
wovor ich mich fürchten würde.
Ich habe noch nicht viele High-Speed-Platinen gebaut, aber ich denke ich 
hab da mittlerweile doch ein wenig Ahnung was ich zu tun habe.

Danke dennoch für den Hinweis mit dem ECP5...das kannte ich noch nicht. 
Da ist zwar vieles drauf was ich nicht unbedingt brauche - und leider 
kein SRAM - ich werds aber trotzdem mal im Auge behalten.
Kann man das Teil auch mit Open Source-Werkzeugen programmieren, oder 
darf ich die Diamondlizenz nach einem Jahr per Einwurf großer Scheine 
verlängern?

Ich habe mich ein wenig mit VHDL befasst...nicht viel und nur 
theoretisch, aber ich denke nicht das ich einen Softcore auf den FPGA 
schieben und dann in C programmieren werde. Und ein paar Grundlagen was 
Logik angeht sind auch noch da...sicher, einiges muß ich nochmal 
auffrischen, aber ich fange nicht bei null an.

Aber wie gesagt...das Thema Hardware werde ich wohl noch etwas 
verschieben und mich erstmal im Simulator austoben.
Danke.

von Fitzebutze (Gast)


Lesenswert?

Wühlhase schrieb:
> Danke dennoch für den Hinweis mit dem ECP5...das kannte ich noch nicht.
> Da ist zwar vieles drauf was ich nicht unbedingt brauche - und leider
> kein SRAM - ich werds aber trotzdem mal im Auge behalten.
> Kann man das Teil auch mit Open Source-Werkzeugen programmieren, oder
> darf ich die Diamondlizenz nach einem Jahr per Einwurf großer Scheine
> verlängern?

Geht alles mit yosys. Nur echtes Dualport-RAM macht Probleme, das wird 
nicht richtig synthetisiert.
Der ECP5-45 hat einiges an internem Block-RAM, reicht für zweimal 
Ethernet und CPU-Kern. Vermutlich fängst du aber erst mal mit dem Blinky 
an.
Siehe auch https://github.com/hackfin/hdlplayground, da sind lauffähige 
Tutorials dabei. Um das Board zu programmieren muss man sich allerdings 
mit der Docker-Umgebung vertraut machen. Ansonsten läuft die Simulation 
online.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

oerks schrieb:
>> da scheint mir die
>> Lizensierung fürs Hobby am einfachsten und sinnvollsten zu sein
>
> Eher nicht. Siehe ispLever.
> Als relativ stabil wuerde ich eher Altera/Intel und Xilinx ansehen.
> Lattice kaeme mir nicht ins Haus.

Lattice ist mit der Lizensierung nervig ... Seit Jahrzehnten muss man, 
um eine Lizenz zu beantragen, die MAC mit Bindestrichen angeben und sie 
haben es nie für nötig gehalten, auch Doppelpunkte (und diese im Backend 
durch Bindestriche zu ersetzen) zu erlauben. Kotzt mich immer wieder an 
;-)

Zusätzlich ist deren Software auch noch grottig schlecht.

Für kleinere Dinge kann man mittlerweile die ice40 (zB icebreaker-board 
mit ice40up5k) empfehlen.

"Kleinere Dinge" sind ... in den ice40up5k passt zB ein ganzer Risc-V 
mit Peripherie (GPIOs, UART, ...). Sowas in der Größenordnung.

Die Opensource-Toolchain funktioniert mittlerweile echt super!

Ansonsten würde ich zu Xilinx oder Altera/Intel raten. Bei Trenz gibt es 
das nette CYC1000 Board. Mit unter 20€ sehr günstig, aber hat 25kLE was 
recht großzügig ist.

Das wären so meine low-cost Empfehlungen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Wühlhase schrieb:
> Aber wie gesagt...das Thema Hardware werde ich wohl noch etwas
> verschieben u

Warum bleibst du nicht bei den Trenzmodulen? Die nehme ich auch. Die 
sind noch  mit am Besten dokumentiert.

von oerks (Gast)


Lesenswert?

> die MAC mit Bindestrichen angeben

> FEATURE LSC_ADVANCED ...
> ... HOSTID=ANY

keine Bindestruche und kwT.

von Christoph Z. (christophz)


Lesenswert?

Wühlhase schrieb:
> oder darf ich die Diamondlizenz nach einem Jahr per Einwurf großer Scheine
> verlängern?

Die Lizenz ist einfach auf ein Jahr begrenzt. Danach kannst du dir 
wieder eine gratis Lizenz für ein Jahr holen.

Microchip/Microsemi macht das auch so. Ist wohl so eine poort-mans 
Methode um zu sehen, wie viele aktive Entwickler es so gibt und um an 
deren E-Mail Adressen zu kommen.

Der Hinweis, das ispLever ohne Vorwarnung kostenpflichtig geworden ist, 
ist korrekt. Sicherlich nervt das, wenn man diese Bausteine Hobbymässig 
nutzt. Vielleicht mal den Lattice FAE anschreiben und etwas auf die 
Tränendrüse drücken.

Mampf F. schrieb:
> Zusätzlich ist deren Software auch noch grottig schlecht.
[...]
> Ansonsten würde ich zu Xilinx oder Altera/Intel raten.

Was passt dir am jetzigen Diamond nicht? Habe ein paar Jahre damit 
gearbeitet und war im Vergleich zu den anderen nicht besonders viel 
besser aber auch nicht nerviger.

Ich geh jetzt mal unseren Make/TCL build flow migrieren von Vivado 
2019.1 auf 2020.2. Irgendein Fileformat ist jetzt ein anderes. Mal 
reinknien...

von Michael W. (Gast)


Lesenswert?

Christoph Z. schrieb:
> Ich geh jetzt mal unseren Make/TCL build flow migrieren von Vivado
> 2019.1 auf 2020.2. Irgendein Fileformat ist jetzt ein anderes. Mal
> reinknien...

Könntest Du als Dienstleistung anbieten. Ich kenne einige, die dafür 
Bedarf hätten.

von FPGAKönig (Gast)


Lesenswert?

Wenn ich daran denke wie oft hier solche Fragen gestellt werden. Wann 
möchte mal jemand ein FPGA Board Finder entwickeln? :D
Eine Weboberfläche wo man seine Kriterien angeben kann und dann werden 
passende FPGA Boards angezeigt.

Scheint etwas zu sein was die FPGA Welt unbedingt braucht.

von Brutus Kyberneticus (Gast)


Lesenswert?

FPGAKönig schrieb:
> Scheint etwas zu sein was die FPGA Welt unbedingt braucht.

Nur die Trott* auf dieser Welt, die anderen verstehen die intensive 
eigene Suche nach dem passenden Board als erste Schritte zum 
Verständnnis dieser Technologie.

PS:
OK, aber manche leben immer noch in der infantilen Vorstellunge man 
könne sich einen Partner fürs Leben wie bei Pizzalieferanten aus der 
Liste der Zutaten zusammenklicken. Deshalb gehen Webseiten zur 
Coitus-Anbahnung wie 'Elite Partner' nie die zahlenden Kunden aus ...

von W.S. (Gast)


Lesenswert?

Wühlhase schrieb:
> Jetzt stehe ich vor dem Problem: wie wähle ich denn einen halbwegs
> passenden FPGA aus? Wieviele LUTs brauche ich für eine FFT mit, keine
> Ahnung, sagen wir mal 16 Bit und 10kS/s auf sechs Kanälen?

Das alles hängt von deiner Planung ab. Bei 6x 10 KSPS kannst du ne Menge 
an LUTs einsparen durch Iterationen etc. also sequentielles Abarbeiten 
von Filtern etc. - aber immer unter der Voraussetzung, daß du deine 
Logik klug planst.

Für's Grobe kannst du ohne Bauteile zu kaufen deine Ideen trocken 
prüfen, indem du in dem jeweiligen Projekt den jeweils größten Chip 
vereinbarst und alles durchlaufen läßt. Wenn alles paßt und du bis zum 
fertig generierten Jedec-File kommst, kannst du im zugehörigen 
Statusbericht lesen, wieviel an vorhandener Logik genutzt wurde. Davon 
ausgehend kannst du dann entscheiden, ob dein Projekt mit dieser 
FPGA-Familie überhaupt umsetzbar ist und welches 'Familienmitglied' du 
zumindest nehmen müßtest. Aber merke dir, daß gerade solche Projekte, 
die  DSP-Funktionalität enthalten, mit manchen FPGA-Familien überhaupt 
nicht machbar sind, währen sie bei einer anderen Familie schon mit dem 
kleinsten FPGA machbar sind.

W.S.

von oerks (Gast)


Lesenswert?

W.S. schrieb:
> Aber merke dir, daß gerade solche Projekte,
> die  DSP-Funktionalität enthalten, mit manchen FPGA-Familien überhaupt
> nicht machbar sind, währen sie bei einer anderen Familie schon mit dem
> kleinsten FPGA machbar sind.

Aha, welche Familie ist den so DSP-(un)/freundlich?
Und was passt dann in das kleinste FPGA?

Bei 6x 10 kSps wuerde ich noch reelle Chancen sehen, dass das
sogar in einen (kleinen) Cyclone I passt, der noch nicht mal einen
Hardwaremultiplizierer hat. Das man dann mit den in der Hardware
realisierbaren Multiplizierern "iterieren" oder "muxen' muss,
ist ja bei 100 µs auch kein grosses Problem.

von Gustl B. (-gb-)


Lesenswert?

oerks schrieb:
> Aha, welche Familie ist den so DSP-(un)/freundlich?

Kommt auf die Anforderungen an.

oerks schrieb:
> Bei 6x 10 kSps

Da fehlen noch echt viele Details. Wenn damit nix gemacht werden muss 
mit den Abtastwerten dann braucht es auch keine DSPs. Wenn da irre lange 
FIRs gerechnet werden sollen dann braucht es sogar viele DSPs.

oerks schrieb:
> Und was passt dann in das kleinste FPGA?

Kommt drauf an was man will. Da passen schon einige Multiplizierer rein. 
Abhängig von Pipeline oder in einem Takt, Breite, ...

Das kannst du aber alles selber ausprobieren, ganz ohne Hardware. 
Einfach beschreiben, die Herstellerwerkzeuge bauen lassen und gucken was 
die so an Hardware haben wollen.

von oerks (Gast)


Lesenswert?

> Da fehlen noch echt viele Details.

...:
> brauche ich für eine FFT mit, keine
> Ahnung, sagen wir mal 16 Bit und 10kS/s auf sechs Kanälen?


> Das kannst du aber alles selber ausprobieren, ganz ohne Hardware.
> Einfach beschreiben, die Herstellerwerkzeuge bauen lassen und gucken was
> die so an Hardware haben wollen.
Das schrieb ich auch schon.

Meine Frage war auch eher an W.S. gerichtet.

von Traurig (Gast)


Lesenswert?

Wo kriegt ihr bitteschön fpgas her? Alles leergefegt. Lieferdatum: 2022

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.