Embedded Linux auf FPGA

10

Ich habe nur sehr begrenzte Erfahrung mit FPGAs (Altera - verwendet nur die visuellen Design-Tools).

Ich plane ein neues Projekt, in dem ich FPGA benötige, und ich könnte viel von einem tatsächlichen Linux profitieren, das auf derselben Karte ausgeführt wird (hauptsächlich für die TCP-Kommunikation sowie einige DSP).

Meine Frage ist, gibt es ein empfohlenes FPGA, für das ein unterstütztes eingebettetes Linux vorbereitet ist? Keine ausgefallenen Treiber (nur Ethernet, WLAN könnte ein Plus sein, ...). Ich stelle mir vor, dass im FPGA ein Mikrocontroller eingebaut wäre (dies bedeutet, dass er viel FPGA verschlingt und ich ein größeres FPGA benötige).

Ali
quelle

Antworten:

15

Ein 32-Bit-RISC-Prozessorkern aus dem Lehrbuch, auf dem die No-MMU-Version von Linux ausgeführt werden kann, muss nicht unbedingt so groß sein. Die eigentliche Ressource, die Sie benötigen, ist weitaus mehr RAM (10 Megabyte) als in einem FPGA verfügbar Ich werde wahrscheinlich SDRAM auf der Karte und einen Controller dafür im FPGA haben wollen.

Das heißt, wenn Sie mehr als ein triviales Leistungsniveau wünschen, möchten Sie wahrscheinlich einen Kern mit einigen Optimierungen (Pipelining usw.), und das erhöht die Größe etwas. Durch Hinzufügen eines vollständigen mmu wird die Speicher- (Neu-) Zuweisung effizienter und das übliche Verhalten von Fork () beim Kopieren beim Schreiben aktiviert.

Beide großen FPGA-Anbieter verfügen über Soft-Prozessorkerne mit verfügbaren Linux-Ports - Microblaze für Xilinx, Nios II für Altera. Sie sollten wahrscheinlich die Dokumente lesen, um spezifische Plattformempfehlungen zu erhalten, da es sich natürlich um ein Ziel handelt, das sich mit der Zeit bewegt. Ein Kerndesign eines Drittanbieters ist für eine ähnliche Leistung möglicherweise etwas größer, wenn es portabler geschrieben und nicht so speziell für eine bestimmte FPGA-Familie optimiert ist.

In der Vergangenheit gab es Chips, die sowohl einen harten Prozessorkern (häufig PowerPC) als auch einen Bereich konfigurierbarer FPGA-Fabric kombinierten. Eine weitere Option wäre ein separater Prozessor (wahrscheinlich ARM) auf derselben Karte wie ein FPGA.

Ein Großteil der Entscheidung hängt davon ab, wie eng Sie den Prozessor und das FPGA koppeln müssen. Wenn Sie das Problem auf Konfigurationsregister und einen Datenstrom reduzieren können, kann es so modular sein wie das Aufhängen einer FPGA-Karte mit einem schnellen USB-Chip am USB-Host-Port einer eingebetteten Linux-Karte wie einem BeagleBoard oder RasberryPi. Für eine engere Integration möchten Sie möglicherweise, dass sich das FPGA auf derselben Karte befindet und auf dem externen Bus des Prozessors sitzt. Bei niedrigen Datenraten ist es trivial, eine SPI-Registerschnittstelle in ein FPGA einzubauen, und UART-Schnittstellen sind vollständig machbar, wenn auch etwas kniffliger.

Schließlich stellt sich die Frage, ob Sie tatsächlich ein vollständiges Betriebssystem wie Linux benötigen oder ob ein eingebetteter TCP-Stack mit einer Größe von "Mikrocontroller" Ihr Problem lösen würde, während weniger Speicher benötigt wird.

Chris Stratton
quelle
6

Xilinxs Microblaze läuft unter Linux einwandfrei, vorausgesetzt, es ist schnell genug für Ihre Zwecke - es werden nur einige hohe 10s MIPS in billigeren Geräten ausgeführt, 100-200 MIPS in den teuren Familien.

Xilinx hat ein Git-Repo oder es gibt einige Xilinx-spezifische Distributionen. Die FPGA-Flexibilität kann sowohl ein Schmerz als auch ein Segen sein, da sich Ihre Speicherzuordnung und IRQ-Zuordnungen oder sogar die verfügbaren Perpheren während der Projektentwicklung ändern können.

Petalinux verfügt über Skripte, mit denen Sie solche Aufgaben verwalten und die wichtigen Teile der Kernelkonfiguration basierend auf Ihrem neuesten und besten Systemdesign aktualisieren können.

Martin Thompson
quelle
4

Die Virtex-Linie von Xilinx verfügt über FPGA-Versionen mit Hardcore-PowerPCs. Es ist ziemlich einfach, Linux auf dem PowerPC zum Laufen zu bringen. Meine Schüler haben es für viele Senior-Design-Projekte getan. Sie haben immer noch viel konfigurierbaren Stoff, den Ihr Hardware-Design füllen kann.

Das Virtex2 Pro Evaluation Board war in pädagogischen und akademischen Forschungsprojekten sehr verbreitet. Da Xilinx die Unterstützung für diesen Versionschip in den neuesten Tools eingestellt hat, können Sie einen relativ günstig erwerben. Ich glaube, dass es bis zur 9.x-Version oder so unterstützt wurde. Hmm. Das ist einige Jahre her, also bin ich vielleicht ein bisschen nostalgisch. Auf jeden Fall verteile ich diese Boards immer noch an interessierte Studenten, damit sie so gut wie alles machen können, was sie wollen.

Bill Nace
quelle
1
Wenn ich mich nicht sehr irre, heißen sie Virtex xilinx.com/onlinestore/v2pro_boards.htm
Ali
1
@Ali - Ich glaube nicht, dass Sie sich irren, und Sie haben eine ziemlich zuverlässige Referenz für Ihre Behauptung. Bitte zögern Sie nicht, in solchen Situationen eine Bearbeitung vorzuschlagen!
Kevin Vermeer
3

Actels SmartFusion integriert ein FPGA mit einem Hard-IP-ARM-Cortex-M3-Kern und einer fortschrittlichen analogen Engine in einem Einzelchip-Gerät.

uClinux läuft recht gut auf dem Cortex-M3-Kern von SmartFusion. Überprüfen Sie diese Seite für weitere Details.

vladimir khusainov
quelle
2

Abhängig von Ihrem Zeitrahmen können Sie sich auch die neue Zynq-7000-Reihe von Xilinx ansehen, die einen ARM-Prozessor mit einem Artix-7 oder Kintex-7 kombiniert. Xilinx behauptet, dass sie in der zweiten Jahreshälfte 2012 Produktionsmengen versenden werden.

Andere Anbieter haben möglicherweise ähnliche Produkte. Ich weiß nicht, ob oder wann Xilinx Zynq-Unterstützung für das kostenlose ISE-WebPack bereitstellen wird. Im Moment behaupten sie, Sie brauchen ISE Embedded Edition.

Nikolaus
quelle
Warum hast du dieses Antwort-Community-Wiki erstellt? Das war wahrscheinlich unnötig.
Kevin Vermeer