Wie wählt man ein FPGA aus?

Ich muss 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 schaue mir derzeit Entwicklungskits von Xilinx an, und da ich keine Erfahrung mit FPGA habe, fällt es mir wirklich schwer zu wissen, wie man den richtigen Chip auswählt. Ich stellte mir vor, ein Entwicklungskit zu verwenden und es mit den E / A-Pins zu erweitern, um eine Verbindung zu einem 8-Kanal-A / D-Chip und einem 8-Kanal-D / A-Chip herzustellen.

Was sind die Unterschiede zwischen der Verwendung von Spartan, Virtex, Altera usw.? Ich weiß gar nicht, wie ich abschätzen soll, wie viele Tore ich brauche. Gibt es dafür Faustregeln? Wie stelle ich sicher, dass die Taktrate ausreicht (in Abhängigkeit von der Anzahl der Additionen und Multiplikationen). Ist es schwierig, Gleitkommaverarbeitung auf einem FPGA durchzuführen, sollte ich mich an Festkommamathematik halten? Wie fange ich am besten an?

Ich benötige eine Lösung, die mit Linux programmierbar ist. Xilinx bietet dies, aber ich bin mir nicht sicher, was die Einschränkungen sind.

Es wäre sehr hilfreich zu wissen, welche Art von Algorithmen Sie implementieren müssen. Die Chancen stehen gut, dass Sie überhaupt kein FPGA benötigen, was Ihnen viel Entwicklungszeit spart ;-)
Ich stimme geschema zu; Sie benötigen möglicherweise kein FPGA. Vielleicht ist ein DSP die bessere Lösung. In jedem Fall ist der Einstieg einfacher, wenn Sie nur Erfahrung mit uCs haben. FPGAs sind sehr unterschiedlich!

Antworten (8)

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 + Signalverarbeitung sind schwierig genug, um sie auf einem Computer/DSP/Mikroprozessor richtig hinzubekommen, wo die Programmierwerkzeuge konventionell sind 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 lernen möchten, versuchen Sie etwas, das besser zu den Entwicklungstools passt, wie z. B. Zustandsmaschinen oder die Verarbeitung von Kommunikationspaketen.

Für ein DSP-Projekt wie das von Ihnen beschriebene würde ich stattdessen einen DSP oder einen Cypress PSOC oder einen Analog Devices Microconverter (= Mikrocontroller mit eingebautem ADC + DAC) empfehlen.

(vollständige Offenlegung, die einen gewissen Kontext für meinen Rat liefert: Ich verwende selbst keine FPGAs. Ich habe in seltenen Fällen programmierbare Logik = PLDs verwendet. Mein Bürokollege verwendet häufig FPGAs, und ich habe genug VHDL / Verilog-Code gesehen, der seinen übersieht Schulter, um 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 ziemlich einfache Berechnungen mit Ganzzahlen mit unterschiedlichen Bitbreiten durchführte, sagte ich ihm, dass er es brauchte um die Zahl mit der kürzeren Bitbreite vorzeichenzuerweitern, um sie richtig zu subtrahieren, und er bekam diesen Ausdruck auf seinem Gesicht, wie "Oh Mann, ich will keine Vorzeichenerweiterung machen müssen ..." Addieren und Subtrahieren ist in einem FPGA nicht sehr schwierig. Über Addition und Subtraktion hinaus müssen Sie wirklich die Tools und Bibliotheken kennen.Und Fließkommaverarbeitung??!?!!??!?!!?)

MyHDL versucht, einige dieser Probleme zu beheben.
Ich glaube nicht, dass FPGAs schwieriger zu verwenden sind als Mikros, sie haben einfach andere Einschränkungen.

Sie sind alle ziemlich gut. Sie werden nicht zu viel vom FPGA benötigen, um so etwas Einfaches zu tun, daher sollte jedes Anfänger-FPGA (wie die Spartan-3-Reihe) ausreichen.

Nur ein Wort der Warnung, das Programmieren eines FPGA ist ein LOOOOTTTTTT anders als etwas wie C ++, C, Perl ... Ich würde vorschlagen, mit Verilog zu beginnen, weil es wahrscheinlich einfacher ist, in ... VHDL zu wechseln, ist aber sehr COBOL-ähnlich verilog ähnelt eher modernen Programmiersprachen.

Über die Taktrate: Machen Sie sich keine Sorgen. Der Vorteil der Verwendung von FPGAs besteht darin, dass sie massiv parallel sind. Während ein 50-MHz-Takt nach heutigen Maßstäben lächerlich langsam erscheinen mag, sollten Sie bedenken, dass sie Hunderte von Dingen gleichzeitig erledigen können, während eine „normale“ CPU mit 3 GHz Dinge in die Warteschlange stellen muss eins nach dem anderen auf. Dies ist der Vorteil bei der Verwendung von FPGA: Parallelität. Bei etwas Spezialisiertem müssen Sie sich also nicht so viele Gedanken über die Geschwindigkeit machen.

Aber wie der andere Kommentar ist es ein ganz anderes Paradigma. Die Lernkurve ist steil, aber sobald Sie die Sprache verstanden haben, ergibt alles Sinn (stellen Sie nur sicher, dass Sie die Bausteine ​​verstehen).

Viel Spaß beim FPGAing :)

VHDL basiert eigentlich auf Ada! Leon
Berücksichtigen Sie bei der Wahl von Verilog oder VHDL auch die Sprache im Hinblick darauf, dass sie eine Investition in Ihre zukünftige Marktfähigkeit darstellt. In den USA ist Verilog in der IC/Chip-Entwicklung beliebter als VHDL, daher ist die Kenntnis von Verilog (und seiner erweiterten Version System Verilog) wahrscheinlich eine bessere langfristige Investition. Es scheint auch, dass alle großen EDA-Unternehmen in Verilog und System Verilog investieren, während VHDL nicht viel Aufmerksamkeit erhält. (Bezeugen Sie die gemischte VCS-Simulation mit Leistungsunterschieden zwischen vhdl und VCS-Verilog-Simulator). (que the flamming) Ja, man kann beides lernen, aber warum nicht priorisieren.
Sie können es in beiden Sprachen schreiben. Ich denke, die Xilinx-Tools können Verilog und VHDL verarbeiten, sogar im selben Projekt. FWIW, ich bin in den USA und habe Verilog noch nie verwendet.
"VHDL ist sehr COBOL-ähnlich". Nicht um eine Million Meilen!

Vor einiger Zeit habe ich eine Vergleichstabelle von Einstiegs-FPGA-Boards der beiden FPGA-Anbieter Xilinx und Altera zusammengestellt. Sie sind die beiden Hauptakteure bei FPGAs, ähnlich wie PIC vs. AVR oder Sony vs. Nintendo. Sie bieten das beste Preis-Leistungs-Verhältnis. Es gibt andere Anbieter, die bestimmte Funktionen anbieten, aber Sie zahlen normalerweise entweder mehr oder verlieren Funktionen/Rechenleistung.

Ich weiß, dass dies Ihre spezifische Frage nicht direkt beantwortet, aber es sollte für jeden hilfreich sein, der mit einem FPGA-Board beginnen möchte.

So viele Fragen; Versuchen wir, sie der Reihe nach zu beantworten:

  1. Ressourcenbedarf für die Signalverarbeitung: Um zu bestimmen, welche Hardware Sie verwenden/bauen müssen, benötigen Sie eine Vorstellung davon, wie viel Verarbeitung Sie an den betreffenden Signalen vornehmen möchten. 8 Kanäle bei 10 kHz sind keine sehr hohe Datenrate. Wenn Ihre Anforderungen also nicht sehr speziell sind, 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 benötigt wird. Wichtige Punkte sind Speicheranforderungen, erforderliche Hard-Multiplikatoren, spezielle IO-Überlegungen usw. Die meisten FPGA-Anbieter verfügen über Tools (webbasiert), mit denen Sie ihr Portfolio basierend auf solchen Faktoren durchsuchen können.
  3. Wie fange ich mit DSP an? DSPs sind nur gewöhnliche Computer, die normalerweise über SIMD-Befehle (Single Instruction, Multiple Data) verfügen, die für die Signalverarbeitung relevant sind. Um loszulegen, müssen Sie nur die Einschränkungen von "eingebetteter" Hardware und einem C-Compiler verstehen, damit Sie Ihren Code auf einem normalen PC testen können.
  4. Wie fange ich mit FPGAs an? FPGAs werden in einer Hardwarebeschreibungssprache programmiert. Diese unterscheiden sich deutlich von sequentiellen Sprachen wie C oder Java. Um für FPGA zu entwickeln, müssen Sie die Nebenläufigkeit echter Hardware verstehen. Die Tools, die Sie für den Einstieg benötigen, 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 Synthesetool, das Ihren HDL-Code in eine Bitdatei kompiliert, die zur Konfiguration des FPGA verwendet wird. Wenn Sie ein Starter-Kit von Altera, Actel oder Xilinx erhalten, sind alle benötigten Tools Teil des Kits.
  5. Linux-Unterstützung: FPGA-Tools der meisten Anbieter laufen unter Linux, aber im DSP-Bereich sind Sie normalerweise gezwungen, nur Windows-Kompilierungen zu verwenden, es sei denn, Ihr DSP wird von GCC unterstützt (Blackfin von Analog und einige 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.
Nicht, wenn er 8-Kanal-FFT macht ...
DSPs sind häufig Single-Threaded-Parallelverarbeitungseinheiten, von denen jede in der Lage ist, eine andere Anweisung auszuführen (im Gegensatz zu SIMD, bei der alle Einheiten dieselbe Anweisung teilen).

Ein Kollege namens Anthony Burch hat eine Reihe von Videos über FPGAs zusammengestellt . Einer der kostenlosen enthält Informationen zur Auswahl eines FPGAs.

Nahezu jeder FPGA-Anbieter ist geeignet. Es ist wie Intel vs. AMD ... es gibt Unterschiede zwischen Xilinx und Altera, aber sie sind sich in Bezug auf die Funktionalität bemerkenswert ähnlich. Kaufen Sie jedes Entwicklungskit, das in Ihrer Preisklasse liegt – ich persönlich mochte Spartan 3 von Xilinx – und laufen Sie damit.

In Bezug auf die Gate-Anzahl ist das Dev-Kit normalerweise sehr groß, hoffentlich viel größer als Sie benötigen. Wenn Sie bereit sind, auf Ihre eigene Leiterplatte umzusteigen, schätzen die Synthesewerkzeuge für Sie, wie viele Gates Ihr Design benötigt. Sie können dies verwenden, um ein kleineres FPGA auszuwählen, obwohl Sie möglicherweise feststellen werden, dass Gehäusebeschränkungen (QFP vs. BGA) ebenfalls eine wichtige Rolle spielen.

Mit den richtigen Designtechniken wird die Taktrate kein Problem sein. Tatsächlich können Sie normalerweise einen Quarz mit relativ niedriger Geschwindigkeit verwenden, z. B. 12 MHz, und das FPGA kann einen viel schnelleren Takt (oder viele schnellere Takte!) Synthetisieren dedizierte DSP-Slices, die diese Berechnungen beschleunigen können. Aber FPGAs sind massiv parallel, sodass Sie nicht zu viele MHz benötigen, um eine Menge Arbeit zu erledigen.

Ich würde auf jeden Fall bei Festpunkt bleiben, wenn Sie können. Es ist möglich, Fließkomma zu machen, und Xilinx hat sogar einen Kerngenerator, der Ihnen einen Fließkomma-Kern liefert, aber Festkomma wird viel, viel schneller sein und viel weniger Gates benötigen. Ein weiterer Vorteil ist, dass Sie einige ungerade Fixpunkte machen können; Sie können so viele Bits verwenden, wie Sie möchten, es muss keine Potenz von 2 sein und/oder Sie können größere Festpunkte für Zwischenstufen verwenden.

Der beste Einstieg in FPGAs? Finden Sie einen Kurs oder ein Seminar oder so etwas. Wenn Sie sich mit der Technologie nicht auskennen, werden die Entwicklungswerkzeuge sehr unübersichtlich sein, da viel schief gehen kann. Tools für MCUs sind viel fehlerverzeihender und erfordern weniger Intimität mit der zugrunde liegenden Architektur.

Oh, und Sie sollten das Datenblatt des FPGA von vorne bis hinten lesen.

Schau mal bei XMOS nach

Sie können verwendet werden, um FPGAs in vielen Anwendungen zu ersetzen.

Wenn Sie die Gate-Anzahl abschätzen möchten, müssen Sie noch keine Hardware kaufen - die wichtigsten FPGA-Hersteller haben kostenlose Software, und viele werden Appnotes zum DSP haben. Sie können Dinge ohne Hardware entwerfen und simulieren, und die Software sagt Ihnen, welche Ressourcen verwendet werden. Für die Signalverarbeitung wäre jedoch normalerweise ein DSP der erste Schritt und FPGA nur, wenn Ihnen die Rechenleistung ausgeht.