zuruck zur Themenseite

Artikel und Hintergründe zum Thema

FPGAs

Rainer Fehr, Jürgen Kern | Meinrad Happacher,

Geräte-Design auf Zynq-Basis

Netmodule stand vor der Aufgabe, ein Ethernet-basiertes Kommunikationssystem zu realisieren. Ziel war: Auf einer einheitlichen Plattform je nach Anwendung dedizierte Endgeräte entwickeln zu können, indem lediglich spezifische Protokolle – per FPGA-Programmierung – hinzugefügt werden. Basis der Geräte-Entwicklung: Die Zynq-Familie von Xilinx, die neben einer CPU eine auf dem Chip integrierte programmierbare Logik aufweist.

© Netmodule

Xilinx besetzt mit der Zynq-7000-SoC-Familie derzeit eine Marktlücke: Die Bausteine sind kompakt, leistungsfähig und stromsparend und haben dennoch genügend Flexibilität, um eine spezielle Funktionalität auf einem Chip zu realisieren. Als Besonderheit bieten die Bauteile eine auf dem Chip integrierte programmierbare Logik. Die zugrundeliegende Zynq-7000-Plattform besticht durch Skalierfähigkeit der einsetzbaren Technologien und hohe Kompatibilität zu ARM-Standards und anderen Produkten von Xilinx sowie einer Vielzahl an verfügbaren Tools.

Netmodule hat sich deshalb entschieden, für die Entwicklung einer universellen Plattform eines Ethernet-basierten Kommunikationssystems auf die Zynq-Familie zu setzen.

Im konkreten Fall sollte ein bestimmtes Redundanzprotokoll (hier: PRP nach IEC 62439-3), für das ein IP-Core für FPGAs bereits existierte, implementiert werden. Als weitere Anforderung musste der Datenverkehr in Gbps-Geschwindigkeit abgewickelt werden, bei geringstmöglicher Leistungsaufnahme. Und: Als Betriebssystem sollte Linux zum Einsatz kommen.

Schnell zeigte sich: Voraussetzung für ein optimales Ergebnis ist die enge Zusammenarbeit der jeweiligen Experten. Wobei die besondere Herausforderung im Zusammenspiel der drei Kompetenzen – klassische Hardware-Entwicklung, FPGA-Entwicklung, Software-Entwicklung – lag.

Anzeige

Die Hardware

Als CPU kommt ein kommerziell erhältliches Zynq Modul (Eclustra Mars ZX3) mit einem Zynq-7020 zum Einsatz. Auf einem speziell entwickelten Carrier-Board sind die Stromversorgung und verschiedene Peripherie-Bausteine integriert. So entstand auf relative einfache Weise eine breit einsetzbare Systemplattform, die für unterschiedliche Anwendungen geeignet ist.

Die Systemplattform ZE7000: Als CPU dient das Zynq-Modul Eclustra Mars ZX3 mit einem Zynq-7020.

© Netmodule

Das Zynq-Modul enthält neben dem Zynq-7020 Device 512 MB DDR3 RAM, einen Gbit Phy, 512 MB NAND Flash, QSPI Flash und einen USB2.0 OTG Phy, der in dieser Anwendung jedoch nicht verwendet wird. Alle an­deren Funktionseinheiten befinden sich auf dem Carrier Board:

■ Ein I2C Bus, der PHY, EEPROM und RTC verbindet und auch am Modul-Stecker verfügbar ist.
■ Ein serielles Interface (RS 232), welches direkt mit dem Zynq-7020-Chip verbunden ist.
■ Fünf Gigabit Ethernet Interfaces, wovon eines direkt mit dem PHY des Zynq-Moduls vernetzt ist; die restlichen vier PHYs werden über je ein RGMII-Interface mit der programmierbaren Logik des Zynq-7020 angeschlossen.
■ Ein SD-Card-Interface, das direkt mit dem Zynq-7020 verbunden ist und eine Besonderheit aufweist: Die Systemplattform kann über dieses Interface „gebootet“ werden.
■ Zehn benutzerspezifische LEDs, die direkt von einem Register innerhalb der programmierbaren Logik (PL) angesteuert werden.
■ Ein JTAG-Interface zu Debugzwecken.
■ Ein Powersupply-Modul mit 24 V Eingangsspannung und isolierten Eingängen.

Der Bootprozess

Sobald der CPU-ROM-Code ausgeführt wird (Power-on, Reset), booted das System aus dem QSPI Flash in folgenden Schritten: Starten des Urladers (First Stage Boot Loader/FSBL); Laden des FPGA-Bit-Streams; Starten des U-Boots.

Besonders wichtig ist der zweite Schritt „Laden des FPGA-Bit-Streams“, weil darüber die Initialisierung der programmierbaren Logik des Zynq-7020 erfolgt. Das bedeutet: Peripherie, welche mittels programmierbarer Logik implementiert wird, steht für U-Boot und Linux Kernel bereits zur Verfügung. Beim Start von Linux durch U-Boot werden folgende Optionen unterstützt: Standard-Boot aus dem NAND Flash, Boot von einer SD-Speicherkarte aus, Rescue/Update-Boot aus dem QSPI-Flash, TFTP-Boot.

Diese Boot-Prozeduren sind in einem „Boot Image“ zusammengefasst.

Die Software

Als Betriebssystem kommt Linux zum Einsatz. Die vom Chiphersteller Xilinx zur Verfügung gestellte Version diente als Basis. Für das verwendete Zynq-Modul und das Carrierboard wurde ein Board Support Package (BSP) entwickelt. Als Build-System kam Yocto zum Einsatz. Das Yocto Project ist ein Open-Source-Kollaborationsprojekt, das von der Linux Foundation koordiniert und von mehreren Firmen (darunter NetModule) vorangetrieben wird. Yocto ist eine Sammlung von Templates, Tools und Methoden, um kundenspezifische Linux-Distributionen für Embedded-Systeme einfach zu erzeugen. Yocto entwickelt sich zunehmend zum Standard. Für die beschriebene Anwendung kamen Bestandteile wie eine Cross-Tool-Chain, ein Configuration-Manager und – besonders wichtig – der Image-Build-Generator von Yocto zur Anwendung. Die Erzeugung und Integration der programmierbaren Logik erfolgten mithilfe der Standard Tools von Xilinx .

Die Anwendung im Detail

Die hier vorgestellte Systemplattform vereint neueste Technologien in Bezug auf Hardware, Firmware und Software:

■ Eine ARM Dual-core CPU mit programmierbarer Logik und Peripherie, die direkt von den ARM Cores oder aber aus der programmierbaren Logik heraus angesprochen werden kann,
■ mehrere Gigabit-Ethernet-Interfaces für schnelle Datenkommunikation,
■ ein Embedded-Linux-Betriebssystem mit Yocto-Build-System,
■ ein Mix aus Open-Source- und Closed-Source-Komponenten.

Die Entwicklung der Systemplattform ZE7000 erfolgte weitgehend pa­rallel, das heißt, die Hardware- und Software-Entwicklung sowie die Portierung des bestehenden FPGA-IP-Core wurden nahezu zur gleichen Zeit vom Entwicklungsteam durchgeführt. Voraussetzung dafür war der Einsatz eines kommerziell erhältlichen Zynq-Moduls, für das auch ein Evaluierungs-Board angeboten wird. Die Hardware-Entwicklung reduzierte sich auf die Entwicklung des Carrier-Boards. Zur Implementierung des Betriebssystems diente das vom Hersteller zur Verfügung gestellte Linux. Zunächst galt es, ein Board Support Package (BSP) für das verwendete Zynq-Modul zu erstellen, wobei soweit wie möglich Open-Source-Quellen genutzt wurden. Die Entwicklungsumgebung für die Software basiert auf Yocto und Eclipse.

Nachdem die Hardware verfügbar war, erfolgte im nächsten Schritt die Anpassung des BSP für das Carrier-Board. Parallel dazu wurde der bereits existierende IP-Core für das IEC-62439-Protokoll auf die programmierbare Logik des Zynq-7020-Bausteins übertragen. Hier war lediglich die Anpassung des CPU-Interfaces notwendig. Der übrige FPGA-Code lief sofort ohne jegliche Änderung. In der abschließenden Systemintegrations- und Verifikationsphase wurden die parallel entstandenen Ergebnisse zusammengeführt.

Bei der Realisierung der System­plattform sahen sich die Entwickler mit speziellen Herausforderungen konfrontiert: Das Zusammenspiel von FSBL, Bitstream, Bootloader und Linux-Kernel ist äußerst komplex und benötigt plattformübergreifendes Wissen und Einarbeitungszeit, um alle Komponenten für eine gegebene HW-Plattform bereitzustellen. Wie meistens beim Einsatz von brandneuen Technologien war eine intensive Zusammenarbeit mit den Zulieferern und Spezialisten notwendig, um die bestehenden Kom­ponenten in eine Application Ready Platform zu integrieren. Zynq-Entwicklungen erfordern ein breites Wissensfeld (HW/SW/FPGA) und ein interdisziplinäres Team.

So stellten die zeitgerechte Verfügbarkeit der Experten für Hardware-, Software- und FPGA-Entwicklung sowie ein enger Kontakt zu den Herstellern die unbedingten Voraussetzungen für den Erfolg des Projekts dar.

Die Projekt-Highlights

Insgesamt gesehen sind die Erfahrungen bei der Entwicklung der beschriebenen Systemplattform positiv zu werten. Zwar machte man als „Early Adaptor“ auch Erfahrungen mit noch nicht ganz stabiler Firm- und Software. Allerdings ließen sich die Schwierigkeiten in den meisten Fällen mit der Unterstützung des jeweiligen Herstellers schnell beheben. Zahlreiche Highlights prägten dieses Projekt:

■ Die universelle Systemplattform ZE7000 konnte innerhalb weniger Monate realisiert werden.
■ Die flexible Zuordnung von Peripheriekomponenten zur CPU oder zur programmierbaren Logik führt zu einer nie dagewesenen Flexibilität und damit zu neuen Anwendungsmöglichkeiten.
■ Ein zuvor für FPGAs enwickelter IEC-62439-IP-Core konnte auf der ZE7000-Systemplattform schnell in Betrieb genommen und verifiziert werden.
■ ZE7000 ist inzwischen erfolgreich im Kunden-Einsatz.

Als Schwachpunkte sind festzuhalten: Wie immer bei neuartigen Technologien waren eine Lernkurve und viel Integrationsaufwand nötig. Darüber hinaus entstand zusätzlicher Zeitverlust durch Bugfixes der Hersteller. Die als Highlight beschriebene Flexibilität wird mit erhöhtem Konfigurationsaufwand erkauft. Das bedeutet höheren Zeit- und Ressourcenbedarf mit Spe­zialwissen. Der Einsatz des Zynq-7020-Bausteins zur Realisierung der vorgestellten Anwendung hat sich dennoch bewährt. Voll und ganz erfüllt wurden die Erwartungen an die Leistungsfähigkeit des Chips, die Einfachheit seiner Anwendung für die vorgegebenen Ziele und die Geschwindigkeit der Umsetzung: Innerhalb von drei Monaten ließ sich so eine universelle Systemplattform für Gbit-Ethernet-Kommunikation realisieren. Eine Systemplattform, aus der sich durch ein­fache Erweiterbarkeit mittels der programmierbaren Logik des Zynq-7020-Bausteins Endgeräte mit spezifischer Zielanwendung entwickeln lassen. Dies wurde anhand der Integration eines Redundanzprotokolls nach IEC 62439-3 verifiziert.

Zusätzlich ließ sich ein interessantes Modell für die Software-Entwicklung entwerfen und verifizieren: die Kom­bination von frei verfügbaren OpenSource-Technologien (Linux OS, Yocto Builder, BSPs) mit ClosedSource-Komponenten (FPGA IP-Core, User-Space-Applikationen).

Autoren: Rainer Fehr ist technischer Leiter bei Netmodule und Jürgen Kern ist Geschäftsführer bei Netmodule.

  • Xing Icon
  • LinkedIn Icon
Anzeige
zurück zur Themenseite
Anzeige

Das könnte Sie auch interessieren

Anzeige

Internet of Things

Herausforderung Energie-Effizienz

Im Internet der Dinge wird überwiegend drahtlos statt über Kabel kommuniziert. Die meisten Geräte sind nicht mit dem Stromnetz verbunden, sondern beziehen ihre Energie aus Akkus oder Batterien. Was bedeutet das für die Hersteller neuer Produkte?

mehr...

Rechner-Plattform

Open Source in der Industrie

In der Entwickler-Community steht der Open-Source-Gedanke hoch im Kurs. Hat dieser Ansatz auch im konservativen Automatisierungsumfeld eine Chance zu punkten? Kunbus wagt den Schritt mit einem Open-Source-Rechner auf Raspberry-Pi-Basis.

mehr...

Industrie-PCs

Der Kälte-Tunnel

Gesteigerte CPU- und Grafikleistung bei Senkung des Geräuschpegels. Dieser Herausforderung begegnet Inonet mit einem völlig neuen Kühlkonzept – dem Thermal Tunnel.

mehr...
Anzeige
Anzeige

Engineering

Gemeinsam entwickeln mit Git

Bei der Software für Versionsverwaltung 'Git' sprechen funktionale Einschränkungen gegen einen Einsatz im professionellen Umfeld. Damit ist jetzt Schluss: Software-Add-ons machen das beliebte Open-Source-Tool unternehmenstauglich.

mehr...
Anzeige

Profinet

Was moderne Diagnose-Tools leisten

Wie schon bei Profibus ist auch bei der Ethernet-basierten Profinet-Vernetzung eine exakte Netzdiagnose für einen langfristigen und zuverlässigen Betrieb der Anlagen unumgänglich. Allerdings sind hier wesentlich mehr Aspekte zu berücksichtigen.

mehr...

Industrie-PC

Die Speicher für den Industrie-Einsatz

Ob beim Einsatz im Freien, in Maschinen mit starken Vibrationen oder im Dauerbetrieb – PCs für den Industrie-Einsatz müssen anderen Anforderungen genügen als jene für den Consumermarkt. Dies ist vor allem bei ihren Speicherkomponenten häufig ein...

mehr...
Anzeige
Anzeige
Anzeige
Jetzt Newsletter abonnieren