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?
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.
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.
PlasmaHH
johnnymopo
Aenid
John Spence
Tom Tischler
Paebbels
John Spence
Tom Tischler