Wie billig werden FPGAs? Ich weiß, dass sie teurer sind als Mikroprozessoren mit vergleichbaren Fähigkeiten, aber ich frage mich, ob es FPGAs gibt, die einen Microblaze-Softcore unter Linux enthalten könnten, während Gates für die Implementierung von DSP-Funktionen (z. B. Media-Codecs) zu wettbewerbsfähigen Kosten zur Verfügung stehen Sagen wir, ein Cortex A8 (20-30 USD in Menge ~ 100).
(Entschuldigung, wenn meine Terminologie nicht idiomatisch ist, dh falsch. Bitte kommentieren Sie mit Korrekturen oder bearbeiten Sie sie direkt.)
Antworten:
Ich habe kürzlich an einer Online-Konferenz zu FPGAs teilgenommen, mit der Keynote "Sollte Ihr nächster Prozessor ein FPGA sein?".
Das FPGA ist im Grunde genommen in jeder Anwendung sinnvoll, die stark parallelisierbare Arbeitsströme erfordert. Als Beispiel wurde die Analyse von Full-HD-Bildern verwendet, um beispielsweise Fußgänger zu finden.
Das, woran Sie denken müssen, ist, dass Sie Ihr FPGA jedes Mal initialisieren müssen, wenn es hochfährt. Ich denke, dass das FPGA mit Xilinx (das einen On-Chip-ARM-Kern hat) eine gute Option ist, aber wahrscheinlich teuer. Ein Blick in die Actel-Modelle mit On-Chip-Flash kann ebenfalls hilfreich sein.
Was die Leistung anbelangt, so hat das Unternehmen BDTI bei hochparallelen Berechnungen einen Benchmark durchgeführt, bei dem ein Leistungsgewinn von etwa 40x auf einen FPGA umgestellt wurde. Das Interessante ist, dass sie Chips mit ähnlichen Kosten verglichen haben (23 $ gegenüber 28 $, glaube ich).
Hier sind die Links, die Sie interessieren könnten:
Pocket Guide zur Prozessorauswahl
FPGA Conference Archives (Kostenlose Registrierung, jedoch nur für ca. 6 Monate nach dieser Antwort verfügbar)
Sie können die Leistung von FPGA-basierten Systemen, die auf MIPS- oder Mhz-Statistiken basieren, nicht wirklich vergleichen. Die Art und Weise, wie ein FPGA zur Verarbeitung bestimmter Aufgaben verwendet wird, unterscheidet sich einfach zu stark von einem Mikrocontroller. Das Design der Firmware für ein FPGA muss zum Beispiel mit VHDL erfolgen, was mit Assembly vergleichbar ist. Ein Register Transfer Level (RTL) der Abstraktion. Einige Umgebungen werden erstellt, um mehr Abstraktion zu bieten, diese sind jedoch häufig herstellerspezifisch. Wikipedia bietet einen guten Überblick über die Sprachen, in denen FPGA-Code programmiert werden kann:
Wikipedia: FPGA programmieren
Wikipedia: Digital Circuit Design
Wenn Sie Geld zum Brennen haben, können Sie mit den LabView-Systemen beispielsweise FPGA-basierte Echtzeitmesssysteme erstellen. Die dafür benötigten Geräte haben einen völlig anderen Preisbereich (ab 1500 US-Dollar), öffnen das FPGA-Design jedoch mit grafischer Programmierung für ein viel breiteres Publikum.
Immer mehr Anbieter bieten Boards an, die Mikrocontroller wie einen ARM-Chip mit einem FPGA kombinieren, um bestimmte zusätzliche Funktionen und parallele Rechenleistung bereitzustellen. Ein Beispiel für solche Produkte finden Sie hier: EmbeddedARM: FPGA-Serie
quelle
Wie billig werden FPGAs? Laut Newark liegen die günstigsten FPGAs bei etwa 10 USD (der Altera Cyclone am niedrigsten und der Xilinx Spartan am niedrigsten Ende). Sie verfügen möglicherweise über genügend Kapazität, um eine einfache 8-Bit-CPU auszuführen.
Selbst einfache 32-Bit-CPUs (dh ohne MMU) benötigen erwartungsgemäß 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 rund 14 US-Dollar. Nach meinem Verständnis wurde uCLinux auf einige dieser FPGA-Soft-CPUs (wie NIOS II / e) portiert - uClinux ist möglicherweise für Ihre Zwecke geeignet.
Vollwertiges Linux erfordert eine CPU mit einer MMU (wie NIOS II / f). Eine 32-Bit-CPU mit einer 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 auf der Xilinx Microblaze-Seite sehen 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 .
Einige dieser Soft-CPUs - einschließlich einer MMU - passen auf einen Xilinx Spartan XC3S400A (17 US-Dollar 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 ein Dutzend oder so 8-Bit-CPUs auf demselben Chip unterzubringen.
quelle
Im Allgemeinen kostet FPGA viel mehr als dasselbe in Silizium implementierte Gerät, da aufgrund der Rekonfigurierbarkeit viel Overhead anfällt. Nein, Sie werden kein FPGA für 20-30 US-Dollar finden, das die gleiche Leistung hat wie eine ARM-CPU, die 20-30 US-Dollar kostet. Jetzt finden Sie vielleicht ein FPGA für 20-30 US-Dollar, das bestimmte Aufgaben viel schneller als diese 20-30 US-Dollar ARM ausführen kann, aber es wird nicht in der Lage sein, es bei allgemeinen Computeraufgaben zu übertreffen.
Aus diesem Grund ist es üblich, dass Leute einen Mikrocontroller und einen FPGA auf derselben Platine anbringen. ARM und PPC werden am häufigsten mit einem FPGA kombiniert.
quelle
Vergessen Sie beim Kauf eines FPGA nicht, die Kosten für den Flash-Speicher mit dem FPGA-Programm zu berücksichtigen. Das ist leicht zu vergessen.
Als Leiterplattenentwickler sind FPGAs millionenfach einfacher anzuordnen, da Sie die Pinbelegung auch nach der Herstellung der Platine beliebig neu anordnen können. Es gibt potenzielle Kosteneinsparungen, die mit der Verringerung der zum Routen eines FPGAs erforderlichen Schichten verbunden sind.
Für die anderen, die die Leistung von FPGA vs. CPU poo-poo, stimme ich bis zu einem gewissen Grad zu. Ein tatsächlicher Prozessor erledigt die eigentlichen Aufgaben des Prozessors schneller als ein FPGA, der so programmiert ist, dass er wie ein Prozessor funktioniert.
Für ein FPGA ist das allerdings nicht wirklich fair. CPUs sind "zeitlich begrenzt"; Wenn Sie mehr arbeiten möchten, benötigen Sie mehr Zeit oder einen schnelleren Prozessor. FPGAs sind normalerweise "flächenbeschränkt". Wenn Sie mehr arbeiten möchten, benötigen Sie ein größeres FPGA.
Angenommen, Sie erstellen 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 Stereo-Unterstützung hinzufügen, da die CPU nicht schnell genug ist, um den zweiten Kanal auszuführen, bevor sie den ersten Kanal erneut verarbeiten muss. Wenn Sie jedoch 70% des FPGAs verwenden, können Sie einfach ein größeres FPGA kaufen und den zweiten Kanal hinzufügen. Es muss nicht schneller gehen.
Nun, wenn Sie das Problem in den Digital Design Domäne portiert, mit Finite State Machines und Datenpfade anstelle einer CPU, würde ich Dollar Pesos wetten , dass der FPGA wird zerquetschen die CPU, auf Kosten der Komplexität bei der Gestaltung zu erhöhen.
quelle
Xilinx hat kürzlich einen Vertrag mit ARM abgeschlossen, mit dem ARM-Cores auf FPGAs platziert werden können. Leider sind sie nur für Virtex-Geräte der Spitzenklasse verfügbar.
quelle
FPGA-Preise sind merkwürdig - sobald Sie mit einem Franchise-Unternehmen sprechen, stellen Sie fest, dass die Preise bei Digikey, Mouser usw. um ein Vielfaches höher sein können als die Preise, für die sie erhältlich sind. Das billigste, das mir bekannt ist, ist Lattice EC1 in QFP100 für etwas weniger als GBP3 in den Behältermengen. Fügen Sie GBP0.40 oder so für einen SPI-Flash-Speicher hinzu.
Das Einfügen von CPUs in eine FPGA-Struktur ist in Bezug auf die Siliziumkosten im Allgemeinen nicht günstig, aber andere Faktoren wie die enge Kopplung zwischen CPU und FPGA und die verringerte Anzahl von Paketen können den optimalen Kompromiss gegenüber der Verwendung einer separaten CPU verändern.
quelle
Bisher schätze ich, dass es sich um eine Xilinx XC3S400A handelt, die ungefähr 16 US-Dollar kostet, aber ich bin mir nicht sicher, ob sie mit einer MicroBlaze zurechtkommt.
quelle
Das hängt stark von Ihrer Anwendung ab. Die ideale Anwendung besteht hier aus einem winzigen Steuerteil (der auf eine Mikroblasur / ein NIOS passt), aber einem Rechenteil, der von der enormen Parallelität der benutzerdefinierten Hardware profitieren kann. In diesen Fällen kann sogar ein FPGA mit bescheidener Größe (Spartan oder gleichwertig) jede Allzweck-CPU leicht übertreffen. Dies ist jedoch der beste Fall (obwohl er in vielen realen Apps sehr gut erreichbar ist). Wenn Ihre App einen erheblichen Kontrollbereich hat oder sich nicht leicht auf Hardware abbilden lässt, müssen Sie Ihr Geld für feste Hardware (z. B. einen ARM) ausgeben wahrscheinlich besser.
quelle
Wenn Sie nicht nur den Chip, sondern ein Board benötigen, gibt es ab 2013 zwei neue Optionen:
quelle
Da es sich bei vielen CPLDs von Altera derzeit um FPGAs mit integriertem Konfigurationsspeicher handelt, können Sie diese für http://www.altera.com/products/devices/cpld/max2/mx2-index.jsp herunterladen
quelle
Zunächst möchten Sie Linux auf einem Core ausführen. Wie wäre es, wenn Sie es auf einem ARM ausführen, wie einige andere Vorschläge in diesem Thread. MCUs können gut mit Betriebssystemen umgehen, verschwenden jedoch die FPGA-Ressourcen, die beim Aufbau einer MCU anfallen. MCUs können, wenn sie speziell dafür entwickelt wurden, in eine viel kleinere Siliziumfläche passen und somit kostengünstiger hergestellt werden. Dann gibt es andere Erklärungen dafür, dass FPGAs bei der Parallelverarbeitung wirklich gut sind - Art von True, obwohl sich logische Operationen nicht nach einer exakten Verarbeitung anfühlen. Wie Sie bereits erwähnt haben, werden leistungsstarke FPGAs teuer und haben in der Tat einen hohen Stromverbrauch. Eine kostengünstige Plattform für Linux und DSP, die die Vorteile der Parallelität für schnelle E / A-Vorgänge usw. benötigt. Schauen Sie sich den XMOS-Parallelprozessor an
quelle