ARM Call for Papers
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
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.
Mit dem Cortex-M0+ hat ARM im März den kleinsten 32-bit-Core der Welt vorgestellt. Wir haben ihn uns einmal genauer angeschaut.
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?
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
Wer bietet was?
Schnelle Information auf einen Klick!
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.
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.
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 |
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].

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.
1. Teil: Mikroprogrammierte Steuerwerke in FPGAs
2. Teil: Micro-coded UART
3. Teil: Micro-coded Soft-Core-Prozessor
4. Teil: Literatur & Autoren










