Eingebettetes Linux auf FPGA

Ich habe 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 demselben Board läuft (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 ein Mikrocontroller in das FPGA eingebaut wäre (das bedeutet, dass es viel FPGA auffressen würde und ich ein größeres FPGA benötigen würde).

Antworten (5)

Ein Lehrbuch-32-Bit-RISC-Prozessorkern, der die No-MMU-Version von Linux ausführen kann, muss eigentlich nicht so groß sein - die wirkliche Ressource, die Sie benötigen, ist viel mehr RAM (10 Megabyte) als in jedem FPGA verfügbar ist, also Sie Ich werde wahrscheinlich SDRAM auf dem Board und einen Controller dafür im FPGA haben wollen.

Wenn Sie jedoch mehr als ein triviales Leistungsniveau wünschen, möchten Sie wahrscheinlich einen Kern mit einigen Optimierungen (Pipelining usw.), und das beginnt, die Größe etwas zu erhöhen. Das Hinzufügen eines vollständigen mmu macht die (Neu-)Zuweisung von Speicher effizienter und aktiviert das übliche Verhalten von copy-on-write fork().

Beide großen FPGA-Anbieter haben Soft-Prozessorkerne mit verfügbaren Linux-Ports – Microblaze für Xilinx, Nios II für Altera. Sie sollten wahrscheinlich ihre Dokumente für spezifische Plattformempfehlungen lesen, da es sich natürlich um ein Ziel handelt, das sich mit der Zeit bewegt. Ein Core-Design eines Drittanbieters kann bei ähnlicher Leistung etwas größer sein, wenn es portierbarer 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 mit konfigurierbarem FPGA-Fabric kombinierten. Eine weitere Option wäre ein separater Prozessor (wahrscheinlich ARM) auf derselben Platine 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, könnte es so modular sein wie das Aufhängen eines FPGA-Boards mit einem schnellen USB-Chip an den USB-Host-Port eines eingebetteten Linux-Boards wie einem BeagleBoard oder RasberryPi. Für eine engere Integration möchten Sie möglicherweise das FPGA auf derselben Platine und auf dem externen Bus des Prozessors sitzen. Oder für niedrige Datenraten ist es trivial, eine SPI-Registerschnittstelle in ein FPGA einzubauen, und UART-Schnittstellen sind durchaus 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 in "Mikrocontroller-Größe" Ihr Problem lösen würde, während Sie weniger Speicher benötigen.

Microblaze von Xilinx läuft problemlos unter Linux, vorausgesetzt, es ist schnell genug für Ihre Zwecke - es schafft nur einige hohe 10er MIPS in billigeren Geräten, 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 bisschen nervig als auch ein Segen sein, da sich Ihre Speicherbelegung und IRQ-Zuordnungen oder sogar die verfügbaren Peripheriegeräte während der Projektentwicklung ändern können.

Petalinux verfügt über Skripte, um solche Dinge zu verwalten und die wichtigen Teile der Kernel-Konfiguration basierend auf Ihrem neuesten und besten Systemdesign zu aktualisieren.

Die Virtex-Reihe von Xilinx hat FPGA-Versionen mit Hardcore-PowerPCs. Es ist ziemlich einfach, Linux auf dem PowerPC zum Laufen zu bringen, meine Studenten haben es für viele ältere Designprojekte getan. Sie haben immer noch viel konfigurierbares Gewebe, das Ihr Hardwaredesign füllen kann.

Das Virtex2 Pro Evaluierungsboard war in Bildungs- und akademischen Forschungsprojekten weit verbreitet. Da Xilinx die Unterstützung für diesen Versionschip in seinen neuesten Tools eingestellt hat, können Sie einen ziemlich billig erwerben. Ich glaube, dass es bis zur Version 9.x oder so unterstützt wurde. Hmm. Das ist einige Jahre her, also bin ich vielleicht ein bisschen nostalgisch. Jedenfalls verteile ich diese Tafeln immer noch an interessierte Studenten, damit sie so ziemlich alles damit machen können, was sie wollen.

Wenn ich mich nicht sehr irre, heißen sie Virtex xilinx.com/onlinestore/v2pro_boards.htm
@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 Änderung vorzuschlagen!

SmartFusion von Actel integriert ein FPGA mit einem Hard-IP ARM Cortex-M3-Kern und einer fortschrittlichen Analog-Engine in einem Ein-Chip-Gerät.

uClinux läuft recht gut auf dem Cortex-M3-Kern von SmartFusion. Weitere Informationen finden Sie auf dieser Website .

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 Produktionsmengen in der zweiten Hälfte des Jahres 2012 ausliefern werden.

Andere Anbieter haben möglicherweise ähnliche Produkte. Ich weiß nicht, ob oder wann Xilinx Zynq-Unterstützung in das kostenlose ISE WebPack bringen wird; Im Moment behaupten sie, dass Sie ISE Embedded Edition benötigen.

Warum haben Sie dieses Antwort-Community-Wiki erstellt? Das war wohl unnötig.