Ich muss die digitale Signalverarbeitung auf 8 analogen Leitungen bei 10 kHz durchführen. Dies ist eine ziemlich anspruchsvolle Aufgabe, und ich dachte, dass ein FPGA der richtige Ansatz sein könnte. Ich suche derzeit nach Entwicklungskits von Xilinx, und da ich keine Erfahrung mit FPGA habe, fällt es mir wirklich schwer, den richtigen Chip auszuwählen. Ich stellte mir vor, ein Entwicklungskit zu verwenden und es mit den E / A-Pins zu erweitern, um einen 8-Kanal-A / D-Chip und einen 8-Kanal-D / A-Chip anzuschließen.
Was sind die Unterschiede zwischen der Verwendung von Spartan, Virtex, Altera usw.? Ich weiß nicht einmal, wie ich abschätzen soll, wie viele Tore ich brauchen werde. Gibt es dafür Faustregeln? Wie stelle ich sicher, dass die Taktrate ausreicht (abhängig von der Anzahl der Additionen und Multiplikationen)? Ist es schwierig, eine Gleitkomma-Verarbeitung auf einem FPGA durchzuführen, sollte ich mich an die Festkomma-Mathematik halten? Wie fange ich am besten an?
Ich benötige eine unter Linux programmierbare Lösung. Xilinx bietet dies, aber ich bin mir nicht sicher, welche Einschränkungen bestehen.
quelle
Antworten:
Ich würde kein FPGA verwenden.
Sie erwähnen, dass Sie keine Erfahrung mit FPGAs haben und dennoch daran interessiert sind, digitale Signalverarbeitung auf einem FPGA durchzuführen. Numerische Manipulation und Signalverarbeitung sind schwierig genug, um auf einem Computer / DSP / Mikroprozessor, bei dem die Programmiertools konventionell sind, richtig zu funktionieren Programmierung. Es scheint mir, dass die Verwendung eines digitalen Signalverarbeitungsprojekts für ein erstes FPGA-Projekt wahrscheinlich ein Rezept für Frustration ist.
Wenn Sie FPGAs erlernen möchten, versuchen Sie, etwas zu tun, das besser für die Entwicklungstools geeignet ist, z. B. Statusmaschinen oder die Verarbeitung von Kommunikationspaketen.
Für ein DSP-Projekt wie das, was Sie beschrieben haben, würde ich stattdessen einen DSP oder Cypress PSOC oder einen Analog Devices Microconverter (= Mikrocontroller mit integriertem ADC + DAC) empfehlen.
(Vollständige Offenlegung, die einen Anhaltspunkt für meinen Rat gibt: Ich benutze selbst keine FPGAs. Ich habe in seltenen Fällen programmierbare Logik = PLDs verwendet. Mein Mitarbeiter verwendet häufig FPGAs, und ich habe genug VHDL / Verilog-Code gesehen, der sich seine ansieht Schulter zu wissen, dass es gut für Bit-Manipulationen geeignet ist. Er ist ein erfahrener Ingenieur mit viel Erfahrung mit FPGAs. In einem kürzlich geführten Gespräch mit ihm, in dem er einige ziemlich einfache Berechnungen für Ganzzahlen mit verschiedenen Bitbreiten durchführte, sagte ich ihm, dass er benötigt Zeichenverlängerung auf der kürzeren Bitbreitenzahl durchführen, um sie richtig zu subtrahieren, und er bekam diesen Gesichtsausdruck wie "Oh Mann, ich möchte keine Zeichenverlängerung machen müssen ..." Hinzufügen und Subtrahieren In einem FPGA ist das nicht sehr schwierig. Neben Addition und Subtraktion müssen Sie auch die Tools und Bibliotheken kennen.Und Gleitkomma-Verarbeitung ??!? !! ??!? !!?)
quelle
Sie sind alle ziemlich gut. Sie werden nicht zu viel aus dem FPGA herausholen müssen, um so etwas Einfaches zu tun, daher sollte jedes FPGA für Anfänger (wie die Spartan-3-Linie) ausreichen.
Nur zur Warnung: Die Programmierung eines FPGA ist ein LOOOOTTTTTT, der sich von C ++, C, Perl unterscheidet. Ich würde vorschlagen, mit Verilog zu beginnen, da es wahrscheinlich einfacher ist, in VHDL überzugehen. VHDL ist jedoch sehr COBOL-artig verilog ähnelt eher modernen Programmiersprachen.
Über die Taktrate: Mach dir keine Sorgen. Der Vorteil der Verwendung von FPGAs besteht darin, dass sie massiv parallel sind. Obwohl ein 50-MHz-Takt nach heutigen Maßstäben lächerlich langsam erscheint, sollten Sie bedenken, dass sie Hunderte von Dingen gleichzeitig ausführen können, während eine "normale" CPU mit 3 GHz Dinge in die Warteschlange stellen muss nacheinander aufstehen. Dies ist der Vorteil der Verwendung von FPGA: Parallelität. Für etwas Spezialisiertes müssen Sie sich also nicht so sehr um die Geschwindigkeit kümmern.
Aber wie der andere Kommentar ist es ein ganz anderes Paradigma. Die Lernkurve ist steil, aber sobald Sie die Sprache verstanden haben, ist alles sinnvoll (stellen Sie sicher, dass Sie die Bausteine verstehen).
Fröhliches FPGA'ing :)
quelle
Vor einiger Zeit habe ich eine Vergleichstabelle von FPGA-Einstiegsplatinen der beiden FPGA-Anbieter Xilinx und Altera zusammengestellt. Sie sind die beiden Hauptakteure bei FPGAs, etwa PIC gegen AVR oder Sony gegen Nintendo. Sie bieten das beste Preis-Leistungs-Verhältnis. Es gibt andere Anbieter, die bestimmte Funktionen anbieten, aber in der Regel zahlen Sie entweder mehr oder verlieren Funktionen / Rechenleistung.
Ich weiß, dass dies Ihre spezifische Frage nicht direkt beantwortet, aber es sollte für alle hilfreich sein, die mit einem FPGA-Board beginnen möchten.
quelle
So viele Fragen; Versuchen wir, sie in der folgenden Reihenfolge zu beantworten:
quelle
Ein Kollege namens Anthony Burch hat eine Reihe von Videos über FPGAs zusammengestellt . Eine der kostenlosen enthält Informationen zur Auswahl eines FPGA.
quelle
So gut wie jeder FPGA-Anbieter wird es tun. Es ist wie bei Intel gegen AMD ... es gibt Unterschiede zwischen Xilinx und Altera, aber sie sind in Bezug auf die Funktionalität bemerkenswert ähnlich. Kaufen Sie ein Entwicklungskit, das in Ihrer Preisklasse liegt - ich persönlich mochte Spartan 3 von Xilinx - und fahren Sie damit.
In Bezug auf die Anzahl der Gates ist das Dev-Kit normalerweise sehr groß, hoffentlich viel größer als Sie benötigen. Wenn Sie bereit sind, zu Ihrer eigenen Leiterplatte zu wechseln, schätzen die Synthese-Tools für Sie, wie viele Gates Ihr Design benötigt. Sie können hiermit ein kleineres FPGA auswählen, obwohl Sie möglicherweise feststellen, dass Paketbeschränkungen (QFP vs BGA) ebenfalls eine wichtige Rolle spielen.
Mit den richtigen Designtechniken spielt die Taktrate keine Rolle. Tatsächlich können Sie normalerweise einen Quarz mit relativ niedriger Geschwindigkeit wie 12 MHz verwenden, und der FPGA kann einen viel schnelleren Takt (oder viele schnellere Takte!) Synthetisieren dedizierte DSP-Slices, die diese Berechnungen beschleunigen können. FPGAs sind jedoch massiv parallel, sodass Sie nicht zu viele MHz benötigen, um eine Tonne Arbeit zu erledigen.
Ich würde definitiv beim Fixpunkt bleiben, wenn du kannst. Es ist möglich, Fließkommazahlen zu erstellen, und Xilinx verfügt sogar über einen Kerngenerator, mit dem Sie einen Fließkommakern erstellen können. Festkommazahlen sind jedoch sehr viel schneller und erfordern weitaus weniger Gates. Ein weiterer Vorteil ist, dass Sie einen ungeraden Fixpunkt machen können. Sie können so viele Bits verwenden, wie Sie möchten, es muss sich nicht um eine Zweierpotenz handeln, und / oder Sie können größere Festpunkte für Zwischenstufen verwenden.
Der beste Weg, um mit FPGAs zu beginnen? Finde eine Klasse oder ein Seminar oder so. Wenn Sie mit der Technologie nicht vertraut sind, werden die Entwicklungstools sehr verwirrend sein, da eine Menge schief gehen kann. Tools für MCUs sind viel fehlerverzeihender und erfordern weniger Vertrautheit mit der zugrunde liegenden Architektur.
Oh, und Sie sollten das Datenblatt des FPGAs von vorne nach hinten lesen.
quelle
Schauen Sie sich XMOS an
Sie können in vielen Anwendungen verwendet werden, um FPGAs zu ersetzen.
quelle
Wenn Sie die Anzahl der Gates abschätzen möchten, müssen Sie noch keine Hardware kaufen - die wichtigsten FPGA-Hersteller verfügen über freie Software, und viele werden Appnotes zum Ausführen von dsp haben. Sie können Dinge ohne Hardware entwerfen und simulieren, und die Software teilt Ihnen mit, welche Ressourcen verwendet werden. Für die Signalverarbeitung ist ein dsp normalerweise der erste Schritt und ein FPGA nur dann, wenn die Prozessorleistung knapp wird.
quelle