Digitale Elektronik 2 Hirarchisches Design und Programmierbare Logik Dr. T.J.H. Kluter A. Habegger March 7, 2012 Contents 1 Hierarchisches Design 1.1 Der Divide and Conquer Ansatz . . . . . . . . . . . . . . . . . . . . . . . 1.2 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Zusammenfassende Übungsaufgabe . . . . . . . . . . . . . . . . . . . . . 2 Programmierbare Logik 2.1 Programmierbares Logik Array . . . . 2.2 Gate Array Logic . . . . . . . . . . . 2.3 Programmable Logic Device . . . . . 2.4 Complex Programmable Logic Device 2.5 Field Programmable Gate Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 3 5 5 8 10 13 14 1 Hierarchisches Design Dieses Kapitel beschreibt die Methodik ein Problem in kleinere Teilprobleme zu unterteilen bis man zu einen Abstraktionslevel gelangt, auf welchem die Teilprobleme verständlich und einfach lösbar sind. Diese Methodik wir pragmatisch divide and conquer (teilen und herrschen) Methode genannt. Sie umschreibt ein reduktionistischen Lösungsansatz, welcher nicht nur beim Entwickeln moderner digitaler Schaltungen (HW-Design) verwendet werden kann sondern auch für andere Problemstellungen in den angewandten Ingenieurdisziplinen. 1.1 Der Divide and Conquer Ansatz Bei einem “teile und herrsche”-Ansatz wird das eigentliche “grosse” Problem solange in kleinere und viel einfachere Teilprobleme zerlegt, bis man diese problemlos lösen, daher beherrschen, kann (siehe Abbildung 1.1). Das initiale Problem kann auch als Puzzle und die Teilprobleme, welche wir lösen können, als die einzelne Puzzle Teile bezeichnet werden. Die erste Phase des “teile und herrsche”-Ansatzes ist ein klassisches Top Down Design. Nach der Identifizierung aller Puzzle Teile folgt eine zweite Phase, in welcher die einzelnen Teile zusammen gefügt werden, um die Aufgabestellung schlussendlich zu lösen (Buttom Up). Unglücklicherweise müssen die einzelnen Puzzle Teile miteinander Kommunizieren. Die Kommunikation muss während der ersten Phase des “teile und herrsche”-Ansatzes identifiziert und festgelegt werden. 1.2 Kommunikation Die Kommunikation kann in zwei Hauptgruppen unterteilt werden: • Die erste Gruppe repräsentiert Datenoperationen. Diese Daten können durch e.g. Ganzzahlwerte repräsentiert werden und die dazugehörigen Oparande sind zum Beispiel Additions-, Multiplikations-Einheiten usw. Eine solche Kommunikationseinheit wird oft auch als Daten-Pfad bezeichnet. 1 Hierarchisches Design Big Problem P1 L1 P2 L2 L3 Root Phase 1: Top Down P3 L4 L5 Phase 2: Bottom Up Leaves Figure 1.1: Der “teile und herrsche”-Ansatz: Die Aufgabestellung (Puzzle) wir in einer ersten Phase (Top Down) in kleinere Teile unterteilt, welche einfach, verständlich und lösbar sind (Puzzle Teile). In einer zweiten Phase (Bottom Up) werden alle Teile zusammen gefügt, um das initiale grosse Problem zu lösen. • Die zweite Gruppe repräsentiert Kontrolloperationen. Diese Gruppe definiert, ob zum Beispiel eine Leuchte eingeschaltet wird, eine gewisse Datenoperation ausgeführt werden muss usw. Die zweite Gruppe wird oft als Kontroll-Pfad bezeichnet. In diesem Kurs wird die zweite Gruppe – der Kontroll-Pfad – vorwiegend behandelt. Der Kontroll-Pfad kann in zwei Kommunikationsablauf-Modelle unterteilt werden: 1. Master-Slave. Bei der Master-Slave-Kommunikation wird durch den Master eingeleitet, ob und wann der Slave eine bestimmte Aktion ausführen muss. Man kann auch sagen, dass der Slave durch den Master angestossen (gekickt) wird. Die einfachste Master-Slave-Kommunikation wird durch ein enable Signal umgesetzt. Das enable Signal ist aktiv wenn der Slave eine bestimmte Aufgabe zu erledigen hat und inaktiv wenn er warten muss. 2. Master-Master, Slave-Slave, or Slave-Master. Bei diesen Kommunikationsarten fragt der Eine Kommunikationspartner den Anderen, ob es in Ordnung sei, wenn er eine bestimmte Aktion ausführe. Dieser Anfrageprozess wird durch ein request Signal eingeleitet. Nach erfolgter Anfrage wird diese durch den anderen Partner entweder angenommen durch aktivieren des acknowledge Signals oder abgelehnt durchs aktivieren des nack Signals. Diese Mehrsignal-Kommunikation wird auch oft als handshaking bezeichnet. 2 Zusammenfassende Übungsaufgabe In praxisnahen Designs ist die Kommunikation meist um ein vielfaches komplexer und in sogenannten Protokollen spezifiziert. Ein Protokoll ist nichts anderes als eine standardisierte Formulierung, wie der Kommunikationsprozess abzulaufen hat und wie sich welcher Partner in welchem Fall verhalten muss. 1.3 Zusammenfassende Übungsaufgabe Um die gelernte Methode (“teilen und herrschen”) zusammen mit der MasterSlave Kommunikation zu festigen, soll ein Blinklicht entwickelt werden. Das Blinklicht hat eine Referenzfrequenz von 500 Hz. Die Blinkfrequenz soll jedoch nur 1 Hz sein mit den Ein- und Aus-Phasen von je 0.5 Sekunden. 3 2 Programmierbare Logik Programmierbare Logik ist eine Unterklasse der ASICs, welche es erlaubt Logik anhand von Funktionen zu beschreiben ohne einzelne Transistoren zu spezifizieren und zu implementieren. Einfach gesagt, abstrahiert die programmierbare Logik das digitale Schaltungsdesign auf das Level der funktionalen Beschreibung. Man kann dies Abstraktion mit der Verwendung von Assembly anstelle der Maschinensprache bei der Programmierung eines Mikrocontrollers vergleichen. 2.1 Programmierbares Logik Array Das erste Element in dieser Gruppe ist wohl die Programmable Array Logic (PAL). Die Architektur eines PAL basiert auf der Tatsache, dass jede logische Funktion durch die Form Sum of Product repräsentiert werden kann, e.g., Y = A·B+A·B. Daher beinhaltet die PAL Architektur ein Array von AND-Operatoren gefolgt von einem Array aus OR-Operatoren. Um nun jede erdenkliche logische Funktion zu realisieren, werden die Eingänge und jeweils ihr Invers durch “Sicherungen” (trennbare Verbindungen) mit einem AND-Operator verbunden. Der Aufbau der PAL kann anhand der Grafik 2.1 studiert werden. Um eine logische Funktion in ein PAL zu programmieren, müssen unerwünschte und daher überflüssige Verbindungen getrennt werden. Das Trennen wird durch anlegen einer zu hohen Spannung 12V-21V an unerwünschten Verbindungsstellen im “Sicherungs” -Netzwerk realisiert, worauf die Verbindung durchschmilzt und dauerhaft getrennt wird. Weil dieser Prozess irreversible ist, nennt man ein PAL auch ein One-Time-Programmable (OTP) Baustein. Ein Beispiel eines programmierten PALs ist in der Grafik 2.2 dargestellt. Eine spezielle Situation für ein PAL ist anhand der Grafik 2.1 aufgezeigt. Wir nehmen an, dass wir die XOR Funktion implementieren möchten: Y = A · B + A · B. Diese Funktion verwendet nur zwei AND-Operationen, jedoch beinhalten die Makro-Zellen in Grafik 2.1 vier AND-Operationen. Man könnte nun sagen, dass man diese Funktion somit nicht umsetzen könnte. Damit dies trotz dieser Tatsache möglich ist muss unsere Funktion wie folgt angepasst werden: 5 Programmierbare Logik Programmable fuses AND−Array OR−Array To other macro−cells Macro−cell VCC VCC VCC VCC Inputs A B C D VCC VCC X VCC Output Output Y VCC Figure 2.1: Aufbau der PAL Zelle. Jeder Ausgang wird durch eine Makro-Zelle generiert. Eine Makro-Zelle besteht aus einem “Sicherungs”-Netzwerk, AND-Operanden und OROperanden. 6 Programmierbares Logik Array To other macro−cells VCC VCC VCC VCC Inputs A B C D VCC VCC X VCC Output Output Y VCC Figure 2.2: Logik Funktionen werden durch den irreversiblen Prozess – durchschmelzen unerwünschter Verbindungen – in einem PAL dauerhaft gespeichert. Frage: Welche logische Funktion ist in diesem programmierten PAL enthalten? 7 Programmierbare Logik Y = A · B + A · B + A · A + A · A = A · B + A · B + 0 + 0. Der grosse Vorteil eins PALs ist die Tatsache, dass die Verzögerung irgend eines Eingangs (A, B, C, D, ...) zu irgend einem Ausgang (X, Y, ...) fix ist und durch tio charakterisiert wird. Die Vor- und Nachteile des PALs sind in der Tabelle 2.1 zusammengefasst dargestellt. Vorteil Sparsam puncto Energieverbrauch Fixe In-nach-Out Verzögerung(tio) Alle kombinierbaren Logikfunktionen Nicht-Flüchtig Nachteil One-Time-Programmable (OTP) Nur kombinatorische Logik möglich Anzahl der Makro-Zellen ist limitiert Table 2.1: Vor- und Nachteile der PAL Architektur. 2.2 Gate Array Logic Um den grössten Nachteil des PALs, die One-Time-Programmability (OTP), zu eliminieren hat Lattice Semiconductors die Gate Array Logic (GAL)-Architektur entwickelt. Der grösste Unterschied zischen GAL und PAL besteht in der Art und Weise, wie das Sicherungs-Netzwerk realisiert wurde (siehe Grafik 2.1). Bei der GAL Architektur sind die Sicherungen durch Floating Gate Transistors (FGMOS), siehe Grafik 2.3, ersetzt worden. Die FGMOS Zelle, dargestellt in der obersten Zeichnung der Grafik 2.4, ist ein Speicherelement, welches die Ladung auf seinem isolierten Floating-Gate Floating Gate Transistor Figure 2.3: Bei den GALs sind die vorher eingeführten “Sicherungen” durch “Floating Gate Transistors” ersetzt worden und machen dadurch GALs In-System-Programmable (ISP). 8 Gate Array Logic speichert. Die Ladung auf dem Floating-Gate verbleibt für etwa 10-20 Jahre. Die Funktionsweise eines FGMOS kann anhand der Prozesstrennung in Programmierund Betriebs-Modus erklärt werden. Im Programmiermodus werden das Kontroll-Gate und das Bulk verwendet, um das Floating-Gate zu Laden oder Entladen. Dies ist unten Links in Grafik 2.4 dargestellt. Im Betriebsmodus belässt man das Kontroll-Gate in unverbundenem (floatendem) Zustand, wobei der Ladungszustand auf dem floating-Gate den Funktionsmodus des FGMOS festlegt. Wenn das Floating-Gate geladen ist, wird ein N-Kanal zwischen Source und Drain in der FGMOS Zelle gebildet, wodurch der Strom zwischen Drain und Source fliessen kann. Man kann auch sagen, dass das FGMOS als Kurzschluss in der Source-Drain Strecke agiert. Wenn nun das Floating-Gate ungeladen ist, wird die Source vom Drain isoliert. In diesem Betriebsmodus agiert die FGMOS Zelle als ein Unterbruch in der Source-Drain Strecke. Beide Modi sind rechts unten in der Grafik 2.4 dargestellt. Aufgrund physikalischer Effekte können FGMOS Zellen nur rund 10’000 mal programmiert und/oder gelöscht werden. Nach dem erreichen der maximalen Programmier- und Löschzyklen kann ein Kurzschluss zwischen dem FloatingGate und dem Gate/Bulk entstehen. Weil man FGMOS Zellen elektrisch programmieren und löschen kann, hat man zusätzlich die Möglichkeit System nachträglich (im Betrieb) zu verändern. Dies nennt man auch die Fähigkeit der In-System-Programmability (ISP). Für den ISP Betrieb werden GAL Bausteine mit einer sogenannten ISP-Logik erweitert. Ein rundum Überblick ist anhand der Grafik 2.5 gegeben. Die Vor- und Nachteile von GALs sind in der Tabelle 2.2 zusammengefasst dargestellt. Vorteile Geringer Energieverbrauch Fixe In-nach-Out Verzögerung (tio ) Jegliche kombinatorischen Funktionen Nicht-flüchtig In-System-Programmable (ISP) Nachteile Informationsbestehen zirka 10-20 J Nur kombinatorische Logik Limitierte Anzahl von Makrozellen Nur etwa 10’000 Programmierzyklen Table 2.2: Überblick zu den Vor- und Nachteilen der GAL. 9 Programmierbare Logik Control Gate Source Drain Isolation n+ n+ p−bulk Bulk Floating Gate Programming: Normal Operation: The charged floating gate creates a n−channel between Source and Drain hence a "short−circuit" Electrons are tunneled from floating gate + 12V n+ SET: n+ n+ p−bulk − n+ p−bulk There is no charge on any of the gates; therefore, there is an isolation between Source and Drain Electrons are tunneled toward floating gate − 12V n+ + n+ ERASE: p−bulk n+ n+ p−bulk Figure 2.4: Vereinfachter Programmier- und Löschvorgang von Floating Gate Transistoren. 2.3 Programmable Logic Device Der gemeinsame Hauptnachteil der GAL und PAL Strukturen ist die Eigenschaft, dass nur Funktionen aus kombinatorischer Logik implementiert werden können. Um Beispielsweise einen endlichen Zustandsautomaten zu implementieren, müssen noch externe Komponenten einbezogen werden, damit man die sequenzielle Logikfunktion realisieren kann. Dies führte zum Verlangen und daher zur Entwicklung der Programmable Logic Devices (PLDs). Bei den PLDs sind die Makrozellen durch ein Speicherelement erweitert – einem D-Type FlipFlop 10 Programmable Logic Device VCC In System Programming Logic To other macro−cells VCC Inputs A B C D VCC VCC VCC VCC Y VCC Output Output X VCC Figure 2.5: Das GAL bietet die gleichen Möglichkeiten wie ein PAL, ausser dass es noch flexibler in der Verwendung ist, was durch das Feature der In-System-Programmability (ISP) erzielt wird. 11 Programmierbare Logik (D-FF). Um beides, kombinatorische und sequenzielle Logik implementieren zu können kann der Ausgang der Makrozellen entweder mit dem Ausgang des ORArrays oder demjenigen des D-FF verbunden werden. Dies bedeutet, dass zwei FGMOS Zellen dazwischen geschaltet werden müssen. Damit schlussendlich der angestrebte Zustandsautomat in einem PLD realisiert werden kann, muss der DFF Ausgang zusätzlich zum Eingang – AND-Array – zurückgekoppelt werden. Die PLD Architektur ist in der Grafik 2.6 dargestellt. VCC In System Programming Logic To other macro−cells VCC Inputs A B VCC VCC D Q VCC Output VCC VCC D Q Output Y X VCC C Figure 2.6: Die PLD Architektur fügt Speicher in Form eines D-FlipFolp zur Makrozelle hinzu. Dies ermöglicht nebst der Implementierung von kombinatorischen auch sequenzielle Logikfunktionen, was für Zustandsautomaten unabdingbar ist. Die Vor- und Nachteile von PLDs sind in der Tabelle 2.3 zusammenfassend dargestellt. 12 Complex Programmable Logic Device Vorteile Geringer Energieverbrauch Fixe In-nach-Out Verzögerung(tio) Alle logischen Funktionen möglich Nicht-flüchtig In-System-Programmable (ISP) Nachteile Information bleibt zirka 10-20 J Limitierte Anzahl von Makrozellen Nur ≈ 10’000 Programmierzyklen Table 2.3: Auflistung der Vor- und Nachteile der PLD Architektur. 2.4 Complex Programmable Logic Device Da die Komplexität digitaler Schaltungen stetig wächst, waren die “kleine” PLDs nicht mehr ausreichend. Dies führte dazu, dass ein weiter Typ – eine Abwandlung des PLDs – das Complex Programmable Logic Device (CPLD) entwickelt wurde. Die CPLD Architektur unterscheidet sich von der PLD Struktur in einem entscheidenden Punkt. Die Ein- und Ausgänge werden von den Makrozellen entkoppelt. (Beachte: Bei allen vorangegangenen Architekturen, waren die ICAusgänge direkt mit den Ausgängen der Makrozellen verbunden. In analoger Weise wurde mit den Eingängen der Makrozellen zu den IC-Eingänge verfahren.) Das CPLD bewerkstelligt das Verbinden mit einem Schaltnetzwerk (routing array). Das Schaltnetzwerk verfügt über eine sogenannte cross-bar, welche es ermöglicht jede erdenkliche Verbindung zwischen den Eingängen und Ausgängen zu realisieren. Diese Verbindungen werden durch FGMOS Zellen, wie in der Grafik 2.7 gezeigt wird, ermöglicht. Die Grafik 2.8 visualisiert eine vereinfachtes Blockdiagramm eines CPLDs und in Tabelle 2.4 werden dessen Vor- und Nachteile zusammengefasst. Vorteile Geringer Energieverbrauch Fixe In-nach-Out Verzögerung (tio ) Alle logischen Funktionen sind unterstützt Nicht-flüchtig In-System-Programmable (ISP) Nachteile Daten bleiben für 10-20 J Nur ≈ 10’000 Programmierzyklen Table 2.4: Zusammenfassung der Vor- und Nachteile der CPLD Architektur. 13 Programmierbare Logik 2.5 Field Programmable Gate Array Die Skalierbarkeit von CPLDs ist durch ihr Schaltnetzwerk und der Verzögerung der Verbindungen (read delay) limitiert. Zudem kommt hinzu, dass für gewisse Anwendungen, die maximale Anzahl von Wiederbeschreibzyklen der CPLDs nicht ausreichend sind. Dies war die Motivation eine “flüchtige”-Architektur, die sogenannte Field Programmable Gate Array (FPGA) Architektur, zu entwickeln. Der Aufbau von FPGAs (siehe Grafik 2.9) hat grosse Ähnlichkeit mit derjenigen des CPLDs. Ein offensichtlicher und grosser Unterschied liegt bei den Schaltnetzen, welche bei den FPGAs viel kleiner sind. Zudem wurden die Makrozellen der CPLDs bei der FPGA Architektur durch Look Up Tables (LUTs) ersetzt. Das Aufteilen der Schaltnetze führt zum grossen Vorteil der viel besseren Skalierbarkeit dieser Architektur. Tatsächlich kann die Kombination von Schaltnetzwerk und LUT gleichmässig in die X- und Y-Richtung fortgesetzt werden. Dies führt uns zum Nachteil der FPGA Architektur, welche dadurch die Eigenschaft einer Vorhersehbaren In-nach-Out Verzögerung verliert. Die Verzögerung zwischen Eingang und Ausgang ist abhängig von (1) der Anzahl LUTs, welche für eine logische Operation verwendet wurden und (2) der Anzahl verwendeter Schaltnetzwerke zum Verbinden der einzelnen LUTs. Die Grafik 2.10 visualisiert die Implementation der XOR Funktion in einem FPGA. Wie bereits vorher erwähnt, wird das Verschalten bei einem FPGA durch Schaltnetze realisiert. Diese Schaltnetze sind sehr ähnlich zu denjenigen, welche in den CPLDs verwendet werden. Im Gegensatz zu den CPLDs wird bei den FPGAs keine FGMOS Zelle verwendet, um die Verbindung zu realisieren. Es werden an dessen Stelle “pass-gates”, dargestellt in Grafik 2.11, eingesetzt. Beim CPLD wird die Information über eine Verbindung in Form von Ladung auf dem Floating-Gate der FGMOS Zelle gespeichert. Im Vergleich das FPGA, welches ein flüchtiges Speicherelement – ein D-FF – zur Speicherung dieser Information verwendet (siehe links in Grafik 2.11). Eine Speicherzelle, welche die Information 0 enthält repräsentiert eine Verbindung und ein Wert von 1 bedeutet konsequenterweise ein Unterbruch. Das FPGA hat zwei Modi (1) den Programmiermodus bei welchem die Funktionalität jeder Zelle abgebildet ist – links in Grafik 2.11 dargestellt – und (2) den Betriebsmodus in welchem die programmierte Funktion in der FPGA Struktur ausgeführt wird – in Grafik 2.10 und auf der rechen Seite in Grafik 2.11 dargestellt. Ähnlich zum Schaltnetzwerk weist auch das LUT diesen Programmier- und Betriebsmodus auf, siehe dazu Grafik 2.12. Die Grafik 2.12 zeigt zudem noch 14 Field Programmable Gate Array die Hauptunterschiede zwischen der LUT (FPGA) und der Makrozelle (CPLD). Die Makrozelle basiert auf einer Hardwareimplementation der Sum-Of-Product Form. Die LUT basiert auf einer Hardwareimplementation einer Wahrheitstabelle. Jeder Eintrag in der Wahreitstabelle gehört zu einem Speicherelement im Konfigurationsspeicher, wie in der Grafik 2.13 gezeigt wird. Unter Verwendung des Multiplexers (16-Eingänge) wird ein Eintrag in der Wahrheitstabelle selektiert und auf den Ausgang gelegt. Zudem beinhaltet das LUT auch D-FFs, um eine mögliche Implementation von sequenziellen Funktionen zu realisieren. Man beachte, dass die D-FFs in den LUTs für logische Funktionen verwendet werden können, im Gegensatz zu jenen bei der Konfigurierlogik, die nur zum Speichern der Funktionalität eingesetzt werden. Wen man den Programmiermodus des FPGAs genauer untersucht erkennt man, dass er am Besten als einziges grosses Schiftregister umschrieben werden kann. Das Schiftregister muss mit der zu konfigurierenden Information geladen werden (man könnte diesen Referenzdatensatz als bit-file bezeichnen), da das FPGA bei einem power off die Informationen wieder verliert. Dieses laden der Konfigurationen benötigt eine gewisse Zeit Tconf . Während der Konfiguration ist ein aktiver Betriebsmodus ausgeschlossen. Nach der Konfigurierung ist das FPGA bereit logische Funktionen auszuführen. Zusammenfassend werden die Vor-und Nachteile der FPGA Technologie in der Tabelle 2.5 visualisiert. Vorteile Während dem Betrieb re-programmierbar Alle logischen Funktionen sind unterstützt Skalierbare Architektur Nachteile Start-up Zeit grösser Null Tconf Verbraucht deutlich mehr Energie Table 2.5: Eine Auflistung der Vor- und Nachteile von FPGAs 15 Inputs Programmierbare Logik Outputs Figure 2.7: Vereinfachte Darstellung eines Schaltnetzwerks mit 4-Eingängen und 8Ausgängen. Die FGMOS werden verwendet um einen beliebigen Eingang mit einem beliebigen Ausgang zu verbinden. Die Anzahl verwendeter FGMOS Zellen ist das Produkt aus Anzahl Eingängen mit Anzahl der Ausgänge. 16 Field Programmable Gate Array Macro Cell VCC In System Programming Logic Macro Cell Macro Cell Macro Cell Macro Cell Macro Cell VCC D Q Macro Cell Routing Array VCC Macro Cell Macro Cell Macro Cell Macro Cell Macro Cell VCC Figure 2.8: Vereinfachtes Blockschaltbild eines CPLDs. Jede Makrozelle beinhaltet die Logik, welche auf der linken Seite dargestellt ist. Alle Verbindungen werden im programmierbaren Schaltnetzwerk realisiert (siehe Grafik 2.7). 17 Programmierbare Logik Field Programmable Gate Array (FPGA) Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Figure 2.9: Vereinfachtes Blockschaltbild eines FPGAs. Das FPGA basiert auf der Kombination von Schaltnetzwerk und LUT, dieses Strukturelement wird mehrfach repetiert und führt zur Struktur des FPGAs. 18 Field Programmable Gate Array Field Programmable Gate Array (FPGA) Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Routing Array LUT Figure 2.10: Eine XOR Funktion implementiert im FPGA. Die Eingang-nach-Ausgang Verzögerung hängt von (1) der Anzahl verwendeter LUTs und (2) der Anzahl eingesetzter Schaltnetzwerke ab. 19 Programmierbare Logik Configuration Logic (volatile) TDI D Q D Q D Q Routing Array (cross−bar) D Q TCK A TDO V D Q D Q D Q D Q B W D Q D Q D Q D Q C X D Q D Q D Q D Q D Y Figure 2.11: Vereinfachte Blockschaltbild des Schaltnetzwerks. Das Schaltnetzwerk hat zwei Modi (1) Programmiermodus (links) und (2) Betriebsmodus(rechts). 20 Field Programmable Gate Array Configuration Logic (volatile) TDI D Q D Q D Q Look Up Table (LUT) D Q 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 TCK TDO D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q Y D Q X A B C D clock Figure 2.12: Vereinfachtes Blockdiagramm eines LUT. Das LUT hat zwei Modi, diese sind (1) der Programmier-Modus (links dargestellt) welcher priorisiert ist und (2) der Betriebsmodus (rechts dargestellt), welcher im Betrieb der Schaltung verwendet wird. Look Up Table (LUT) Configuration Logic (volatile) A B C D Y 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 TDI D Q D 0 TCK Q D 0 Q D 1 Q 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 TDO D Q D 1 D Q D Q D D D Q D Q 1 Q 1 D 1 Q 0 Q 0 1 Q 1 D 1 0 D Q Y D Q X Q 0 D Q A B 0 C D clock Figure 2.13: Im LUT wird die Wahrheitstabelle verwendet um Logikfunktionen zu mappen . Jeder Eintrag in der Wahrheitstabelle gehört zu einem Bit in der Konfigurierlogik. Frage: Wie kann eine logische Funktion mit fünf Eingängen realisiertwerden? 21