Nächster AbschnittInhaltsverzeichnis

1 Die Mikrorechner-Platine

Im Sommersemester 1995 fand am Fachbereich Informatik, Arbeitsbereich Technische Grundlagen der Informatik, seit längerer Zeit wieder das Grundstudiums-Projekt "Entwurf eines Mikrorechners" statt.

Dabei sollten die Teilnehmer ihr im Grundstudium erworbenes theoretisches Wissen dazu verwenden, den Zentralprozessor (Central Processing Unit, CPU) eines Mikrorechners von Grund auf zu entwerfen, ihn sodann mittels noch zu erwerbender Kenntnis einer Hardware-Beschreibungssprache in FPGA-Technik zu "fertigen" und in eine vorgegebene und -gefertigte Rechnerumgebung einzufügen, so daß ein funktionsfähiger Mikrorechner mit Standardkomponenten entsteht. Gegenüber dem letzten solchen Projekt im Jahre 1989 hatten die Teilnehmer dabei den Vorteil, daß die Hardware sich vor Ort erstellen und, durch simples Neuprogrammieren des FPGAs, „reparieren" läßt.

1.1 Ziele des Projektes

Die Ziele einer so aufwendigen Veranstaltung wie des "Mikrorechner-Praktikums" lassen sich grundsätzlich in zwei Gruppen aufteilen: Zunächst sichtbar und den Teilnehmern ständig als Maßstab, an dem sie ihren Fortschritt und die noch verbleibende Zeit messen, vor Augen, ist das primäre, das Fertigungsziel. Am Ende eines jeden Projektes sollte wiederum eine jede Gruppe ein vorzeigbares Endprodukt ihrer Bemühungen vorweisen können; entweder ist dieses greifbar, wie in dem vorliegenden Fall, wenn ein Mikroprozessor gefertigt wurde, dessen Gehäuse man in die Hand nehmen und den man in der Mikrorechnerplatine in Aktion bewundern kann, oder lediglich vortragbar, etwa wenn sich das Projekt mit der Verabschiedung einer Spezifikation, der Ausarbeitung einer technischen Empfehlung etc. befaßt hat.

Das Fertigungsziel stellt eine nicht zu unterschätzende Motivationshilfe für die Teilnehmer dar. Wird es erreicht, werden die Teilnehmer nicht nur (zu Recht) stolz auf sich sein, sondern sie können auch davon ausgehen, daß sie die weniger offensichtlichen Ziele der Veranstaltung, die Lernziele, erreicht haben. Diese Annahme scheitert selbstverständlich bei "Fertigungshilfen" wie dem blinden Kopieren fremder Teillösungen oder dem geschickten Aushorchen der Veranstalter immer dann, wenn eigenes Denken gefragt wäre.

Wie schon erwähnt, ist das Fertigungsziel gleichzeitig Meßlatte für den Erfolg (mit den oben genannten Einschränkungen) des Projektes bezogen auf den einzelnen Teilnehmer, wie mahnender Hinweis auf die noch verbleibende Zeit. Wird das Fertigungsziel in Unterziele zerlegt, was bei komplexen technischen Zielen sowieso unabdingbar ist, kann jederzeit anhand der schon erledigten, der bereits angegangenen und der noch nicht gelösten Aufgaben grob abgeschätzt werden, ob man sich noch im Zeitplan befindet. Nebenbei erweitert sich dabei der Katalog der Lernziele um zwei weitere: die Fähigkeit zur Aufspaltung von Problemen in sinnvoll bearbeitbare Teilprobleme (und deren Verteilung im Team) sowie das Umgehen mit der knappen Ressource Zeit.

Es ist einleuchtend, daß im Rahmen eines Hochschulstudiums, dessen Ziel der Erwerb von Wissen und darauf basierenden Fähigkeiten ist, den schon mehrfach erwähnten Lernzielen größere Bedeutung beizumessen ist, als dem Fertigungsziel. Am Ende seiner Zeit an der Universität soll der Student ja nicht über ein Sammelsurium an selbstgefertigten Prototypen, Programmen und Protokollen verfügen, sondern über das fachliche und allgemeine Wissen, das notwendig ist, um ihn guten Gewissens für bestimmte Aufgaben einzusetzen bzw. sich mit Aussicht auf Erfolg selbständig zu machen. Das „fachliche und allgemeine Wissen" umfaßt, um dieses noch einmal explizit zu sagen, nicht nur die Kenntnis fachlicher, technischer Tatsachen, sondern eben auch die Beherrschung allgemeingültiger Vorgehensweisen wie des selbständigen Arbeitens und des teamwork. Auch in diesem Bereich konnten die Teilnehmer wegen des Projektcharakters der Veranstaltung dazulernen.

Nach diesen Vorbetrachtungen sind wir nun in der Lage, das Grundstudiums-Projekt "Entwurf eines Mikrorechners" auf seine Fertigungs- und Lernziele hin zu untersuchen; dazu betrachten wir zunächst seine inhaltliche Ankündigung im kommentierten Vorlesungsverzeichnis:

Lernziel: Umsetzen des Lehrstoffes der Vorlesungen B1 und B2 am praktischen Beispiel einschließlich Chip-Entwurf.

Inhalt: Der Mikrorechner soll alle typische Merkmale eines von Neumann-Rechners aufweisen. Jedoch soll der Befehlssatz einfacher als in der Vorlesung gehalten werden; dadurch wird auch der Hardware-Aufbau einfacher. Das Steuerwerk wird dadurch relativ unkompliziert, so daß neben einer Mikroprogrammsteuerung auch eine Alternative, nämlich ein Steuerwerk als Moore-/Mealy-Automat möglich wird.

Andererseits werden am praktischen Beispiel einige Fragekomplexe in ihrer Bedeutung mehr in den Vordergrund treten als in der Vorlesung, nämlich: korrektes Umgehen mit Zeitbegriffen (Flanken-/Pegelsteuerungen), drohende Taktimpulsverschiebungen, Anschluß von Hauptspeicherbausteinen, Simulationstechnik. Zum praktischen Betrieb des Rechners wird auch der Entwurf eines einfachen Assemblers nötig.

Vorgehen: Begleitet durch eine studentische Hilfskraft wird ein Platinenaufbau vorbereitet, so daß über Schnittstellen auch der Anschluß eines Terminals und weiterer einfacher peripherer Einheiten möglich wird. Im Projektverlauf selbst sollen sich kleine Gruppen bilden, die sich schwerpunktartig auf ein Teilthema konzentrieren; z.B. "Operationswerk", "Steuerwerk", "Assembler", "Anschluß eines Terminals". Es gibt regelmäßig "Plenarsitzungen", in denen die Gruppen berichten und bei denen die Ergebnisse diskutiert und aufeinander abgestimmt werden. Wer sich besonders für die Fragen des Chip-Entwurfs interessiert, kann sich parallel zur Entwurfsarbeit in die Fragen der Bedienung des vor Ort existierenden FPGA-Entwurfssystems einarbeiten (FPGA: Field Programmable Gate Array); dieses System erlaubt es, Chips vor Ort - und somit noch innerhalb des Sommersemesters 95 - fertig entstehen zu lassen (FPGAs bilden das derzeit erfolgreichste Verfahren zur Chip-Herstellung in kleinen Stückzahlen).

Durch die Diskussion in den Plenarsitzungen erhalten alle Teilnehmer zu allen Gesichtspunkten eine solide Vertiefung ihres bisherigen Wissens.

Das primäre Fertigungsziel war eindeutig der auf dem MPB einzusetzende Zentralprozessor, genauer gesagt eine Hardwarebeschreibung, die aus dem 81500-FPGA einen solchen Zentralprozessor macht. Als Unterziele, die am Endprodukt nicht mehr sichtbar auftreten, können dabei die für einen von Neumann-Rechner typischen Komponenten Steuer- und Operationswerk gelten. Das dritte Spezifikum, der gemeinsame Speicher für Programme und Daten, steht für alle Gruppen einheitlich als SRAM auf dem MPB zur Verfügung - erstellt werden muß nur ein Automat, der das RAM und alle anderen Speicherbereich anspricht. Für die Abfassung von Programmen in der dem jeweiligen Prozessor eigenen Maschinensprache ist der einfache Assembler von Nutzen, der sicherlich ein vorzeigbares Endprodukt darstellt.

Wie man sieht, hält sich die Anzahl der Fertigungsziele in Grenzen, doch hinter dem Ziel "Prozessor" stecken viele Aufgaben, die gelöst sein wollen, was sich in der wesentlich größeren Zahl an Lernzielen ausdrückt: Zunächst einmal gilt es für die Projektteilnehmer, eine Spezifikation ihres Prozessors abzufassen. Dabei wird sicherlich die Erkenntnis vertieft, daß man nur durch stepwise refinement (schrittweise Verfeinerung) der Spezifikation von einem groben Bild in den Köpfen zu einer technischen Beschreibung kommt, die eine große Zahl von Vorgaben, wie z.B. Protokolle auf den Leitungen, einhält. Schon frühzeitig wird man ausreichendes Wissen über die Realisierung des Steuerwerkes als state machine (Unterschied Moore-/Mealy-Automat) oder per Mikrocode erwerben müssen, um sich für eine Variante zu entscheiden. Viel mehr Entscheidungen stehen bei der Festlegung der Kommandos an, die der zukünftige Prozessor verstehen und abarbeiten soll; grundsätzlich gibt es keine Vorgaben für den Befehlssatz, doch sollte den Teilnehmern durch Vorträge im Plenum über allgemeinen Aufbau und Familien von Prozessoren sowie die FPGA-Technologie klar werden, daß ihnen nur recht begrenzte Kapazitäten auf dem Chip zur Verfügung stehen und zudem nicht jeder Befehl für einen Demonstrationsrechner notwendig ist - ein Multiplikationsbefehl z.B. kann durch ein einfaches Programm auf Basis der Addition ersetzt werden. Manche Befehle lassen sich auch durch die konkrete Ausgestaltung des MPB vermeiden; In-/Out-Instruktionen beispielsweise sind überflüssig, weil Peripherie-Geräte in den Speicher eingeblendet werden, so daß die üblichen Lese- und Schreibbefehle ausreichen. Oftmals läuft die Entscheidung für oder gegen einen Befehlssatz auf die Frage "CISC oder RISC?" hinaus. Weil diese Frage nur in sehr konkreten Fällen allein durch technische Notwendigkeiten beantwortet werden kann, sie somit zu einem guten Teil ideologisch, mit anderen Worten "aus dem Bauch heraus" entschieden wird, wird schnell klar, daß, zumindest für manche Teilnehmer, auch das Erhalten der Arbeitsfähigkeit der Gruppe durch Beschränkung auf die Sachfragen zum Lernstoff gehört. Wegen der Fülle der anstehenden Aufgaben (Spezifikation, Entwurf von Operationswerk und Steuerwerk, Programmierung eines Assemblers, Einarbeitung in die Hardwarebeschreibungssprache AHDL und den zugehörigen "logic synthesizer" Max+plus II, Umsetzen der Entwürfe in AHDL, intensives Austesten auf mehreren Ebenen, Schreiben einfacher Programme, eventuell Anschluß eines Terminals) ist es sinnvoll, den Begriff teamwork so zu verstehen, daß teams zusammenarbeiten, die die einzelnen Aufgaben erledigen. Das Aufteilen des Gesamtprojektes in Teile ist bei dem vorliegenden Beispiel noch recht simpel, schwieriger wird das Zusammenfügen der Ergebnisse, besonders, wenn man nebenbei das Ziel verfolgt, allen Gruppenmitgliedern das Verständnis der Gesamtarbeit zu ermöglichen, also zu starke Arbeitsteilung zu vermeiden. Sofern die Gruppe sich nicht dafür entscheidet, die Spezifikationsarbeit zu Beginn so weit wie möglich zu erledigen, wird sie feststellen, wie wichtig es ist, allen Arbeitsgruppen den jeweils aktuellen Stand mitzuteilen.

Kommen wir zurück zu den Lernzielen, die spezifisch für die technische Seite des Studienganges Informatik sind: Eine "solide Vertiefung" des Verfügungswissens erfolgt zu Beginn des Projektes für alle Teilnehmer durch Vorträge im Plenum. Nach der Spezifikationsphase folgt die der Realisierung mit einem konkreten Software-Instrument auf einer konkreten Hardware-Plattform, wobei der Entwurf folgende Stufen durchläuft:

  1. Abfassen einer Struktur- und/oder Verhaltensbeschreibung in AHDL, basierend auf dem Rahmendesign democom.tdf. Dieses gibt die Ein- und Ausgänge des Prozessors vor – zur Erinnerung und damit einheitliche Namen verwendet werden, mit denen wiederum erst eine stets gleiche Zuweisung der Signale an die Pins des Prozessor-FPGAs möglich ist. Außerdem treibt es die Ausgänge mit Stan-dardwerten (AHDL fordert eine Wertzuweisung an alle als Ausgang deklarierten Signale). Weil nun alle Prozessorbeschreibungen nach außen hin gleich aussehen, kann eine jede genau einmal in dem Design altera1500.tdf instanziiert werden. Dieses modelliert das ganze Prozessor-FPGA und gewährleistet nicht nur ein stets gleiches Pin-Layout, sondern auch, daß alle Prozessoren auf Anforderung die Busse freigeben. Da bei falschem Beschalten eines Pins oder Gegeneinandertreiben von ICs die Zerstörung der Hardware droht und alle Prozessoren diese Gefahren auf die gleiche Art vermeiden müssen, war es besser, hier sicher zu gehen und den Gruppen unnötige Arbeit abzunehmen.
  2. Überprüfen der Syntax des gruppenspezifischen altera1500.tdf und Erzeugen einer Programmierdatei für ein FLEX8000-FPGA, Modell EPF 81500 mit Max+plus II. Die Einarbeitungszeit in Max+plus II dürfte dabei kurz, die Suche nach Syntaxfehlern mit Hilfe der Fehlermeldungen kann u.U. recht lang sein.
  3. Überprüfen der Semantik durch Simulation im Rechner. Die Simulation ist nicht nur notwendig, weil die Versuchsumgebung MPB nur einmal vorhanden ist, sondern entspricht dem üblichen Vorgehen beim Hardware-Entwurf. Noch größere integrierte Schaltungen werden nämlich mit Techniken erstellt, die einen Zeitraum von mehreren Wochen zwischen Erzeugen der Maskendateien und Auslieferung der nach diesen gefertigten Chips hervorrufen. Außerdem kann zwar das MPB als eine recht sichere Umgebung gelten, die durch Fehler in der Prozessorbeschreibung kaum geschädigt werden kann, jedoch wird man im allgemeinen erst nicht-elektrisch testen. Sobald man von der Idee des einfachen trial and error Abschied genommen hat, wird man an den Workstations durch mächtige Softwarewerkzeuge belohnt, die das Aufzeichnen und die grafische Darstellung beliebig vieler Signale ermöglichen. An den Eingängen kann das virtuelle Prozessor-FPGA komplexe, über die Zeit wechselnde Stimuli erhalten. In seiner Testumgebung im Rechner kann es auch mit anderen Designs, z.B. dem am Arbeitsbereich vorhandenen SRAM-Simulator zusammengeschaltet werden. Genaugenommen verläuft diese Simulation in zwei Stufen: Zunächst einmal wird man, schon wegen des wesentlich geringeren Rechenaufwandes, eine reine Verhaltenssimulation des Prozessors durchführen, welche noch ohne jeden Bezug zur Hardware ist und somit frei von Laufzeiteffekten wie Hazards. Dann wird man aus der AHDL-Beschreibung eine Programmierdatei für den speziellen Typ von FPGA generieren lassen. Diese ist eine reine Strukturbeschreibung, d.h. eventuell vorhandene hochsprachliche Konstrukte sind in Logik umgesetzt worden und es ist entschieden worden, wie diese auf dem FPGA verteilt wird. Dabei konnten Vorgaben zur Optimierung auf Fläche oder Zeit gemacht werden. Auch ist über den Einsatz anderer Ressourcen wie Flipflops, Bustreiber und Verdrahtungsmöglichkeiten entschieden worden. Mit dem in Bibliotheken vorhandenen Wissen über Signallauf- und Schaltzeiten auf dem FPGA kann dieses nun sehr wirklichkeitsnah simuliert werden.
  4. Eine durch diese vorbereitenden Tests verifizierte Programmdatei kann schließlich in das Prozessor-FPGA geschrieben werden. Die vorangegangene Simulation der Strukturbeschreibung ist in der Tat so präzise, daß schwerwiegende Fehler ausbleiben sollten. Allerdings bietet erst der reale Aufbau die notwendige Geschwindigkeit, um ganze Programme zu testen, und viele Fragen bezüglich des Zusammenspiels mit dem restlichen MPB stellen sich erst jetzt, schließlich wird der Prozessor jetzt von externen Komponenten nicht mehr mit "klinisch reinen" Signalen, die sich verhalten wie gewünscht, versorgt. Es können nun Demonstrationsprogramme überprüft werden.

Diese Aufzählung der Entwurfsstufen ist keinesfalls so zu verstehen, daß jede Stufe nur einmal und alle nacheinander durchlaufen werden. Überall wo es sinnvoll ist, kann zu einer früheren Stufe zurückgekehrt werden, etwa stets zu 1., wenn ein Fehler im AHDL-Kode erkannt wurde. Selbstverständlich kann auch parallel gearbeitet werden: Ein team kann beispielsweise auf den ersten drei Stufen arbeiten, um einen Prozessor mit neuen Fähigkeiten zu versehen, während ein anderes für den schon existierenden Entwurf Programme schreibt und diese unter 4. testet.

Ein letztes, aber sehr wichtiges Lernziel, welches spätestens in der zweiten Hälfte von 3. auftritt, sei abschließend erläutert: das Erkennen und Beherrschen des weiten Feldes von Fehlermöglichkeiten bei Übergang in die physikalische Ebene. Was bedeutet dies? In den vorbereitenden Plenumssitzungen wird bereits auf den "korrekten Umgang mit Zeitbegriffen" (Flanken- oder Pegelsteuerung) hingewiesen, sowie auf "drohende Taktimpulsverschiebungen"; Hazards sollten aus dem B-Vorlesungszyklus bekannt sein. Dennoch wird den meisten Projektteilnehmern das Gewicht dieser möglichen Gründe für das Abweichen ihres Prozessors von seiner Beschreibung erst dann bewußt, wenn eben die Strukturbeschreibung oder der reale Prozessor an einem (Teil-)Befehl scheitern, den die Verhaltensbeschreibung perfekt ausführt. Daraufhin sollten sie ihre Hardwarebeschreibungen nach folgenden Schwächen durchsuchen und die genannten "Gegenmittel" erlernen und anwenden:

1.2 Aufbau des Mikroprozessorboards (MPB)

Wie auf der Abbildung zu erkennen ist, erfolgte der Aufbau des MPB auf einer Lochrasterplatine. Bei rund 1000 notwendigen Leitungen hätte nur eine aufwendige Multilayer-Platine (fünf bis sechs Verdrahtungsebenen; siehe auch Kap. 2.4.5 Unerfüllte Wünsche) den Anforderungen entsprochen, so daß die Verdrahtung vollständig mit Wrap-Drähten erfolgte.

Sehr gut zu erkennen sind die beiden Altera FPGA-Bausteine - der etwas größere 280polige EPF 81500 für den Prozessor oben, der 232polige EPF 81188 für das Hilfs-FPGA unten. Rechts neben den beiden befinden sich das 20x2-Zeichen-Display und die 20 Tasten der "Hex"-Tastatur.

Eine Reihe von ICs im klassischen DIL-Gehäuse erstreckt sich über Prozessor und Display über die ganze Breite des Mikroprozessorboards; dies sind von links nach rechts: Mikrocode-RAM (fünf ICs), SRAM (zwei ICs), EPROM (zwei ICs, unbestückt), paralleler Schnittstellenbaustein PIO 8255, serieller Schnittstellenbaustein UART 2681. Zwischen Mikrocode- und SRAM ebenso wie an der linken Seite des Prozessors befinden sich senkrechte Reihen aus roten Leuchtdioden, einmal zur Anzeige von Steuersignalen, einmal zur freien Verwendung durch den Prozessor.

Ebenfalls deutlich sichtbar sind die neunpoligen Anschlüsse für zwei serielle RS232-Schnittstellen rechts oben (zum Anschluß von Terminals). Dunkle waagerechte und senkrechte Linien sind Pull Up- und Pull Down-Widerstände, die die Busse auf definierte Logik-Pegel bringen.

1.2.1 Aufzählung aller Bauteile

Das Blockschaltbild 3.1.1 zeigt die wesentlichen Einheiten auf dem Mikroprozessorboard und ihre Verbindungen. Aus der Detailansicht 3.1.2 sind sämtliche ICs und elektrischen Bauteile mit ihren (Sockel-)Bezeichnungen ersichtlich; diese umfassen:

Nur aus 3.1.1 gehen einige der notwendigen Leitungen zwischen den Bauteilen hervor; diese umfassen unter anderem:

1.2.2 Bauteile im Detail

Die meisten Komponenten aus obiger Auflistung erklären sich selbst, insbesondere die "Pfennigbauteile". Auf einige komplexere sei aber doch noch näher eingegangen, um zu erläutern, welche Aufgaben aus der Fülle der denkbaren diese auf welche Art erfüllen:

Das Mikrocode-RAM für auf Mikrocode basierende Prozessor-Entwürfe (im Gegensatz zu solchen, die komplexe endliche Automaten realisieren) ist nicht mit Adreß- und Datenbus verbunden, sondern "hängt" direkt am Prozessor, welcher es ja auch benutzen soll.

Um dieses RAM vom Hilfs-FPGA aus zu beschreiben, muß ein besonderer "Prozessor" in das 81500-FPGA geladen werden, das sogenannte Mikrocodeladedesign. Diese Logik reicht address und databus, sowie m_oe und m_we an das Mikrocode-RAM durch und erzeugt passende Chip Select-Signale. Zur Aufteilung des globalen Adreßraumes und zu erforderlichen Sicherheitsmaßnahmen siehe Kap. 2.3.1.7 Die Chipselect-Logik.

Die EPROM-Bausteine für den Prozessor sollen einmal unveränderliche Routinen in der Maschinensprache des jeweiligen Entwurfes enthalten (bzw. Code für unterschiedliche Entwürfe an verschiedenen Adressen), also z.B. ein rudimentäres Betriebssystem und Diagnoseprogramme. Demgegenüber soll der Nur-Lese-Speicher an der Seite des Hilfs-FPGAs dessen Konfigurationsdaten enthalten, um einen Einplatinenbetrieb zu ermöglichen. Durch Umstecken von J8 kann das Hilfs-FPGA dann von der sogenannten passiven seriellen auf die aktive serielle Konfiguration umgestellt werden, in der es selbsttätig Adressen im richtigen Zeittakt für diese Konfigurations-EPROMs generiert.

Der parallele Schnittstellenbaustein ist der gleiche, wie der für das PC-Interface verwendete, welcher auf einer ISA-Steckkarte im PC sitzt. Siehe Erläuterung der Jumper weiter unten.

Der serielle Schnittstellenbaustein UART 2681 ist ein Standardbauteil, um bit-seriell und asynchron zu kommunizieren, also die aus der Datenfernübertragung bekannten "Pakete" aus Startbit(s), fünf bis acht Datenbits (eventuell mit Paritätsbit) und Stopbit(s) über einen einzigen Kanal zu senden bzw. von dort zu empfangen und auf die reinen Datenbits zu reduzieren. Mit seiner Hilfe können die Projektteilnehmer zwei VT200-kompatible Terminals ansteuern und so ihren Prozessor mit den üblichen Peripheriegeräten Tastatur und Bildschirm verbinden.

Die Leuchtdiodenreihe LED1 ist direkt mit dem Prozessor verbunden und in dessen Top Level-Design altera1500.tdf als 16 Ausgänge definiert. Die Entwerfer einer CPU können also z.B. zum Debugging die LEDs gezielt aufleuchten lassen. Die Leuchtdiodenreihe LED2 hingegen ist fest mit einigen Steuersignalen verbunden, und zwar von oben nach unten: m_halt, m_halt_ack, bus_grant_n , bus_ack_n , irq_n[1], irq_n[0], m_astrobe, dstrobe_n, m_we, m_oe (Signale, die auch am Hilfs-FPGA auftauchen, sind mit dessen Namen aufgeführt, andere Namen stammen aus altera1500.tdf).

Die Jumper J0 bis J7 sind direkt mit dem Prozessor verbunden und in dessen Top Level-Design altera1500.tdf als 8 Eingänge definiert. Damit können Entwerfer einer CPU extern den Programmverlauf steuern oder unter verschiedenen Konfigurationen auswählen. Die Jumper J8 bis J11 haben folgende Aufgaben:

Ein weiteres FPGA, Modell EPM 610, ersetzt einen vorher an gleicher Stelle vorhandenen TTL-Baustein mit vier NOR-Gattern und stellt zusätzlich einen Tristate-Treiber zur Verfügung. Letzterer wurde notwendig, als mehr als vier Signale aus dem Hilfs-FPGA über Tristate-Charakteristik verfügen mußten - der FLEX8000 EPF 81188 besitzt nämlich nur vier globale Output Enable-Leitungen. Glücklicherweise blieb den Projektteilnehmern eine ähnliche Ressourcenknappheit erspart - der FLEX8000 81500 besitzt zehn solche Leitungen.


Nächster AbschnittInhaltsverzeichnis