Effiziente SOPC-Designs dank neuer Logik-Architektur FPGAs – programmierbare Systeme auf einem Chip

Der hart umkämpfte Elektronikmarkt zwingt Systemhersteller dazu, immer kleinere, leistungsfähigere und kostengünstigere Systeme zu liefern. Um diesen höheren Integrationsgrad zu erreichen, nutzen sie gewöhnlich zwei Wege: ASIC-basierte Systems-on-Chip und in zunehmendem Maße auch Systeme auf programmierbaren Chips, so genannte SOPCs. Die neue Stratix-II-Familie von Altera ist ein gutes Beispiel für heute realisierbare Komplexitäten und die Funktionsvielfalt moderner PLD-Bausteine.

Effiziente SOPC-Designs dank neuer Logik-Architektur

Der hart umkämpfte Elektronikmarkt zwingt Systemhersteller dazu, immer kleinere, leistungsfähigere und kostengünstigere Systeme zu liefern. Um diesen höheren Integrationsgrad zu erreichen, nutzen sie gewöhnlich zwei Wege: ASIC-basierte Systems-on-Chip und in zunehmendem Maße auch Systeme auf programmierbaren Chips, so genannte SOPCs. Die neue Stratix-II-Familie von Altera ist ein gutes Beispiel für heute realisierbare Komplexitäten und die Funktionsvielfalt moderner PLD-Bausteine.

Das Ziel der SOPC-Technologie besteht darin, ein komplettes System in einem FPGA zu integrieren. Die Verfügbarkeit von optimierten Standard-IP-Blöcken (Intellectual Property) hilft den Entwicklern dabei, dieses Ziel schneller zu erreichen. Bei der Implementierung solcher Designs ist es entscheidend, die richtige Balance zwischen Entwicklungskosten und der möglichen Leistungsfähigkeit zu finden, um letztendlich den Systempreis zu ermöglichen, den der Kunde bereit ist, für diese Leistung zu bezahlen. In der Vergangenheit war gerade dieser Punkt manchmal ein Hindernis bei der erfolgreichen, kommerziellen SOPC-Implementierung. FPGAs wie die Stratix-II-Familie haben heute dank der enorm gesteigerten Komplexität und der geringeren Kosten ein Niveau erreicht, an dem ein komplettes System kosteneffektiv auf einem einzigen programmierbaren Chip implementiert werden kann. Außerdem helfen FPGAs dabei, die Designs schneller in die Produktion zu bringen, weil der Entwickler nicht auf Muster für die Verifikation warten muss. Solch ein Ansatz macht es darüber hinaus möglich, Systemverbesserungen oder -änderungen in letzter Minute durchzuführen, und zwar sowohl vor als auch noch während der Produktion.

Ein modernes FPGA muss einige grundlegende Charakteristika aufweisen, wenn es als SOPC-Plattform dienen soll. Es muss z.B. über ausreichende Routing-, Speicher-, Logik- und I/O-Ressourcen verfügen. Denn nur so kann sichergestellt werden, dass das Design einfach zu realisieren ist, eine hohe Leistungsfähigkeit bietet und schnell entwickelt werden kann. Außerdem ist ein leistungsfähiges IP-Portfolio erforderlich, um die Applikationsentwicklung – z.B. DSP-intensive (digitale Signalverarbeitung) Anwendungen wie Bildverarbeitung, drahtlose Kommunikation und Datenübertragungsapplikationen – zu beschleunigen. Darüber hinaus sollten für das FPGA ein umfangreicher Satz an Systemintegrations- und Design-Tools sowie entsprechende Entwicklungs-Kits zur Verfügung stehen, um den Entwicklungszyklus zu verkürzen.

Altera hat seine FPGAs der zweiten Stratix-Generation (Stratix II) für das Design und die Produktion von SOPCs weiter optimiert. Die Stratix-II-Familie basiert auf den Stratix-FPGAs, die bereits über spezielle Routing-, Speicher- und DSP-Block-Architekturen verfügten. Stratix II ist darüber hinaus mit einer neu entwickelten Logikstruktur ausgestattet, die die Entwicklung leistungsfähiger Systeme effizienter als jemals zuvor unterstützt. Diese neue Logik-Fabrik basiert u.a. auf der Einführung von adaptiven Logikmodulen (ALM), die die erforderliche Flexibilität bringen, um sowohl einfachere als auch komplexe Funktionen effektiv zu unterstützen und eine Vielzahl von Design-Optimierungsoptionen zu ermöglichen.

Die größere Flexibilität reduziert gleichzeitig die notwendige Anzahl von Logik-Ebenen, die für die Implementierung eines Designs erforderlich sind. Dieser Punkt ist bei heutigen ICs, in denen die Signallaufzeiten in den Chip-Verbindungen von entscheidender Bedeutung sind, kritisch. Die Stratix-II-Familie kombiniert diese gesteigerte Flexibilität mit den Vorteilen der 90-nm-Prozesstechnologie von TSMC. Damit werden eine im Durchschnitt um 50 % höhere Geschwindigkeit gegenüber vergleichbaren Stratix-Bausteinen der ersten Generation und rund 50 % geringere Kosten für äquivalente Komplexitäten möglich. Der Stratix-II-Baustein mit der höchsten Komplexität in dieser neuen FPGA-Familie (EP 2S180) umfasst mehr als 70 000 ALMs bzw. 180 000 Logikelemente (LEs) mit 9,4 Mbit Embedded-Speicher. Damit ist ein Integrationsgrad erreichbar, der weit über die Möglichkeiten früherer FPGA-Familien hinausgeht.

SOPC-Implementierung in FPGAs

Das folgende Beispiel mit einem Stratix-II-Baustein zeigt, wie ein SOPC leicht und effizient implementiert werden kann. Das hier ausgewählte Design ist ein I/O-Subsystem, das aus einem 32-bit-Nios-Embedded-Prozessor zur Steuerung einiger paralleler I/Os, einem UART für die Kommunikation und On-Chip-RAM und -ROM besteht. Um die verfügbare CPU-Bandbreite zu maximieren, wurde noch ein DMA-Controller hinzugefügt, der den Datentransfer zwischen UART und Speicher ohne Belastung der CPU ausführt. In diesem relativ einfachen Subsystem gibt es insgesamt sechs Blöcke, die über einen gemeinsamen Bus verbunden sind (Bild 1).

Avalon-Switch-Fabric verbindet Systeme
Eine Nios-basierende Implementierung des hier dargestellten Systems kann mit Hilfe des „SOPC-Builder“ innerhalb von Minuten entwickelt werden. Dabei handelt es sich um ein Werkzeug, das automatisch die Logik für die Verbindung der IP-Blöcke aufbaut. Das Werkzeug verbindet die Blöcke über den „Avalon“-Bus. Avalon ist ein einfacher, vollständig synchroner FPGA-effizienter Bus. Er vermeidet die Verwendung von traditionellen bidirektionalen Leitungen und Tri-State-Puffern. Stattdessen sind alle Peripherieeinheiten mit jedem Master im System über unidirektionale Busse verbunden. Damit werden interne Tri-States überflüssig, das Timing wird einfacher und Engpässe auf dem Bus werden vermieden. Der Avalon-Bus ermöglicht außerdem einen gleichzeitigen Transfer zwischen einzelnen Bus-Master- und -Slave-Paaren. Dieser Punkt ist besonders in Systemen nützlich, in denen entweder ein hohes Datenübertragungsaufkommen oder mehrere Datenströme auftreten. Bild 2 zeigt das gleiche System wie Bild 1, dieses Mal aber als ein über den Avalon-Bus verbundenes System.

Hier ist zu beachten, dass die Verbindungen zwischen jedem Systemblock und den dazugehörigen Eingangs-Multiplexern auf den Lese-Ports zu sehen sind. Jede Verbindung repräsentiert einen Bus, wobei jeder Bus Steuerungssignale und unidirektionale Adress- und Datensignale überträgt. Mit diesem Layout ist es leichter zu verstehen, wie die Daten wirklich durch das mit dem SOPC-Builder erzeugte System fließen und wie das System auf RTL (Register Transfer Level) implementiert werden könnte.

In diesem Beispiel brauchen die zwei Bus-Master Bus-Multiplexer, um einen Eingangs-Bus für jeden Slave zu unterstützen. Außerdem sind weitere Multiplexer erforderlich, damit mehrere Master auf den gleichen Slave zugreifen können. Weil in diesem Beispiel ein 32-bit-Datenbus genutzt wird, braucht der Eingang des Lese-Ports der CPU alleine 32 4:1-Multiplexer. Da die Komplexität von SOPC-Systemen steigt und weitere Bus-Master hinzukommen, werden breitere und zusätzliche Multiplexer notwendig.

Multiplexer sind aber nicht nur erforderlich, um die Ports der Systemblöcke zu bedienen, sondern auch um die CPU zu unterstützen. Tatsächlich bestehen bis zu 20 % der Systemlogik aus Multiplexern, die den Datenfluss rund um den Kern steuern. Dementsprechend haben die Optimierung und die Steigerung des Durchsatzes von Multiplexern einen entscheidenden Einfluss auf die gesamte SOPC-Leistung.

FPGA-Implementierung
In dem Beispiel-SOPC-System ist die Abbildung des Busses in ein FPGA einfach. Die Leitungen, die die Master und Slaves verbinden, lassen sich leicht auf die Verbindungsstruktur eines FPGA abbilden. Außerdem nutzt die Avalon-Switch-Fabric die Routing-Fähigkeiten der Stratix-II-Bausteine und anderer Altera-FPGAs effektiv, welche gewährleisten, dass auch solche Designs noch „geroutet“ werden können, die die Bausteine zu 95 % und mehr auslasten. An den Lese- und Schreibports sind breite Multiplexer implementiert, die die Verbindungen zwischen jedem Block steuern. Gemäß der Adresse, die angesprochen wurde, steuert der Master die ausgewählten Eingänge der Multiplexer. Außerdem steht auf der Slave-Seite eine kleine Arbitrierungslogik zur Verfügung, die, wenn nötig, die Zugriffe von mehreren Mastern regelt. All diese Logik, ein-schließlich der Multiplexer, ist im programmierbaren Logikteil des FPGA implementiert. Im Vergleich zu früheren FPGA-Architekturen kann der Anwender mit der neuen Stratix-II-Architektur diese Funktionen effizient umsetzen.