Sind FPGAs intuitiver zu erlernen als Mikroprozessoren für DSP?

Ich möchte lernen, wie man DSP-Hardware herstellt

Ich habe noch nie DSP gemacht und nur ein bisschen programmiert, aber ich baue seit 15 Jahren analoge Schaltungen. Ich mag die Idee, FPGAs zu lernen, weil es eher wie das Bauen von Schaltkreisen klingt, aber die Leute sagen oft, FPGAs seien wirklich schwierig. Vielleicht sind diese Leute an sequentielle Programmierung gewöhnt. Ich frage mich, ob FPGAs leichter zu erlernen sind als Mikroprozessoren, wenn sie die Dinge tun, in denen FPGAs gut sind. Wenn ich beispielsweise einen FIR-Filter erstellen möchte, ist ein FPGA dann intuitiver?

Nein​​​​​​​​​​​​​​​​​​​​​​​
Viele FPGAs enthalten DSP-Ressourcen, und die Software des Anbieters enthält Kerngeneratoren, die den DSP-spezifischen Code für Sie schreiben, z. B. einen FIR-Filter, den Sie in einem Assistenten konfigurieren können. Allerdings kann es sehr kompliziert sein, das FPGA beim ersten Crack herauszufinden, mehr als nur HDL-Code. Aber mit einem FPGA haben Sie die ultimative Flexibilität.
Möglicherweise finden Sie es nützlich, DSP in Matlab oder einer ähnlichen Umgebung zu studieren, bevor Sie eingebettet werden.
Ich kann mir vorstellen, dass es nützlich sein wird, sich auf Matlab zu stützen, um allgemeine Konzepte von DSP zu lernen, aber es wird mir nichts über den physischen Kontext des DSP beibringen, der auf einer bestimmten Hardware implementiert ist. Es ist dieser physische Kontext mit weniger Abstraktionsebenen, der an FPGAs so attraktiv erscheint. Vielleicht sollte ich auch anfangen, auf YouTube Tutorials vom Typ einfache blinkende LEDs zu kaufen. Ich lerne auch die mathematischen Sachen, wie Fourier-Transformationen, Faltung, Laplace und solche Sachen.
Um ehrlich zu sein, lernen Sie in blinkenden LED-Tutorials nichts über FPGAs. Vielmehr müssten Sie anfangen zu erforschen / lernen, wie sich digitale Logikschaltungen verhalten, und versuchen, verschiedene Schaltungen rein logisch darzustellen (Zähler, Register, Gatter usw.).
Wenn Sie aus der analogen Schaltung kommen, sind Sie zumindest mit dem Konzept vertraut, dass alles parallel passiert. Das Schreiben von HDL ist nicht wie sequentielles, prozedurales Programmieren. Wenn Sie diesen Hügel genommen haben, ist das FPGA-Design so einfach/kompliziert wie das analoge Design :).
@TomCarpenter Ich erinnere mich, dass ich vor Jahren am College einen binären Addierer aus Logikgattern gemacht habe. Ich genieße es, solche Sachen zu lehnen.
Wenn Sie digitale Logik mögen, lohnt es sich auf jeden Fall, mit FPGAs herumzuspielen und Verilog zu lernen. Es könnte sich lohnen, so etwas wie ein Papilio-Board zu kaufen, das ziemlich günstig ist.

Antworten (4)

Nehmen Sie einen Tipp mit, in welche Richtung sich die Profibranche bewegt. Einige Organisationen programmieren die DSP-Teile ihrer FPGAs, indem sie ein MATLAB- oder C-Programm schreiben und es dann mit einem Synthesetool in VHDL kompilieren. Ähnlich wie die meisten Leute aufhörten, Maschinencode oder Assembler zu schreiben, als Compiler als Mittel akzeptiert wurden.

Diese Tools sind jedoch normalerweise sehr teuer, und es ist eine enorme Lernkurve, ihnen Hinweise zur Parallelisierung des Designs zu geben, sodass sie derzeit für Bastler nicht anwendbar sind. Sie werden auch nicht von vielen Unternehmen für die Produktion verwendet, denn es gibt immer noch viele DSP-Ingenieure, die murren, „das können sie auf der Hardware besser als ein Compiler“, so wie Assembler-Programmierer vor 30 Jahren murrten.

Auch wenn Sie irgendwann tatsächlich auf Hardware abzielen möchten, beginnen Sie immer mit einem einfach zu verwendenden Tool wie MATLAB (kostenpflichtig), Octave (kostenlos) oder Python+numpy+matplotlib (kostenlos), damit Sie sehen können, was passiert, und einen Test generieren können Vektoren, um Ihre Hardware zu testen.

Sie können Audio-DSP problemlos in einigermaßen verfügbaren DSP-Mikroprozessoren ausführen. Für Hochfrequenzarbeiten ist jedoch ein FPGA erforderlich.

Neil, Sie scheinen anzudeuten, dass eine Hardwarebeschreibungssprache eine Arbeitsweise auf niedriger Ebene ist, aber ich dachte, dass es Möglichkeiten gibt, HDL mit grafischen Techniken zu erstellen, die eher einer schematischen Zeichnung ähneln. Das wäre eine Arbeitsweise auf hohem Niveau, die ein FPGA besser beschreibt als die C-Programmierung. Sorry, dass ich nicht zu viel recherchiert habe.
@NickCollier Der Eintrag auf Schaltplanebene für FPGA-Designs ist so gut wie nutzlos. Sie würden am Ende mehr Zeit damit verbringen, Dinge mit unausgegorenen Tools zu verbinden, als sie nur in HDL zu schreiben. In Bezug auf die Beschreibung dessen, was in einem FPGA vor sich geht, sind HDL-Sprachen weit überlegen und könnten in gewisser Weise als höherrangig angesehen werden als der schematische Eintrag. Sie können C nicht wirklich verwenden, um FPGAs zu beschreiben, sie sind völlig unterschiedliche Bestien, aber DSP-Sachen neigen dazu, ziemlich prozedural zu sein, also können Sie es bis zu einem gewissen Grad in C beschreiben und das auf ein FPGA portieren (aber die Werkzeuge dafür sind es unterentwickelt).
Darüber hinaus wurde HDL speziell entwickelt, weil die Leute es satt hatten, ICs grafisch zu gestalten und zu entwerfen, was viele Jahre lang die einzige Möglichkeit war. HDLs sind in der Tat ein Schritt nach oben.
Was Tom gesagt hat. Grafische Eingabemethoden sind in der Regel an ein Tool und oft effektiv an eine Version gebunden. Reiner Text VHDL funktioniert mit jedem Anbieter, Tool, Simulator, jederzeit, überall und überall. Sie können C verwenden, um die rechenintensiven Teile des Entwurfs zu beschreiben, diese auf parallele Hardware zu kompilieren und dann das System mit VHDL zu „verkabeln“. MATLAB verfügt zwar über ein grafisches Tool namens Simulink, das den DSP-Blockeintrag "erleichtert", das als Quelle für kompiliertes VHDL verwendet werden kann, aber das ist viel Geld.

Ob Sie einen Mikrocontroller mit DSP-Funktionalität, einen DSP-Chip oder ein FPGA verwenden, ist (zumindest theoretisch) nicht so wichtig, wie welche Algorithmen und Filterkoeffizienten Sie verwenden. Sobald Sie also den Sprung zur digitalen Verarbeitung geschafft haben, stellt sich die Frage, ob Sie die Leistung benötigen, die Ihnen nur ein FPGA bieten kann, oder nicht. Selbst innerhalb eines FPGA-Designs müssen Sie verschiedene Kompromisse eingehen, zum Beispiel führen wir eine CORDIC-Berechnung durch und um Ressourcen zu sparen, serialisieren wir die Berechnungen, sodass weniger Multiplikatoren erforderlich sind. Sie können kleine Änderungen wie das Entrollen von Schleifen mit Mikrocontrollern vornehmen, aber im Grunde bleiben Sie bei den Prozessoren auf dem Chip und das war's.

Ich glaube nicht, dass es einfacher ist, FPGAs zu verwenden. zum Beispiel) und der Stromverbrauch ist auch variabler. Denken Sie daran, dass Sie normalerweise andere Funktionen benötigen, um Signale ein- und auszugeben und für Überwachungsaufgaben. Chips wie der Zynq kombinieren einen kleinen 32-Bit-Mikrocontroller-ARM-Kern mit einem FPGA und sollten das Beste aus beiden Welten sein, aber wir haben festgestellt, dass die Lernkurve selbst mit teuren Tools wie kostenpflichtigen MATLAB-Paketen ziemlich mühsam ist. Es gibt viele Beschwerden über die Vanilla-FPGA-Tools, wenn Sie sich die Foren ansehen, und sie neigen dazu, teuer zu sein, wenn Sie alle Funktionen benötigen.

Im Moment denke ich, dass die Kombination aus Prozessor und FPGA eine gute Lösung für viele Signalverarbeitungsaufgaben ist, ob integriert oder nicht (es gibt auch die Möglichkeit von „weichen“ Prozessoren auf dem FPGA, aber sie sind in der Regel etwas enttäuschend Leistung und verbrauchen viele Ressourcen).

FPGAs sind teurer, komplexer, haben weniger benutzerfreundliche Softwaretools und sind schwieriger zu debuggen.

Ich würde sagen, dass der einfachste Weg, mit DSP anzufangen, in PC-Software ist, beginnend mit übergeordneten Tools wie Matlab, Sprachen mit mittlerem Schwierigkeitsgrad wie Python (mit numpy ist dies ziemlich schnell genug für bloßes Audio) bis hin zu C.

Sobald Sie einen Algorithmus haben, der in C funktioniert, kann er auf einen Mikrocontroller oder einen dedizierten DSP portiert werden.

Viele haben darauf hingewiesen, dass FPGA für das Erlernen der DSP-Algorithmen selbst schwierig sein kann. Ich denke, einer der Hauptgründe für die Verwendung eines FPGA ist die Reduzierung der Verarbeitungszeit. Die Implementierung eines Algorithmus auf dem FPGA erfordert jedoch das Erlernen einer HDL. Selbst wenn Sie vorgefertigte IPs verwenden, müssen Sie dennoch eine Verbindung herstellen und bei Bedarf eine Inter-IP-Kommunikation durchführen. Ein DSP-basierter Mikrocontroller wäre viel einfacher zu handhaben.