ARM Call for Papers

Konferenz für ARM-Systementwicklung
Konferenz für ARM-Systementwicklung

Die große Konferenz für ARM-Systementwicklung am 11. und 12. Juli 2012 in München bietet Entwicklern die Gelegenheit, sich detailliertes Wissen über die aktuellen Cortex-Architekturen anzueignen, die mittlerweile zum Industriestandard avanciert sind.

Ausführliche Informationen:
www.arm-entwicklerkonferenz.de

iPad 3 Teardown & Light+Building

Intel-Prozessor im Smartphone
Intel-Prozessor im Smartphone

Mit dem Lava Xolo X900 gibt es erstmals ein Smartphone, das auf einem Atom-Prozessor von Intel basiert. Kann das mit ARM mithalten? Wir haben das untersucht.

Der kleinste 32-bit-Core der Welt
Der kleinste 32-bit-Core der Welt

Mit dem Cortex-M0+ hat ARM im März den kleinsten 32-bit-Core der Welt vorgestellt. Wir haben ihn uns einmal genauer angeschaut.

Was bringen Quad-Cores in Smartphones?
Was bringen Quad-Cores in Smartphones?

Der Tegra-3 von Nvidia ist der erste Quad-Core-Prozessor für Smartphones und Handys - ganz aktuell im neuen Galaxy S3. Doch bringen vier Kerne im Smartphone überhaupt etwas?

Reingeschaut: Das Galaxy Nexus
Reingeschaut: Das Galaxy Nexus

Ein Blick in dass Innenleben des gemeinsam von Google und Samsung entwickelten Smartphones.

Entwicklungstools zum Download
Entwicklungstools zum Download

Zahlreiche Hersteller bieten im Netz Online-Tools, zeitlich begrenzte Testversionen oder ganze Programmme zum Download an. Wir haben eine kleine Auswahl davon zusammengestellt.

Produkte des Jahres 2012

Events

Marktübersichten Bauelemente

Bauelemente-Marktübersichten

Electronic WebLessons

Electronic WebLessons
Electronic WebLessons

Die Electronic WebLessons vermitteln multimedial aufbereitet Basiswissen zum Thema Elektronik. Hier können Sie ihr Praxiswissen auffrischen oder sich die Grundlagen der Elektronik neu aneignen.

15. Dezember 2011
Ressourcenschoner

Mikroprogrammierte Steuerwerke in FPGAs

Programmierbare FPGA-Bausteine sind heute mit zahlreichen RAM-Blöcken als primitive Komponenten ausgestattet. Sehr häufig werden diese Blöcke als interne Pufferbereiche zur Datenspeicherung eingesetzt. Aber nicht in jeder Applikation können alle RAM-Blöcke ganz ausgelastet werden, oft bleiben sogar viele von ihnen ungenutzt. Dieser Artikel befasst sich mit dem Einsatz solcher RAM-Blöcke als Mikroprogrammspeicher in mikroprogrammierten Steuerwerken in FPGA-Bausteinen und zeigt an zwei Anwendungsbeispielen, wie der Einsatz mikroprogrammierter Steuerwerke auf der Basis von RAM-Blöcken zu einer erheblichen Einsparung von Ressourcen führt.

Von Prof. Dr. Irenäus Schoppa und Christian Kielmann

Anzeige

Die meisten modernen, hochkomplexen, programmierbaren Logikbausteine vom Typ FPGA sind heute mit zahlreichen RAM-Blöcken in Form von sog. primitiven Komponenten ausgestattet. Tabelle 1 gibt einen Überblick über die Anzahl der RAM-Blöcke und deren Kapazität in den aktuellen fünf FPGA-Familien von Xilinx [7].

FPGA-Familie
Anzahl RAM-Blöcke Größe pro RAM-Block
Virtex-6 156 - 1064 36 Kbit
Virtex-5 26 - 516 36 Kbit
Virtex-4 36 - 552 18 Kbit
Spartan-6 12 - 268 18 Kbit
Spartan-3 4 - 126 18 Kbit
Tabelle 1. Anzahl von RAM-Blöcken und deren Kapazität in den einzelnen FPGA-Familien von Xilinx

Innerhalb einer FPGA-Familie hängt die Anzahl der verfügbaren RAM-Blöcke mit der Größe eines FPGA-Bausteins zusammen. So enthält bspw. der kleinste Spartan-3 vom Typ XC3S50 nur vier RAM-Blöcke, wogegen im größten Spartan-3 vom Typ XC3S5000 insgesamt 126 RAM-Blöcke vorhanden sind [8, 9]. Häufig werden solche RAM-Blöcke als interne Pufferbereiche (FIFOs) zur Datenspeicherung oder als Daten-/Programmspeicher für Soft-Core-Prozessoren eingesetzt. Weitere Anwendungen sind Code-Konverter, schnelle Funktionsgeneratoren, BCD-Zähler und mikroprogrammierte Zustandsmaschinen[1].

Der folgende Beitrag befasst sich mit dem Einsatz der RAM-Blöcke als mikroprogrammierte Steuerwerke in FPGA-Bausteinen und zeigt deren Anwendungsmöglichkeiten anhand eines mikroprogrammierten UART-Moduls sowie eines mikroprogrammierten Soft-Core-Prozessors M68HC05.

RAM-Blöcke in den Spartan/Virtex-Familien von Xilinx basieren auf einer universell konfigurierbaren, synchronen Speicherarchitektur. Sie verfügt über zwei symmetrische, physikalisch voneinander getrennte Ports mit separaten Adress-, Daten- und Steuersignalen. Diese Merkmale ermöglichen es, RAM-Blöcke als Single- oder als Dual-Port-Speicher flexibel zu konfigurieren.

In der Spartan-Serie sind die RAM-Blöcke spaltenweise organisiert und haben eine typische Blockgröße von 18 Kbit. Für einen RAM-Block kann der Anwender zehn verschiedene Speicherorganisationen von 16 K × 1 bit, über 1024 × 16 bit bis 256 × 72 bit, wahlweise - mit Paritätsbits, auswählen [10]. Die FPGA-internen RAM-Blöcke sind sehr schnelle synchrone Komponenten und weisen in der Spartan-Serie eine Verzögerung (Clock-to-Output-Time) von 2,4 ns [9] auf. Die Initialisierung von RAM-Blöcken kann entweder über INIT-Attribute bei der Instanziierung einer primitiven RAM-Block-Komponente oder über eine COE-Datei bei der Konfiguration einer RAM-Block-Komponente mit dem Core-Generator von Xilinx erfolgen [8].

Prinzip der Mikroprogrammierung

Der klassische Entwurf eines Steuerwerks als Zustandsmaschine auf Basis festverdrahteter Logik kann bei komplexen digitalen Systemen mit zahlreichen Zuständen und Zustandsübergängen sowie mit vielen Statussignalen recht aufwendig werden. Mit der steigenden Komplexität erhöht sich auch die Fehleranfälligkeit und sinkt die Flexibilität sowie die Erweiterbarkeit. Anstelle eines festverdrahteten Steuerwerks kann deshalb ein Steuerwerk auf der Grundlage eines (Mikroprogramm-) Speichers verwendet werden. Dabei wird ein Steuerungsalgorithmus als Programm im Mikroprogrammspeicher des Steuerwerks abgelegt und als Folge von Mikrobefehlen abgearbeitet.

In diesem Beitrag wird vor allem auf diejenigen Architekturen mikroprogrammierter Steuerwerke eingegangen, die sich besonders gut zur Realisierung mit synchronen Speichern eignen. Eine umfassende und praxisorientierte Beschreibung spezieller mikroprogrammierter Steuerwerke im Prozessorentwurf und für Steuerungsanwendungen findet man in [4]. Einen sehr guten Überblick über die Synthese mikroprogrammierter Steuerwerke für Rechenwerke in universellen und speziellen Prozessoren bieten auch [5, 6].

Grundstrukturen mikroprogrammierter Steuerwerke
HTWG Konstanz 
zoom
Bild 1. Grundstrukturen mikroprogrammierter Steuerwerke mit paralleler und sequenzieller Abfrage von Bedingungen sowie -bedingten Startadressen.

Es gibt drei einfache Grundstrukturen mikroprogrammierter Steuerwerke, die für den Einsatz in FPGA-Bausteinen mit synchronen RAM-Blöcken besonders geeignet sind (Bild 1).

Als erstes gibt es Steuerwerke mit paralleler Abfrage von Eingangsbedingungen. Im einfachsten Fall besteht ein mikroprogrammiertes Steuerwerk nur aus einem einzelnen RAM-Block als Mikroprogrammspeicher und kommt ohne zusätzliche Logik aus. Die effektive Adresse, also diejenige Adresse, mit der der Mikroprogrammspeicher adressiert wird, wird durch die Konkatenation der Zustandsadresse mit den Eingangsbedingungen gebildet. Das Format eines Mikrobefehls besteht aus einem Feld für Folgeadressen und einem Bitvektor für Ausgangssteuersignale. Dieser Typ des Steuerwerks fand Verwendung bei der Implementierung des mikroprogrammierten UART-Moduls.

Des Weiteren gibt es Steuerwerke mit sequenzieller Abfrage von Eingangsbedingungen. Ein Steuerwerk dieses Typs kann dann zum Einsatz kommen, wenn die Eingangsbedingungen zeitlich disjunkt ausgewertet werden können. Das Steuerwerk wird eingangsseitig um einen 1-aus-N-Multiplexer derart erweitert, dass die Auswahl einer aus mehreren Eingangsbedingungen erfolgen kann. Die effektive Adresse wird durch die Konkatenation der Zustandsadresse mit der selektierten Eingangsbedingung gebildet. Das Format des Mikrobefehls beinhaltet drei Felder, und zwar mit Folgeadressen, mit Ausgangssteuersignalen und mit Auswahlsignalen für den Multiplexer.

Schließlich gibt es noch Steuerwerke mit bedingten Startadressen. Dieser Typ des Steuerwerks ist für die Implementierung eines mikroprogrammierten Steuerwerks in einem Soft-Core-Prozessor besonders gut geeignet. Eingangsseitig befinden sich dort zwei Multiplexer. Mit einem Multiplexer werden Eingangsbedingungen selektiert, die dann im zweiten Multiplexer zur Auswahl von Startadressen dienen.

Mit Hilfe der Startadressen lassen sich verschiedene Abschnitte im Mikroprogramm erreichen. Diese Abschnitte beinhalten Folgen von Mikrobefehlen zur Ausführung  von Maschinenbefehlen des Soft-Core-Prozessors. Das Format des Mikrobefehls besteht hier aus einem Feld für Folgeadressen, einem Bitvektor für Ausgangssteuersignale und einem Feld mit Auswahlsignalen für die Multiplexer.