Wie wähle ich ein FPGA aus?


17

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.


5
Es wäre sehr hilfreich zu wissen, welche Art von Algorithmen Sie implementieren müssen. Es besteht die Möglichkeit, dass Sie überhaupt kein FPGA benötigen, was Ihnen viel Entwicklungszeit
erspart ;-)

Ich stimme geschema zu; Möglicherweise benötigen Sie kein FPGA. Vielleicht ist ein DSP eine bessere Lösung. In jedem Fall sind sie einfacher zu erlernen, wenn Sie nur Erfahrung in uCs haben. FPGAs sind sehr unterschiedlich!
Stevenvh

Antworten:


13

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 ??!? !! ??!? !!?)


2
MyHDL versucht, einige dieser Probleme zu beheben.
Shawn J. Goff

Ich denke nicht, dass FPGAs schwieriger zu bedienen sind als Mikros, sie haben einfach andere Einschränkungen.
Connor Wolf

10

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 :)


2
VHDL basiert eigentlich auf Ada! Leon
Leon Heller

2
Wenn Sie sich für Verilog oder VHDL entscheiden, sollten Sie die Sprache als Investition in Ihre zukünftige Marktfähigkeit betrachten. In den USA ist Verilog bei der Entwicklung von ICs / Chips beliebter als VHDL. Daher ist es wahrscheinlich, dass Verilog (und seine erweiterte Version, System Verilog) langfristig eine bessere Investition darstellt. Es scheint auch, dass alle großen EDA-Unternehmen in Verilog und Systemverilog investieren, während VHDL nicht viel Aufmerksamkeit erhält. (VCS-Mixed-Simulation mit Leistungsunterschieden zwischen vhdl und VCS-Verilog-Simulator). (que the flaming) Ja, Sie können beides lernen, aber warum nicht priorisieren.
Ross Rogers

Sie können es in jeder Sprache schreiben. Ich denke, die Xilinx-Tools können Verilog und VHDL auch im selben Projekt verwenden. FWIW, ich bin in den USA und habe Verilog noch nie benutzt.
Ajs410

1
"VHDL ist sehr COBOL-artig". Nicht um eine Million Meilen!
Stevenvh

9

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.


7

So viele Fragen; Versuchen wir, sie in der folgenden Reihenfolge zu beantworten:

  1. Ressourcenbedarf für die Signalverarbeitung: Um zu bestimmen, welche Hardware Sie verwenden / erstellen müssen, benötigen Sie eine Vorstellung von dem Umfang der Verarbeitung, die Sie für die betreffenden Signale ausführen möchten. 8 Kanäle bei 10 kHz ist keine sehr hohe Datenrate. Sofern Sie keine besonderen Anforderungen haben, sollten die meisten FPGAs und DSPs in der Lage sein, die Daten zu verarbeiten.
  2. Wie wähle ich das richtige Gerät aus? Anhand der Anforderungen Ihrer Signalverarbeitung sollten Sie herausfinden können, welches Gerät für Ihre Anwendung erforderlich ist. Wichtige Punkte sind der Speicherbedarf, die erforderlichen harten Multiplikatoren, spezielle E / A-Überlegungen usw. Die meisten FPGA-Anbieter verfügen über Tools (webbasiert), mit denen Sie ihr Portfolio anhand solcher Faktoren durchsuchen können.
  3. Wie fange ich mit DSP an? DSPs sind gewöhnliche Computer mit SIMD-Befehlen (Single Instruction, Multiple Data), die für die Signalverarbeitung relevant sind. Um loszulegen, müssen Sie nur die Einschränkungen der "eingebetteten" Hardware und eines C-Compilers kennen, damit Sie Ihren Code auf einem normalen PC testen können.
  4. Wie fange ich mit FPGAs an? FPGAs sind in einer Hardwarebeschreibungssprache programmiert. Diese unterscheiden sich erheblich von sequentiellen Sprachen wie C oder Java. Um für FPGA zu entwickeln, müssen Sie die Parallelität der realen Hardware verstehen. Die Werkzeuge, die Sie benötigen, um loszulegen, sind ein HDL-Simulator wie Simili (kostenlos für kleine Designs) oder Modelsim. Auf diese Weise können Sie Ihren Code auf dem PC simulieren. Danach benötigen Sie ein herstellerspezifisches Synthese-Tool, das Ihren HDL-Code in eine Bit-Datei übersetzt, die zur Konfiguration des FPGAs verwendet wird. Wenn Sie ein Starterkit von Altera, Actel oder Xilinx erhalten, sind alle benötigten Werkzeuge im Kit enthalten.
  5. Linux-Unterstützung: FPGA-Tools der meisten Hersteller werden unter Linux ausgeführt. Im DSP-Bereich müssen Sie jedoch in der Regel ausschließlich Windows-Kompilierungen verwenden, es sei denn, Ihr DSP wird von GCC unterstützt (Blackfin von Analog und verschiedene Modelle von Texas Instruments).

+1 für "8 Kanäle bei 10 kHz ist keine sehr hohe Datenrate" - ich kann nicht glauben, dass das noch niemand gesagt hat.
Kevin Vermeer

Nicht, wenn er 8-Kanal-FFT macht ...
ajs410

DSPs sind oft Single-Threaded-Parallelverarbeitungseinheiten, die jeweils einen anderen Befehl ausführen können (im Gegensatz zu SIMD, bei dem alle Einheiten denselben Befehl verwenden).
Ben Voigt


4

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.



0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.