Billigste FPGAs? [geschlossen]

Wie billig werden FPGAs? Ich weiß, dass sie teurer sind als Mikroprozessoren mit vergleichbarer Leistungsfähigkeit, aber ich frage mich, ob es FPGAs gibt, die einen Microblaze-Softcore enthalten könnten, auf dem Linux ausgeführt wird, während Gates für die Implementierung von DSP-Funktionen (z. B. Medien-Codecs) zu wettbewerbsfähigen Kosten verfügbar bleiben , sagen wir, ein Cortex A8 ($ 20-30 in Menge. ~ 100).

(Entschuldigung, wenn meine Terminologie nicht idiomatisch, dh falsch ist. Bitte kommentieren Sie sie mit Korrekturen oder bearbeiten Sie sie direkt.)

(schamloser Stecker) Das GNU-Radio (USRP2) verwendet ein AEMB, das mit einer Reihe von DSP-Blöcken gebündelt ist. Es funktioniert wirklich gut mit Software Defined Radio – aeste.my/node/29
@sybreon Seltsamerweise verwende ich USRP2 in meinem Senior Design-Projekt - schön

Antworten (11)

Ich habe vor Kurzem an einer Online-Konferenz über FPGAs teilgenommen, deren Keynote „Sollte Ihr nächster Prozessor ein FPGA sein“ lautete.

Das FPGA ist grundsätzlich in jeder Anwendung sinnvoll, die hochgradig parallelisierbare Arbeitsströme erfordert, ein Beispiel dafür war die Analyse von Full-HD-Bildern, um beispielsweise Fußgänger zu finden.

Die Sache, an die Sie sich erinnern müssen, ist, dass Sie Ihr FPGA jedes Mal initialisieren müssen, wenn es eingeschaltet wird. Ich denke, dass das Xilinx des FPGA (das einen On-Chip-ARM-Kern hat) eine gute Option ist, aber wahrscheinlich teuer. Ein Blick in die von Actel mit On-Chip-Flash kann auch nützlich sein.

Was die Leistung betrifft, so führte die Firma BDTI einen Benchmark in hochgradig parallelen Berechnungen durch, bei dem sie eine etwa 40-fache Leistungssteigerung beim Wechsel zu einem FPGA sahen. Das Interessante ist, dass sie Chips mit ähnlichen Kosten verglichen haben (23 $ vs. 28 $, glaube ich).

Hier sind die Links, die Sie interessieren könnten:

Taschenleitfaden zur Prozessorauswahl

FPGA Conference Archives (Kostenlose Registrierung, aber nur für ca. 6 Monate nach dieser Antwort verfügbar)

Sie können die Leistung von FPGA-basierten Systemen basierend auf MIPS- oder MHz-Statistiken nicht wirklich vergleichen. Die Art und Weise, wie ein FPGA bestimmte Aufgaben bearbeitet, unterscheidet sich einfach zu sehr von einem Mikrocontroller. Das Design von Firmware für ein FPGA müssen Sie zum Beispiel mit VHDL tun, was der Assemblierung ähnelt. Eine Registerübertragungsebene (RTL) der Abstraktion. Einige Umgebungen werden erstellt, um mehr Abstraktion zu bieten, aber diese sind oft immer noch herstellerspezifisch. Wikipedia hat eine anständige Übersicht über Sprachen, die zum Programmieren von FPGA-Code verfügbar sind:

Wikipedia: FPGA programmieren

Wikipedia: Design digitaler Schaltungen

Wenn Sie Geld zum Verbrennen haben, können Sie die LabView-Systeme verwenden, um beispielsweise FPGA-basierte Echtzeit-Messsysteme zu bauen. Diese dafür benötigten Geräte liegen in einer ganz anderen Preisklasse (1500€ aufwärts), öffnen das FPGA-Design aber mit grafischer Programmierung einem viel breiteren Publikum.

Immer mehr Anbieter bieten Boards an, die Mikrocontroller wie einen ARM-Chip mit einem FPGA kombinieren, um spezifische zusätzliche Funktionen und parallele Verarbeitungsleistung bereitzustellen. Ein Beispiel für solche Produkte finden Sie hier: EmbeddedARM: FPGA-Serie

Wie billig werden FPGAs? Laut Newark kosten die billigsten FPGAs etwa 10 US-Dollar (das billigste Altera Cyclone und das billigste Xilinx Spartan). Sie haben möglicherweise genug Kapazität, um eine einfache 8-Bit-CPU zu betreiben.

Wie zu erwarten, benötigen selbst einfache (dh ohne MMU) 32-Bit-CPUs etwa das Vierfache der FPGA-Ressourcen einer 8-Bit-CPU. FPGAs mit kaum genug Ressourcen, um eine so einfache 32-Bit-CPU zu betreiben, kosten etwa 14 US-Dollar. Soweit ich weiß, wurde uCLinux auf einige dieser FPGA-Soft-CPUs (wie z. B. NIOS II/e) portiert - möglicherweise finden Sie uClinux für Ihre Zwecke angemessen.

Vollwertiges Linux erfordert eine CPU mit einer MMU (z. B. NIOS II/f). Eine 32-Bit-CPU mit MMU benötigt etwa das Vierfache der FPGA-Ressourcen einer 32-Bit-CPU ohne MMU – die Gründe dafür sind nicht so offensichtlich.

Soweit ich der Xilinx-Microblaze-Seite entnehmen kann, läuft die Microblaze-Soft-CPU nur auf Xilinx-FPGAs.

Linux wurde bereits auf mehrere andere Soft-CPUs portiert. Wenn Sie Linux auf FPGAs anderer Unternehmen ausführen möchten, sollten Sie sich die Linux-Ports ansehen, die unter "Soft CPU Cores for FPGA" aufgeführt sind .

Mehrere dieser Soft-CPUs – einschließlich einer MMU – passen auf einen Xilinx Spartan XC3S400A (17 $ von Avnet).

Ich habe gehört, dass einige 32-Bit-Soft-CPUs – einschließlich einer MMU – ziemlich einfach als „Dual Core“ auf einem 20-Dollar-FPGA-Chip einzurichten sind. Diejenigen, die „Jan's Razor“ folgen, könnten versuchen, stattdessen etwa ein Dutzend 8-Bit-CPUs auf demselben Chip unterzubringen.

Es gibt Open-Source-Microblaze-Implementierungen (wie aeMB -- opencores.org/project,aemb ), die auf andere (Nicht-Xilinx-) FPGAs portiert werden sollten.
(schamloser Plug) der AEMB ist dafür bekannt, uC/OS-II auch in Altera FPGAs auszuführen -- aeste.my/node/7

Im Allgemeinen kostet ein FPGA viel mehr als das gleiche in Silizium implementierte Gerät, da aufgrund der Rekonfigurierbarkeit viel Overhead anfällt. Also nein, Sie werden kein FPGA für 20-30 $ finden, das die gleiche Leistung wie eine ARM-CPU hat, die 20-30 $ kostet. Jetzt finden Sie vielleicht einen FPGA für 20 bis 30 US-Dollar, der bestimmte Aufgaben viel schneller ausführen kann als dieser 20-30-Dollar-ARM, aber er wird ihn bei allgemeinen Rechenaufgaben nicht schlagen können.

Aus diesem Grund ist es üblich, Leute zu sehen, die einen Mikrocontroller und ein FPGA auf dieselbe Platine stecken. ARM und PPC werden am häufigsten mit einem FPGA kombiniert.

Ich verstehe, dass ich kein FPGA finden werde, das ein Mikro in Bezug auf Kosten und Leistung übertrifft, aber es scheint, als ob es ein FPGA geben könnte, das die Kosten von Mikro + FPGA übertrifft, während es eine ähnliche Leistung bietet, alles in einem Chip. Ist das sinnvoll?

Vergessen Sie beim Kauf eines FPGA nicht, die Kosten für den Flash-Speicher zu berücksichtigen, der das FPGA-Programm enthält. Das vergisst man leicht.

Als PCB-Designer ist das Layout von FPGAs millionenfach einfacher, da Sie die Pinbelegung nach Belieben neu anordnen können, selbst nachdem die Platine fertig ist. Es gibt potenzielle Kosteneinsparungen im Zusammenhang mit den weniger Schichten, die zum Routen eines FPGA benötigt werden.

Den anderen, die FPGA vs. CPU-Leistung kacken, stimme ich bis zu einem gewissen Grad zu. Ein echter Prozessor ist schneller darin, echte Prozessor-artige Dinge zu erledigen, als ein FPGA, das so programmiert ist, dass es sich wie ein Prozessor verhält.

Das ist aber einem FPGA gegenüber nicht wirklich fair. CPUs sind "zeitbegrenzt"; Wenn Sie mehr Arbeit erledigen möchten, benötigen Sie mehr Zeit oder einen schnelleren Prozessor. FPGAs sind normalerweise "bereichsbegrenzt"; Wenn Sie mehr Arbeit erledigen möchten, benötigen Sie ein größeres FPGA.

Nehmen wir zum Beispiel an, Sie bauen einen Spektralanalysator, der ein Mono-Audiosignal verarbeitet. Nehmen wir an, es dauert 70 % der CPU-Zeit, und Sie sind bereits so schnell, wie die CPU gehen kann. Sie können keine Stereounterstützung hinzufügen, da die CPU einfach nicht schnell genug ist, um den zweiten Kanal zu bearbeiten, bevor sie den ersten Kanal erneut verarbeiten muss. Aber wenn Sie 70 % des FPGA verwenden, können Sie einfach ein größeres FPGA kaufen und den zweiten Kanal einstecken. Es muss nicht schneller werden.

Wenn Sie das Problem nun in die Domäne des digitalen Designs portieren und Finite-State-Maschinen und Datenpfade anstelle einer CPU verwenden, würde ich Dollar zu Pesos wetten, dass das FPGA die CPU auf Kosten einer zunehmenden Komplexität des Designs zerstören wird.

Es gibt auch Flash-basierte FPGAs (ACTEL) und einige SRAM-basierte mit eingebautem Flash (Xilinx Spartan3AN, LatticeXP).
Sie können auch einfach eine schnellere CPU kaufen und den zweiten Kanal einschalten. Kein guter Vergleich.
@immibis Was Sie sagen, ist eigentlich dasselbe wie der Punkt von ajs410: Ein FPGA muss nicht schneller sein , es muss größer sein . Wenn Sie mit CPUs arbeiten möchten, können Sie eine zweite CPU mitbringen, solange die Art der Verarbeitung parallelisierbar ist.

Xilinx hat kürzlich einen Vertrag mit ARM abgeschlossen, der es ihnen ermöglicht, ARM-Kerne auf FPGAs zu platzieren. Leider werden sie nur für die Virtex-Geräte der Spitzenklasse verfügbar sein.

Sehr interessant.
Ich denke, Sie irren sich, dass die ARM-Kerne nur in Virtex-Geräten vorkommen. Die Pressemitteilung sagt nicht so viel, und ich glaube nicht, dass man das aus der Tatsache schließen kann, dass PPC-Kerne nur in V2P-, V4FX- und V5FXT-Teilen vorkommen. Auf der Website von Xilinx wird erwähnt, dass die Geräte für „Leistung, Kosten und Leistung“ optimiert werden (siehe xilinx.com/technology/roadmap/processing-platform.htm ); Sie werden feststellen, dass die Kosten niemals ein Optimierungsvektor für die Virtex-Serie sind.
Außerdem wird ARM in der Ankündigung der 7er-FPGAs ( xilinx.com/technology/roadmap/7-series-fpgas.htm ) nie erwähnt , und es gibt keinen V6- oder V7-Teil mit einem PPC. Meine Meinung zu all dem ist, dass sie sich von eingebetteten Prozessoren in den Hochleistungsteilen entfernen.
Ich schätze, das Ergebnis dieses Deals ist der Zynq ?

Die FPGA-Preisgestaltung ist seltsam - sobald Sie mit einem Franchise-Distributor sprechen, stellen Sie fest, dass die bei Digikey, Mouser usw. angegebenen Preise um ein Vielfaches höher sein können als das, wofür sie zu bekommen sind. Das billigste, das ich kenne, ist Lattice EC1 in QFP100 für etwas weniger als 3 GBP in Tray-Mengen. Fügen Sie etwa 0,40 GBP für einen SPI-Flash-Speicher hinzu.

Das Unterbringen von CPUs in FPGA-Fabric ist in Bezug auf die Siliziumkosten im Allgemeinen kein guter Wert, aber andere Faktoren wie eine enge Kopplung zwischen CPU und FPGA und eine reduzierte Anzahl von Gehäusen können den optimalen Kompromiss gegen die Verwendung einer separaten CPU ändern.

Extrem guter Punkt. Siehe auch diesen Beitrag [ element14.com/community/thread/2434] von einem Farnell-Mitarbeiter, der vorschlägt, dass Altera Cyclone IV-Chips für nur 3 US-Dollar erhältlich sind, während Farnells günstigster Preis auf ihrer Webseite für sie näher bei 20 US-Dollar liegt. Nun, die meisten Leute werden eindeutig keine Mengen von 250.000 kaufen, aber diese Händler sind es vermutlich, und sie könnten bereit sein, für etwas weniger als 566 % Aufschlag zu handeln ...

Meine beste Vermutung ist bisher so etwas wie ein Xilinx XC3S400A, der etwa 16 US-Dollar kostet, aber ich bin mir nicht sicher, ob er mit einem MicroBlaze umgehen könnte.

Nach einem kurzen Blick im Internet würde ein Microblaze-Kern etwa die Hälfte der Logikzellen in einem XC3S400A verwenden. Darüber hinaus würde der Cortex A8 mit 600 MHz bis 800 MHz laufen, während Microblaze auf dem FPGA mit 200 MHz bis 300 MHz laufen würde.
Es wäre also ~ 3x langsamer (vorausgesetzt, Ihr System ist prozessorgebunden), aber vergleichbare Kosten, während überschüssige Gates für etwas anderes übrig bleiben.
Das ist nur ein Vergleich der Frequenz, der einfachste Weg, die tatsächliche Verarbeitungsgeschwindigkeit zu vergleichen. Ich habe nicht genug Wissen darüber, aber es ist beispielsweise möglich, dass ein ARM bei gleicher Taktrate doppelt so schnell ist wie ein Microblaze
Ja, fair genug. Eine erste Annäherung, denke ich.

Es hängt sehr von Ihrer Anwendung ab. Die ideale Anwendung hier würde aus einem winzigen Steuerteil (das auf ein Microblaze/NIOS passt), aber einem Rechenteil bestehen, das von der enormen Parallelität kundenspezifischer Hardware profitieren kann. In diesen Fällen kann sogar ein FPGA von bescheidener Größe (Spartan oder gleichwertig) jede Allzweck-CPU leicht übertreffen. Aber das ist der beste Fall (obwohl in vielen realen Apps sehr gut erreichbar), wenn Ihre App einen signifikanten Kontrollteil hat oder sich nicht leicht auf Hardware abbilden lässt, sollten Sie Ihr Geld für feste Hardware (z. B. einen ARM) ausgeben wahrscheinlich besser.

Wenn Sie statt nur des Chips ein Board benötigen, finden Sie hier zwei aktuelle Optionen aus dem Jahr 2013:

Zunächst einmal möchten Sie Linux auf einem Kern ausführen. Wie wäre es, wenn Sie es auf einem ARM ausführen, wie einige andere Vorschläge in diesem Thread. MCUs sind gut darin, Betriebssysteme auszuführen, aber es wird eine Art Verschwendung von FPGA-Ressourcen, die eine MCU erstellen. MCUs passen in eine viel kleinere Siliziumfläche, wenn sie speziell dafür entwickelt wurden, und können daher billiger hergestellt werden. Dann gibt es noch andere Erklärungen dafür, dass FPGAs wirklich gut in der Parallelverarbeitung sind – irgendwie wahr, obwohl sich logische Operationen nicht wie eine exakte Verarbeitung anfühlen. Wie Sie darauf hinweisen, werden leistungsstarke FPGAs teuer und in der Tat leistungshungrig. Also eine kostengünstige Plattform, die Linux und DSP ausführen kann und die Vorteile der Parallelität für schnelles IO usw. benötigt. Schauen Sie sich den XMOS-Parallelprozessor an

Da viele aktuelle CPLDs von Altera FPGAs mit eingebautem Konfigurationsspeicher sind, können Sie sie unter http://www.altera.com/products/devices/cpld/max2/mx2-index.jsp beziehen