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?
> 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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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...
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.
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.
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 ...
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.
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.
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.
> 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.