Bildergalerie
Bild 1: Mit FPGAs wie der Cyclone IV GX-Familie, die über fest integrierte und leistungsfähige PCIe-Schnittstellen verfügen, können effiziente Zweichip-Lösungen, bestehend aus dem Intel Atom und einem flexiblen I/O Companion realisiert werden.
Bild 2: Blockschaltbild einer möglichen Systemkonfiguration mit Atom-Prozessor und FPGA.
Bild 3: Hard-IP für PCI Express in Cyclone IV GX-FPGAs.
Bild 4: Applikationsbeispiel.

Flexible I/O Companions

Mit der vorgestellten Entwicklungsumgebung für flexible I/O Companion-Bausteine lassen sich sehr schnell verschiedene Varianten von anwendungs- und kundenspezifischen Systemen basierend auf der Atom-Familie bauen. Die Cyclone IV GX-Familie mit ihren integrierten PCIe-Schnittstellen eignen sich dabei besonders für kostensensitive Anforderungen. Für das schnelle Prototyping hat Kontron ein vollständiges Starterkit entwickelt, das eine Vielzahl von Schnittstellen aus dem industriellen Einsatzgebiet bereits enthält. Über die hier vorgestellte Anwendung des I/O Companion-Konzeptes für die Atom-Familie hinaus, ist die Entwicklungsumgebung auch für andere Prozessortypen mit PCIe-Bus sowie generell auch für andere Busarchitekturen geeignet.

Ein Vorteil von Atom ist, dass wichtige Funktionen des bisher unumgänglichen Chipsatzes in den Prozessor verlagert wurden und damit verglichen mit PC-Architekturen sehr viel kostengünstigere und platzsparende Systeme aufgebaut werden können. So finden sich in der neuen Generation der Atom-Prozessoren die Grafik- und Speichercontroller wieder, die bisher in den „Southbridge“-Bausteinen angesiedelt waren. Während die meisten ARM-basierten Systeme möglichst alle Peripheriekomponenten auf einem Baustein integrieren und damit anwendungsspezifische Mikrocontrollerlösungen bereitstellen, bleibt Intel viel näher der universellen PC-Architektur verbunden. Durch die Verwendung von Standardkomponenten auf der Softwareseite lassen sich so Kosten einsparen.

Auf der Hardwareseite ist allerdings etwas mehr Aufwand notwendig. Zum Aufbau von kompletten Systemen kommt man zusätzlich zum Atom-Prozessor nicht um einen Peripheriebaustein, den so genannten I/O-Hub, herum. Die verschiedenen I/O-Hub-Lösungen wiederum sind auf spezielle Anwendungen zugeschnitten und ermöglichen damit erst den Einsatz von Atom-Architekturen im Embedded Computing. Ein vollständiges Atom-System besteht also immer aus mindestens zwei Bausteinen, von denen einer universell und der andere spezialisiert ist. Will man mit diesem Konzept eine Plattform aufbauen, die verschiedene Variationen einer Industrieapplikation abdecken kann, so sind in aller Regel zusätzliche Systemkomponenten notwendig, da die Auswahl an I/O-Hub-Bausteinen limitiert ist. Meist kommen hier daher FPGAs zum Einsatz.

Auf den ersten Blick liegt es nahe, die I/O-Hub-Funktionen gleich mit in das FPGA zu integrieren. Da aber der PCIe-Bus sehr hohe Anforderungen an die FPGA-Technologie stellt, war das bisher nur mit großem Aufwand möglich. Erst mit der Verfügbarkeit von kostengünstigen FPGAs wie der Cyclone IV GX-Familie, die über fest integrierte und leistungsfähige PCIe-Schnittstellen verfügen, ist eine echte effiziente Zweichip-Lösung, bestehend aus dem Intel Atom und einem flexiblen I/O Companion, für den Serieneinsatz machbar (Bild 1 und Bild 2).

Programmierbare Hardware

Die Basis des flexiblen I/O Companions ist die Cyclone IV GX-Familie. Gegenüber der Cyclone IV E-Familie weisen die GX-Varianten eingebaute Transceiver-Blöcke auf, die eine serielle Datenübertragung mit bis 3,125 Gbit/s zulassen. Zusätzlich zu den Transceivern wurde hier auch der Protokoll-Layer von PCIe als hart eingebautes Macro implementiert (Bild 3).

Das FPGA erfüllt dabei zwei Aufgaben im System. Zum einen werden Standard-Interfaces realisiert, die sonst im I/O-Hub liegen. Zum anderen stellt das FPGA die Plattform für kundenspezifische Blöcke dar. Standard-Schnittstellen sind zum Beispiel USB, PATA, SATA, I2S und andere. Um Ressourcen zu sparen, werden nur genau so viele Interfaces implementiert wie von der Applikation auch tatsächlich benötigt werden. Im Gegensatz zu den fest verdrahteten I/O-Hub-Bausteinen bleibt beim flexiblen I/O-Companion also keine Logik unbenutzt.

Kundenspezifische Blöcke sind zum Beispiel industrielle Bus-Interfaces mit EtherCAT und Profibus sowie Module zur Video-Signalverarbeitung und für funktionale Sicherheit. Hier wird deutlich, wie einfach eine Atom-basierte Embedded-Plattform mithilfe des I/O Companions aufgebaut werden kann. Die Standard-Komponenten sowie die kundenspezifischen Module können jederzeit aus der Funktionsbibliothek entnommen und je nach Plattformausbau in die einzelnen Varianten integriert werden. Da die Cyclone IV GX-Bausteine in vielen Komplexitäten erhältlich sind, können so Systemlösungen in ganz verschiedenen Leistungsklassen mit einem identischen Architekturkonzept erstellt werden. Dieser Vorgang ist mit dem SOPC Builder genannten Entwicklungswerkzeug weitgehend automatisiert. Die neueste Quartus II- Version enthält bereits Qsys – das neue Systemintegrations-Tool von Altera – das erstmals für FPGAs optimierte Netzwerk-on-Chip basierte Verbindungen ermöglicht. Qsys bietet ein memory-mapped und Streaming-Interface und erreicht nahezu die doppelte Performance im Vergleich zum SOPC Builder.

Applikationssicht

Die weitgehend automatische Hardware-Generierung des flexiblen I/O Companions ist nur eine Seite des Konzeptes. Manchmal ist es wichtiger, wie die Hardware von der Software effektiv angesprochen werden kann und wie sie zusammen mit dem Atom-Prozessor möglichst leistungsfähig arbeitet. Die I/O Companion-Entwicklungsumgebung stellt dazu Werkzeuge und Mechanismen zur Verfügung. An dem I/O Companion-Design (Bild 4) lässt sich die Vorgehensweise verdeutlichen. Im FPGA des I/O-Companion sind hier die drei industriellen Netzwerkinterfaces Profinet, CAN und Ethernet implementiert. Die IP-Module sind über das FPGA-interne Bussystem am PCIe-Controller angeschlossen, der mit dem PCIe-Controller des Atom-Prozessors kommuniziert. Damit diese Kommunikation erst einmal in Gang kommt, sind spezielle Gerätetreiber notwendig, die das Registerlayout der Interface-Blöcke kennen und eine Programmierschnittstelle zur Verfügung stellen. Diese Treiber sind die Grundlage für weitere Programmschichten, die zum Beispiel einem Anwendungsprogramm die Kommunikation über ein bestimmtes Interface mit einem standardisierten Protokoll ermöglichen. Zusammen mit weiteren Hilfsprogrammen für Visualisierung und Ein-/Ausgabe sind die Programmblöcke in ein Laufzeitsystem des jeweils verwendeten Betriebssystems eingebettet. Aus Softwareentwickler-Sicht stellt der I/O Companion-Baustein den physikalischen Anschluss an die Netzwerkprotokolle dar.

Die Schwierigkeit ist, dass je nach verwendeter I/O Companion-Konfiguration andere Interfaces und Funktionen in Hardware zur Verfügung stehen, die dann auch von den jeweils passenden Treibern unterstützt werden müssen. Während zu fest verdrahteten I/O-Hubs einfach ein Satz von festen Treibern mitgeliefert wird, ist das bei im FPGA implementierten Interfaces nicht ganz so einfach. Hier kann sich die Lage der Interface-Ports im PCIe-Adressraum je nach I/O Companion-Variante durchaus ändern, oder es sind für kundenspezifische Blöcke ganz neue Registerinterfaces notwendig. Die I/O Companion-Entwicklungsumgebung stellt jedoch zur einfachen Einbindung von verschiedenen Varianten in ein Betriebssystem eine Reihe von Mechanismen und Werkzeuge zur Verfügung. Einer der wichtigsten Punkte ist, dass jede I/O Companion-Variante selbst die Informationen über die verwendete Hardware, die Lage der Register und das Programmierinterface enthält. Alle Daten stehen in einem Konfigurationsblock zur Verfügung.