24
RST-Labor Bericht zum Vortrag FPGA Klaus Bicker (498207233) Carsten Thiele (498214540) 11. September 2001

RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

Embed Size (px)

Citation preview

Page 1: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST-Labor

Bericht zum Vortrag FPGA

Klaus Bicker (498207233)

Carsten Thiele (498214540)

11. September 2001

Page 2: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Inhaltsverzeichnis

1 Einleitung 3

2 Der FPGA-Baustein 3

3 Das XS40 Board 4

4 Aufbau des Xilinx-FPGAs XC4010XL 4

4.1 Der konfigurierbare Logikblock (CLB) . . . . . . . . . . . . . . . . . . . 5

4.2 Die I/O-Blocke (IOB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.3 Die Programmable Switch Matrix (PSM) . . . . . . . . . . . . . . . . . . 8

4.4 Tri-State-Buffer (TBUF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Ubersicht: die FPGA-CPU xr-16 12

5.1 Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.2 Hardwarebedarf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 Struktur des xr-16 13

6.1 Die Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6.2 Der Datenpfad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

7 Instruktionsformate 14

7.1 Register-Typ (rrr) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

7.2 Register-Typ mit”Unterfunktionen“ (rr) . . . . . . . . . . . . . . . . . . 15

7.3 Immediate-Typ (rri) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7.4 Immediate-Typ mit”Unterfunktionen“ (ri) . . . . . . . . . . . . . . . . . 16

7.5 Branch-Typ (br) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

7.6 12-Bit Immediate-Typ (i12) . . . . . . . . . . . . . . . . . . . . . . . . . 17

8 Der Befehlssatz 17

8.1 Nicht implementierte Befehle . . . . . . . . . . . . . . . . . . . . . . . . . 18

8.2 Der”imm“-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

8.3 Load/Store-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

8.4 Weite Sprunge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

8.5 Return-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

9 Der Assembler 20

10 Fazit 22

11 Quellen 23

Klaus Bicker, Carsten Thiele 2/24

Page 3: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

1 Einleitung

Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-

ne Ansatze. Zum einen konnen ASICS verwendet werden, welche eine schnell arbeitende

Losung bieten allerdings nicht flexibel an Systemanderungen anpassbar sind, da die

Schaltung bereits zum Zeitpunkt der Produktion des Chips festgelegt wird. Eine andere

Moglichkeit ist der Einsatz von FPGAs (Field Programmable Gate Array).

Ein FPGA besitz keine festverdrahteten Verbindungen, sondern kann nach Bedarf

frei programmiert werden. Zunachst wird ein FPGA Baustein vorgestellt. Im zweiten

Teil soll dann auf eine Anwendung, die einen Bezug zu dem Rechnerstrukturen Labor

herstellt, vorgestellt werden.

Dabei handelt es sich um die Realisierung einer CPU in einem FPGA-Baustein.

Durch die Große heutiger programmierbarer Bausteine ist es ohne weiteres moglich eine

komplette CPU zusatzlich zu der benotigten digitalen Schaltung mit in einen FPGA-

Baustein einzubringen.

2 Der FPGA-Baustein

Der FPGA der hier vorgestellt werden soll stammt von der Firma Xilinx. Der XC4010XL

ist ein Baustein der XC4000 Reihe. Die Abbildung 1 zeigt die verfugbaren Bausteine

dieser Reihe.

Abbildung 1: Xilinx Produktubersicht

Klaus Bicker, Carsten Thiele 3/24

Page 4: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

3 Das XS40 Board

Der FPGA Baustein wird auf dem Experimentierboard XS40 eingesetzt. Dieses Board

ist in der Hochschule Bremen vorhanden, und kann fur Experimente eingesetzt wer-

den. Neben dem FPGA Baustein verfugt das Board uber einen Mikrocontroller (8031),

zusatzlichen Speicher und eine Siebensegment-Anzeige. Es kann uber einen Parallelport

programmiert werden. Des weiteren ist eine PS/2 Schnittstelle und ein VGA-Port zur

Ansteuerung eines Monitors vorhanden.

Da ein FPGA-Baustein die Konfiguration mit dem Abschalten der Stromversorgung

vergisst, kann auf dem Board ein”Boot“-EEPROM eingesetzt werden.

Wahrend der Entwicklung einer Schaltung ist die Programmierung einfach uber den

Parallelport realisierbar. Abbildung 2 zeigt den Aufbau des XS40 Boards.

Abbildung 2: Aufbau des XS40 Boards

4 Aufbau des Xilinx-FPGAs XC4010XL

Der Aufbau des Xilinx-FPGAs beinhaltet drei wichtige Elemente:

• Konfigurierbare Logikblocke (Configurable Logic Blocks oder CLBs)

• Ein/Ausgabe Blocke (Input/Output Blocks oder IOBs)

• Schalterblocke (Programmable Switch Matrix oder PSM)

Klaus Bicker, Carsten Thiele 4/24

Page 5: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Die CLBs sind matrixformig im FPGA angeordnet. Zwischen den CLBs verlauft ein

Netzwerk von Leitungen, an die die CLBs angeschlossen sind. Die Leitungen konnen in

einer Switch-Matrix variabel miteinander verbunden werden, um mehrere CLBs zu logi-

schen Einheiten zu verschalten. Am Rand der Matrix befinden sich die IOBs. Sie bilden

die Schnittstelle zwischen der externen Beschaltung und den intern benutzten Signalen.

Jeder IOB kann ebenfalls uber die programmierbaren Verbindungsleitungen in der Ma-

trix an die CLBs angeschlossen werden. Mit den programmierbaren Verbindungen steht

dem Anwender ein Hilfsmittel zur Seite, durch das die benotigten Verschaltungen zwi-

schen den CLBs bzw. zwischen den CLBs und den IOBs hergestellt werden konnen. Um

einer einfachen Umprogrammierbarkeit in einem dynamischen Designprozess Rechnung

zu tragen, konnen die PSMs unbeschrankt rekonfiguriert werden. Weiterhin existieren

programmierbare Tri-State-Puffer und einen Oszillator in dem Chip.

4.1 Der konfigurierbare Logikblock (CLB)

Der XC4010XL besitzt 400 CLBs. Diese sind in einer 20x20 Matrix angeordnet. Ein

CLB besitzt zwei Funktionsblocke, die jeweils uber vier Eingange (F1 - F4 und G1 - G4)

verfugen. Diese Funktionsblocke werden durch Look-Up-Tables (LUT) mit einer Große

von 16x1 Bit realisiert. Durch das vom Programmierer vorgegebene Design kann mittels

Logiktabellen jeder der Funktionsblocke ein Ausgangssignal (F’ und G’) generieren. Diese

Signale konnen in einem dritten Funktionsblock, eventuell unter Zuhilfenahme eines

weiteren externen Signals (H1), verknupft werden. Der dritte Funktionsblock besitzt

drei Eingange. Ein Eingang kann aus dem Signal F’ oder einem zusatzlichen externen

Signal H2 bestehen. Der zweite Eingang kann aus dem Signal G’ oder einem externen

Signal H1 bestehen. Das hier erzeugte Ausgangssignal (H’) und die Signale F’ und G’,

sowie das Signal DIN (Data-IN) werden programmierbaren Multiplexern zugefuhrt. Die

erzeugten Signale konnen uber Multiplexer entweder zwei Ausgangs-Flip-Flops mit den

Ausgangen XQ und YQ, oder den Ausgangssignalen X und Y zugewiesen werden. In

der XC4000 Reihe konnen diese LUTs (Funktionsblocke) als RAM konfiguriert werden.

Diese konnen als zwei Speicher mit 16x1 Bit, oder als ein Speicher mit 32x1 verwendet

werden. Hierbei handelt es sich um Singleport-Speicher. Es kann auch ein Dual-Port-

Speicher konfiguriert werden, der das gleichzeitige Lesen und Schreiben von getrennten

Adressen ermoglicht, und zwar als 16x1 Bit Speicher. Die Abbildung 3 zeigt die fur die

einzelnen Ausgange in Frage kommenden Signale. Die Abbildung 4 zeigt ein vereinfachtes

Blockschaltbild eines CLBs.

Die Flip-Flops im CLB sind asynchron setz- oder rucksetzbar. Ein CLB besitzt 4

Ausgange (2 Flip-Flop- und 2 kombinatorische Ausgange). Die CLB-Ein- und Ausgange

Klaus Bicker, Carsten Thiele 5/24

Page 6: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Abbildung 3: Mogliche Konfigurationen der CLB-Ausgange

Abbildung 4: Blockschaltbild eines CLB

sind zur Verbesserung der Routingmoglichkeiten symmetrisch auf allen 4 Blockseiten

verteilt.

Das Ausgangs-Flip-Flop ist vielseitig konfigurierbar, so dass es zum Beispiel flanken-

gesteuert arbeiten, oder als Latch eingesetzt werden kann. Auch Clock-,Enable- und Set-

bzw. Reset-Signale konnen genutzt werden.

Die Funktion, die im jeweiligen Funktionsgenerator realisiert wird, wird mit der ent-

Klaus Bicker, Carsten Thiele 6/24

Page 7: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

sprechenden Auswahl der Eingangsquellen bei der Konfiguration des FPGAs festgelegt

und wahrend des Betriebs in statischen RAM-Zellen gespeichert.

4.2 Die I/O-Blocke (IOB)

Zu jedem externen Ein- und Ausgang des FPGAs existiert ein IOB (Input / Output

Block), uber den interne Signale nach außen, sowie externe Signale nach innen gelangen

konnen. Der XC4010XL verfugt uber 160 IOBs. Jeder IOB lasst sich individuell kon-

figurieren. Neben unidirektionalen Datenpfaden konnen auch bidirektionale realisiert

werden. Dadurch ist eine einfache Implementierung von Datenbussen moglich. Außer-

dem konnen Pull-Up- oder Pull-down-Widerstande, sowie Tri-State-Buffer zum Trennen

der Ein- bzw. Ausgange vom Bus implementiert werden. Ferner enthalt jeder IOB ein

Eingangs- und ein Ausgangs-Flip-Flop. Ausgangssignale konnen direkt ausgegeben oder

zwischengespeichert werden. Ebenso ist es moglich das auszugebende Signal zu invertie-

ren. Die Abbildung 5 stellt einen IOB schematisch dar.

Abbildung 5: Blockschaltbild eines IOB

Klaus Bicker, Carsten Thiele 7/24

Page 8: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

4.3 Die Programmable Switch Matrix (PSM)

Die CLBs sind auf allen Seiten von Verbindungsleitungen umgeben. So werden hoch

variable und kurze Verbindungsstrukturen ermoglicht. Das Verbindungsnetzwerk be-

steht aus unterschiedlich langen Leitungen, die dann in den Schalterblocken (PSM -

Programmable Switch Matrix) miteinander verknupft werden konnen. Dies geschieht

uber sogenannte 6-Wege-Transistoren. Sie stellen die Verbindungen zwischen den ein-

zelnen Leitungen her. Es konnen dabei an einem Knotenpunkt mehrere Verbindungen

gleichzeitig geroutet werden. Die Abbildung 6 zeigt einen Ausschnitt einer solchen Ver-

bindungsmatrix. Insgesamt stehen 45 Leitungen vertikal und 32 Leitungen horizontal

pro CLB zur Verfugung. Diese teilen sich in folgende Kategorien auf:

• Single-Length-Line: Verbindungen zwischen benachbarten PSMs; 8 vertikal, 8 ho-

rizontal

• Double-Length-Line: Verbindungen zur ubernachsten PSM; 4 vertikal, 4 horizontal

• Quad-Length-Line: Vierfach lange Verbindungen zwischen PSMs; 12 vertikal, 12

horizontal

• Longline: Verbindungen entlang einer kompletten Matrixzeile oder Matrixspalte;

10 vertikal, 6 horizontal

• Direct-Connect: direkte Verbindungen zweier angrenzender CLBs; 2 vertikal, 2

horizontal

• Global: Verbindungsnetze uber das ganze FPGA, z.B. fur Takte; 8 vertikal

• Carry-Logic: direkte Verbindungen zwischen Funktionsgeneratoren benachbarter

CLB, z.B. fur die Implementierung von Addierern; 1 vertikal

Die Single-Length-Lines bieten dabei das flexibelste und schnellste Routing zwischen

den angeschlossenen PSMs. Sie sind allerdings nur fur kurze Strecken geeignet, da die

Verzogerungszeit mit jeder durchlaufenen PSM zunimmt. Ublicherweise werden sie fur

die direkte Verbindung zweier benachbarter PSMs eingesetzt. Mit den Double-Length-

Lines konnen schon etwas großere Strecken Verbunden werden, da sie nur durch jede

zweite Switching-Matrix verlaufen. Dadurch werden zwar Verzogerungszeiten minimiert

aber auch die Flexibilitat beim Routing nimmt ab. Die Abbildung 7 zeigt die Verbindung

von PSMs uber Single- und Double-Length-Lines. Die Quad-Lenght-Lines sind vier mal

so lang wie eine Single-Length-Line. Des weiteren existieren Longlines. Sie verlaufen ver-

tikal und horizontal uber die gesamte Lange des Arrays. Sie sind fur zeitkritische Signale

Klaus Bicker, Carsten Thiele 8/24

Page 9: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Abbildung 6: Programmable Switch Matrix (PSM)

oder großen Fan-Out gedacht. Zwei von diesen Leitungen nahe einem CLB konnen uber

Tri-State-Buffer als uni- oder bidirektionale Busse eingesetzt werden. Eine Besonderheit

stellen noch die Direct-Connect-Lines dar. Sie verbinden zwei Logikblocke direkt mitein-

ander. Werden Signale uber diese Leitungen geroutet, brauchen hierfur keine PSMs ver-

wendet werden, wodurch Routing Ressourcen eingespart werden. Direct-Connect-Lines

werden ebenfalls verwendet um die I/O-Blocke mit den Logikblocken zu verbinden. Die

Place-and-Route-Software versucht ihrerseits, wann immer es moglich ist, diese direkten

Verbindungen zu nutzen, um Routing-Ressourcen zu sparen und die Verzogerungszeiten

so gering wie moglich zu halten. In Abbildung 8 ist dargestellt, wie die IOBs mit den

CLBs verbunden sind.

Abbildung 7: Single- und Double-Length-Lines

Klaus Bicker, Carsten Thiele 9/24

Page 10: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Abbildung 8: Direct-Connect-Lines zwischen IOBs und CLBs

4.4 Tri-State-Buffer (TBUF)

Ein Tri-State-Buffer ist ein Baustein mit drei Pins (IN, OUT, T), der als normaler Puf-

fer verwendet werden kann (T = 0), oder, im Tri-State-Enable-Modus, den Ausgang

hochohmig gegenuber der angeschlossenen Leitung schalten kann (T = 1). Dies kann

erforderlich sein, wenn mehrere Ausgange an einer Leitung angeschlossen sind. Es darf

dann nur ein Ausgang zur Zeit Signale auf die Leitung geben, da es sonst zu Kurz-

schlussen kommen kann. Zu jedem CLB des Chips gehoren zwei Tri-State-Buffer, die

dazu verwendet werden konnen, Signale auf die nachste Longline, oberhalb und unter-

halb des CLB, zu bringen. Dadurch konnen gemultiplexte oder bidirektionale Busstruk-

turen implementiert werden. Zusatzlich ist jedem IOB an der linken und rechten Seite

des Arrays ebenfalls ein Tri-State-Buffer zugeordnet. Die Tri-State-Buffer konnen in drei

verschiedenen Modi Konfiguriert werden:

• Standard Tri-State-Buffer:

Hierbei werden alle drei Pins des Tri-State-Buffers verwendet. Wie schon erwahnt

wird durch ein HIGH am T-Pin der Ausgang des Puffer hochohmig geschaltet. Bei

einem LOW am T-Pin arbeit der Baustein im Standard Puffer-Betrieb und das

Ausgangssignal wird auf die angeschlossene Leitung gegeben.

• Wired-AND with input on the I-Pin:

Hierbei wir der T-Pin mit dem I-Pin verbunden. Wenn jetzt eine”1“ an den Ein-

gang des Buffers gelegt wird, liegt diese auch an dem T-Eingang an und der Aus-

gang wird hochohmig. Uber einen Pull-Up-Widerstand kann die Leitung dann auf

”1“ gezogen werden. Bei einer

”0“ am Eingang liegt ebenfalls eine

”0“ am Ausgang

Klaus Bicker, Carsten Thiele 10/24

Page 11: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

an. Diese”0“ wird dann dazu verwendet die Leitung trotz Pull-Up-Widerstand auf

”0“ (Masse) zu ziehen.

• Wired OR-AND:

Das Wired OR-AND ist ein Wired-AND mit vorgeschaltetem ODER-Gatter, so

dass zwei Eingangspins zur Verfugung stehen. Dies ist dann sinnvoll, wenn es zwei

unterschiedliche Signale gibt, die den Tri-State-Buffer-Ausgang hochohmig schal-

ten sollen, da man die beiden Signale nicht gleichzeitig an einen Pin anschließen

kann (Kurzschlussgefahr durch zusammengeschaltete Ausgange).

Klaus Bicker, Carsten Thiele 11/24

Page 12: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

5 Ubersicht: die FPGA-CPU xr-16

Bei der hier beschriebenen CPU handelt es sich um einen 16-Bit RISC-Prozessor. Mit die-

sem Prozessor soll es moglich sein, einfache integer-basierte C Programme auszufuhren.

Es wurde bei der Realisierung besonders auf ein platzsparendes Design geachtet, damit

in einem Baustein noch genug Platz fur andere Funktionen einer Schaltung vorhanden

ist. Wenn die Schaltung einen eigenen FPGA benotigen wurde, dann konnte auch gleich

ein”richtiger“ Prozessor zusatzlich in die Schaltung eingebracht werden.

Der Prozessor hat folgende Eigenschaften:

• Pipeline-RISC Prozessor, 16 16-bit Register und 16-Bit Instruktionen

• 3 Stufige Pipeline (fetch, decode, execute)

• Durchschnittlich 1.4 Zyklen pro Instruktion

• Byteadressierbarer Speicher load/store mit Bytes oder Worten (16 Bit) in einem

64kByte Adressraum

• Integrierter DMA-Controller mit Adressgenerator fur bis zu 15 DMA Kanale

• schnelle Interruptbehandlung, es werden nur 6 Zyklen fur die Reaktion auf einen

Interrupt und die Ruckkehr von einem Interrupt benotigt

• geringer Ressourcenbedarf

5.1 Entwicklungsumgebung

Fur die CPU xr-16 existiert ein”Intelligenter“ Assembler. Dieser kann von der CPU

eigentlich nicht unterstutzte Befehle durch eine Befehlssequenz, bzw. einen Befehl, der

die entsprechende Operation ausfuhren wurde, umgesetzt werden. Weiterhin ubernimmt

der Assembler evtl. notwendige Anpassungen, die aufgrund von Datenabhangigkeiten

entstehen. Auch wenn der eingeschrankte Sprungbereich einer Branch-Instruktion uber-

schritten wird, generiert er automatisch Code, um den Sprungbereich zu erweitern.

Zusatzlich zu dem Assembler ist auch ein C-Compiler verfugbar. Dieser unterstutzt

jedoch nur Integer-Operationen, Fließkomma-Befehle konnen nicht genutzt werden. Da

der Prozessor keine Multiplikation und Division unterstutzt, emuliert der Compiler diese

Operationen.

Klaus Bicker, Carsten Thiele 12/24

Page 13: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

5.2 Hardwarebedarf

Diese CPU kann auf dem in der Hochschule vorhandenen XS40-Board betrieben werden.

Der Hardwarebedarf fur die CPU ist recht gering. Es werden 202 CLBs, 252 Flip-Flops,

152 TBUFs, 348 4-LUTs und 80 3-LUTs benotigt. In diesem Baugruppen ist, neben der

CPU, ein VGA-Controller enthalten.

6 Struktur des xr-16

6.1 Die Pipeline

Die xr-16 CPU besitzt eine dreistufige Pipeline. Die Aufgaben, die zur Ausfuhrung eines

Befehls notwendig sind, sind wie folgt auf die einzelnen Pipelinestufen verteilt:

• fetch:

– Die Instruktion aus dem Speicher in das”Instruction Register“ (IR) laden.

– Den Programcounter (PC) auf den nachsten Befehl setzen: pc = pc + 2

• decode:

– Decodieren der Instruktion

– evtl. benotigte Operanden aus dem Registerfile, oder einen Immediate-Anteil

aus dem Instruction Register laden.

• execute:

– Ausfuhren der eigentlichen Instruktion

– zuruckschreiben des Ergebnisses der Instruktion

Aus den aktivitaten in der execute-Phase wird ersichtlich, das die Operationen am

beginn eines Taktzyklus durchgefuhrt werden. Die Ergebnisse werden zu einem spateren

Zeitpunkt zuruckgeschrieben. Somit kann ein Zyklus eingespart werden, und ein write-

back in der execute Phase durchgefuhrt werden.

6.2 Der Datenpfad

In dem Datenpfad der CPU, der auf Seite 24 abgebildet ist, konnen einige Besonderheiten

der CPU festgestellt werden. Zum einen sind die Register doppelt vorhanden. Dadurch

Klaus Bicker, Carsten Thiele 13/24

Page 14: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

ist eine einfache Realisierung eines zweifachen lesenden Zugriffs auf die Register, wie

z.B. add r3,r4,r5, moglich. Durch gemeinsame Schreibsignale ist sichergestellt, daß beide

Registereinheiten identische Daten beinhalten.

Forwarding unterstutzt die CPU nur fur den”a“-Parameter. So kann nur die erste

Quelle ein Ergebnis der vorhergehenden Instruktion sein. Somit ist folgendes moglich:

add r2,r4,r5

add r6,r2,r4

aber nicht:

add r2,r4,r5

add r6,r4,r2

In dem zweiten Bespiel musste fur die zweite Quelle Forwarding moglich sein. Da dies

aber nicht moglich ist, muss in einem solchen Fall ein”nop“ eingefugt werden. Aufgrund

der einfachheit dieser CPU ist es dieser nicht moglich die Bearbeitung fur einen Takt zu

verzogern (stall).

Der Datenpfad der CPU ist auf Seite 24 wiedergegeben. Die Schaltung ist der Doku-

mentation der CPU von [1] entnommen. Auf dieser Abbildung ist zu erkennen, daß der

Ausgang des”RESULT MUX“ uber den

”FWD“-MUX als Parameter

”A“ zur Verfugung

steht. Somit kann das Ergebnis zeitgleich mit dem Ruckschreiben in ein Register als Pa-

rameter verwendet werden.

In dem Datenpfad des”B“-Parameters ist an dieser Stelle die

”IMMED“-Schaltung

zur Bearbeitung von 16-Bit Immediates vorhanden. Ein”FWD“-Block fehlt hier. Daher

kann fur den”B“-Parameter kein Forwarding durchgefuhrt werden.

7 Instruktionsformate

Jeder Befehl des xr-16 Prozessors hat 16 Bits. Die Befehle sind in 6 unterschiedliche

Formate unterteilt, wobei der Opcode immer 4 Bits umfasst. Da dieses nur 16 Befehle

ermoglichen wurde haben einige Instruktionsformate ein weiteres 4-Bit Feld, uber wel-

ches Unterfunktionen ausgewahlt werden konnen. Somit ist es moglich mit einem Opcode

bis zu 16 Varianten zu realisieren.

7.1 Register-Typ (rrr)

Wie in der Abbildung zu sehen, ist dieses Instruktionsformat in 4 Felder zu je 4 Bit

unterteilt. Neben dem immer vorhandenen Opcode sind noch Felder fur rd, ra und rb

Klaus Bicker, Carsten Thiele 14/24

Page 15: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

4 Bit 4 Bit 4 Bit 4 Bit

OpCode rd ra rb

vorhanden. Mit diesen Feldern kann jeweils eines der 16 Register ausgewahlt werden.

Somit kann ein Befehl auf drei unterschiedliche Register zugreifen, zwei Quell- und ein

Zielregister. Dieses Befehlsformat beansprucht sehr viel Platz, da fur jeden implementier-

ten Befehl einer der Opcodes”verbraucht“ wird. Daher sind nur zwei Befehle vorhanden,

die dieses Format nutzen.

add rd,ra,rb ; rd = ra + rb

sub rd,ra,rb ; rd = ra - rb

7.2 Register-Typ mit”

Unterfunktionen“ (rr)

4 Bit 4 Bit 4 Bit 4 Bit

OpCode rd Funktion rb

Wie schon beschrieben ist die Anzahl der Opcodes mit maximal 16 recht gering.

Um diese Einschrankung zu umgehen, gibt es Formate, in denen eine”Unterfunktion“

ausgewahlt werden kann.

Auch dieses Format setzt sich aus 4 Feldern zu je 4 Bit zusammen. Dadurch, daß

ein Feld in diesem Format fur die Auswahl der Unterfunktion verwendet wird, stehen

nur noch zwei Felder fur Register zur Verfugung. Daher wird bei Befehlen, die zwei

Quellregister benotigen, das Zielregister als erste Quelle verwendet, wie die folgenden

Beispiele zeigen.

or rd,rb ; rd = rd or rb

xor rd,rb ; rd = rd xor rb

Diese Befehle haben beide den Opcode”3“ und unterscheiden sich nur in dem Wert

der Funktion (or = 1, xor = 2).

7.3 Immediate-Typ (rri)

Auch dieses Befehlsformat setzt sich aus 4 Feldern zu je 4 Bit zusammen. Neben dem

Zielregister, und dem ersten Quellregister werden die unteren 4 Bits fur einen 4 Bit

Klaus Bicker, Carsten Thiele 15/24

Page 16: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

4 Bit 4 Bit 4 Bit 4 Bit

OpCode rd ra Imm

Immediate Anteil verwendet. Dies erscheint zunachst als recht wenig Platz fur einen

Immediate Anteil. Es gibt jedoch eine Moglichkeit, den Immediate Anteil auf 16 Bits

zu erweitern. Darauf wird weiter unten noch eingegangen. Da auch dieses Befehlsformat

sehr viel Platz verbraucht, existieren von diesem Typ nur 6 Befehle. Dabei handelt es

sich hauptsachlich um die Load- und Store-Anweisungen. Durch den Immediate-Anteil

sind diese Befehle sehr flexibel einsetzbar, wie in dem Abschnitt 8.3 gezeigt wird.

addi rd,ra,imm ; rd = ra + imm

lw rd,imm(ra) ; rd = (ra + imm)

7.4 Immediate-Typ mit”

Unterfunktionen“ (ri)

4 Bit 4 Bit 4 Bit 4 Bit

OpCode rd Funktion Imm

Auch dieses Format setzt sich aus 4 Feldern zu je 4 Bit zusammen. Neben dem

Opcode und der Funktionserweiterung bleibt nur noch Platz fur ein Zielregister und

den Immediate Anteil. Dieser Typ wird im Befehlssatz recht haufig verwendet. Das

Zielregister stellt auch hier das erste Quellregister.

andi rd,imm ; rd = rd and imm

xori rd,imm ; rd = rd xor imm

7.5 Branch-Typ (br)

4 Bit 4 Bit 8 Bit

OpCode rd Displacement

Dieses Format besitzt 2 Felder zu je 4 Bit, und ein Feld zu 8 Bit. Es wird nur fur

Sprungbefehle eingesetzt. Der Opcode”B“ kennzeichnet einen solchen Befehl. Uber den

Klaus Bicker, Carsten Thiele 16/24

Page 17: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Funktionswert kann dann die Bedingung des Sprungbefehls ausgewahlt werden (beq,

bge, bltu, etc.). Der 8 Bit-Displacement-Wert gibt die”Entfernung“ des Sprungs an.

Durch die Begrenzung auf 8 Bit, kann nur in einem Bereich von -128 bis +127 Befehle

gesprungen werden. Soll ein Sprungbefehl uber einen weiteren Bereich gehen, so muss die

Struktur des Programms geandert werden. Darauf wird in Abschnitt 8.4 noch genauer

eingegangen.

br label ; pc = pc + 2x sign_ext(disp) + 2

beq label ; rd = if (==) pc = pc + 2x sign_ext(disp) + 2

7.6 12-Bit Immediate-Typ (i12)

4 Bit 12 Bit

OpCode Immediate

Das letzte Befehlsformat der xr-16 CPU hat neben dem 4 Bit Opcode-Feld nur ein

weiteres. Dieses 12 Bit große Feld kann einen Immediate Wert aufnehmen. Da auch

dieses Format einen kompletten Opcode belegt, existieren nur zwei Befehle, die dieses

Format verwenden. Dies ist zum einen der call-Befehl zum Aufruf einer Subroutine, und

zum anderen der imm-Befehl, der den 4-Bit Immediatewert einer folgenden Instruktion

auf 16 Bit erweitert. Auf diesen Befehl wird in Abschnitt 8 noch naher eingegangen.

call label ; r15 = pc; pc = imm[12:0]||0[3:0]

imm wert ; immed = wert

8 Der Befehlssatz

In diesem Abschnitt wird ein Teil des Befehlssatzes vorgestellt. Es wird auch auf Be-

sonderheiten und Limitierungen eingegangen. Des weiteren wird auch gezeigt, wie diese

Probleme umgangen werden konnen.

Da das 16 Bit-Befehlsformat nicht viel Platz fur eine große Anzahl an Befehlen bietet,

wurden nicht alle von anderen Prozessoren bekannte Befehle implementiert. Sie lassen

sich im Normalfall jedoch durch eine andere vorhandene Instruktion nachbilden. Dazu

werden durch den Assembler sogenannte pseudoinstruktionen bereitgestellt.

Klaus Bicker, Carsten Thiele 17/24

Page 18: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

8.1 Nicht implementierte Befehle

Hier werden einige Befehle aufgefuhrt, die nicht im Befehlssatz der xr-16 CPU vorhan-

den sind. Zusatzlich wird beschrieben, wie entsprechende Instruktionen mit der CPU

nachgebildet werden konnen.

Ein haufig zur Losung von Problemen, die aufgrund der Pipelinestruktur auftreten,

eingesetzter Befehl ist”nop“. Dieser ist nicht vorhanden, kann jedoch durch

”add r0,r0“

nachgebildet werden. Da das Register r0 immer”0“ ist, hat diese Verwendung des

”add“-

Befehls keine nutzliche Funktion.

Es ist auch nicht moglich, einen Transfer von einem Register in ein anderes vor-

zunehmen. Ein Befehl wie”mov r2,r3“ existiert nicht. Auch hier kann das Register r0

eingesetzt werden, um diesen Befehl nachzubilden. Mit dem Befehl”add r2,r0,r3“ kann

ein Transfer zwischen zwei Registern durchgefuhrt werden, da eine Addition von”0“ das

Ergebnis nicht beeinflusst. Dies wird auch bei der DLX oder dem MIPS-Prozessor in

gleicher Weise realisiert.

Auch Vergleichsbefehle wie”cmp“ sind nicht vorhanden. Diese konnen durch Befehle

wie”sub r0,r3,r4“ ersetzt werden. Nach dieser Operation kann z.B. mit

”beq“ oder

”bne“

die Gleichheit, bzw. Ungleichheit der Register r3 und r4 festgestellt werden. Hier kann

das unveranderbare Register”r0“ als Ziel verwendet werden, da die Informationen die

benotigt werden schon for dem zuruckschreiben des Ergebnisses bereit stehen.

8.2 Der”

imm“-Befehl

Wie in den vorhergehenden Abschnitten zu erkennen war, kann direkt in einem Be-

fehl nur ein 4 Bit Immediate-Wert angegeben werden. Fur viele Anwendungen ist das

nicht ausreichend. Daher besitzt die CPU einen Befehl, um den Immediate-Anteil auf 16

Bit zu erweitern. Dieser”imm“-Befehl transportiert den als Parameter angegebenen 12

Bit-Wert in ein Zwischenregister, welches dann von dem folgenden Befehl zur Erweite-

rung des 4 Bit-Immediate Wertes herangezogen wird. So ist es z.B. moglich, folgenden,

aufgrund des großen Immediate Wertes, eigentlich nicht nutzbaren Befehl auszufuhren:

addi r2,r1,0x1234

Durch den”imm“-Befehl kann diese Anweisung wie folgt umgeschrieben werden:

imm 0x123

addi r2,r1,0x4

Klaus Bicker, Carsten Thiele 18/24

Page 19: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Somit ist es bei jedem Befehl mit Immediate Anteil moglich, diesen auf 16 Bit aus-

zuweiten. Es ist zu beachten, daß der”imm“-Befehl immer unmittelbar vor der zu er-

weiternden Anweisung stehen muß.

8.3 Load/Store-Befehle

Die Load- und Store-Befehle der CPU sind flexibel gestaltet. Sie ermoglichen es, Da-

ten zwischen dem Hauptspeicher und den Registern zu transferieren. Obwohl nur eine

Adressierungsart vorhanden ist, konnen diese Befehle vielseitig eingesetzt werden. Diese

Befehle haben immer folgendes Aussehen:

lw rd,imm(ra)

Durch geschickte Wahl der Werte von”imm“, dem Immediateanteil, und ra, dem

Register, dessen Inhalt als Adresse genommen wird, konnen verschiedene Zugriffe auf

den Hauptspeicher erfolgen. So ist es moglich, entweder indirekt auf die Adresse in einem

Register zuzugreifen:

lw rd,0(ra)

oder direkt auf eine angegebene Adresse ohne Verwendung eines Registers:

imm 0x123

lw rd,4(r0)

oder aber auf eine Kombination von beiden, z.B. zum Zugriff auf Felder einer Da-

tenstruktur:

lw rd,4(r3)

8.4 Weite Sprunge

Bedingte Sprungbefehle, die uber den Bereich von -128 bis +127 Befehle hinausgehen,

konnen einfach durch Umformen der Anweisungen realisiert werden. So kann der unbe-

dingte Sprungbefehl:

br L1

einfach durch:

imm L1[15:4]

jal r0,L1[3:0](r0)

Klaus Bicker, Carsten Thiele 19/24

Page 20: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

nachgebildet werden. Bei bedingten Sprungen kann das Ziel durch Umkehr der Be-

dingung erreicht werden. Aus:

blt L1

wird dann:

bge skip

imm L1[15:4]

jal r0,L1[3:0](r0)

skip:

Durch etwas Mehraufwand in der Programmierung, die jedoch vom Assember auto-

matisch durchgefuhrt wird, kann also ein Sprungbefehl auf den gesamten Adressraum

der CPU ausgedehnt werden.

8.5 Return-Befehle

Wenn der Befehlssatz der CPU betrachtet wird, fallt auf, daß es zwar einen”call“-Befehl

gibt, jedoch keinen zugehorigen”ret“-Befehl. Auch ein

”reti“ zur Beendigung der Inter-

ruptbehandlung ist nicht vorhanden. Dies ist jedoch kein Problem, da die entsprechenden

Befehle durch:

jal r0,0(r15)

fur”ret“ und:

jal r0,0(r14)

fur”reti“ nachgebildet werden konnen. Daher werden von den entsprechenden An-

weisungen (”call“ und Interruptrequest durch die Hardware) die Rucksprungadressen in

den Registern r15 bzw. r14 abgelegt.

9 Der Assembler

Durch die Ausfuhrungen in den vorhergehenden Abschnitten wird klar, daß es bei der

Programmierung der CPU einiges zu beachten gibt. Damit die Entwicklung eines Pro-

gramms nicht unnotig erschwert wird, ist der zugehorige Assembler mit vereinfachenden

Klaus Bicker, Carsten Thiele 20/24

Page 21: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Funktionen ausgestattet. So kann bei einem Immediate-Befehl direkt ein 16 Bit-Wert

angegeben werden. Der notwendige”imm“-Befehl wird automatisch eingefugt.

Sollten Datenabhangigkeiten zwischen aufeinanderfolgenden Befehlen bestehen, so

wird automatisch ein”nop“ (also: and r0,r0) eingefugt, oder wenn es moglich ist eine

Umsortierung der Parameter vorgenommen.

Auch Befehle wie cmp, ret, reti oder mov werden durch den Assembler nachgebil-

det. Somit entstehen also fur den Programmierer keine großen Einschrankungen bei der

Verwendung dieser CPU.

Klaus Bicker, Carsten Thiele 21/24

Page 22: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

10 Fazit

Die in diesem Bericht beschriebene CPU ist durchaus fur kleinere Aufgaben geeignet.

Die Leistung einer 16 Bit-CPU reicht in vielen Bereichen aus. Außerdem kann die CPU

auch an die entsprechende Aufgabe angepasst werden.

Die Einsparung der zu verwendenden Hardware ist auch ein wichtiger Punkt. Dies

ist jedoch nur dann sinnvoll, wenn genugend Platz fur eine CPU in dem FPGA-Baustein

vorhanden ist. Wenn fur die CPU sowieso ein zusatzlicher Baustein eingebaut werden

musste, kann auch gleich eine”normale“ CPU verwendet werden.

Durch die Verlagerung der durch die Implementierung gegebenen Einschrankungen in

die Entwicklungswerkzeuge, ist diese CPU nicht schwerer zu programmieren als andere

Prozessoren.

Auch mit einem relativ kleinen FPGA-Baustein, wie die der XS40-Serie, ist es moglich

eine solche CPU zu realisieren. Dies zeigt das auch umfangreiche realisierungen in relativ

kleinen Bausteinen moglich sind.

Klaus Bicker, Carsten Thiele 22/24

Page 23: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

11 Quellen

[1] http://www.fpgacpu.org - Unterlagen zu der”Soft“-CPU xr-16

[2] http://www.xess.com - Produktbeschreibung XS40-Board

[3] http://www.xilinx.com - Datenblatt der XC4000 FPGA Reihe

Klaus Bicker, Carsten Thiele 23/24

Page 24: RST-Labor Bericht zum Vortrag FPGA - · PDF fileRST - FPGA und Anwendungen 1 Einleitung Bei der Umsetzung von komplexen digitalen Schaltungen in Hardware gibt es verschiede-ne Ans

RST - FPGA und Anwendungen

Cop

yrig

ht (C

) 200

0, G

ray

Res

earc

h LL

C.

This

wor

k an

d its

use

sub

ject

to X

SOC

Lice

nse

Agre

emen

t. Se

e LI

CEN

SE fi

le.

Proj

ect:

[Non

e]M

acro

: DP1

6D

ate:

02/

23/1

00

EXEC

UTI

ON

UN

IT

ADD

RES

S/PC

UN

IT

RES

ULT

MU

X

Figu

re S

3: X

R16

CPU

Data

path

Sch

emat

ic

RET

BUF

RLO

C=R

1C9

BUFT

16X

T

BREG

S

REG

FILE

RLO

C=R

1C1

D[1

5:0]

A[3:

0]

WE

CLK

Q[1

5:0]

LOG

ICBU

F

RLO

C=R

1C4

BUFT

16X

T

SRBU

F

RLO

C=R

1C1

BUFT

16X

T

IMM

ED

IMM

16R

LOC

=R1C

3

B[15

:0]

IR[1

1:0]

O[1

5:0]

OP[

5:0]

B FD12

E4E

RLO

C=R

1C3

D[1

5:0]

Q[1

5:0]

CE1

5_4

CE3

_0

CLK

AREG

S

REG

FILE

RLO

C=R

1C0

D[1

5:0]

A[3:

0]

WE

CLK

Q[1

5:0]

A FD16

ER

LOC

=R1C

2

D[1

5:0]

CE C

LK

Q[1

5:0]

ADD

SUB

RLO

C=R

-1C

5

ADSU

16

A[15

:0]

ADD

B[15

:0]

CI

CO

OFL

S[15

:0]

LOG

IC

LOG

IC16

RLO

C=R

1C4

A[15

:0]

B[15

:0]

OP[

1:0]

O[1

5:0]

SUM

BUF

RLO

C=R

1C5

BUFT

16X

TBU

F

SLBU

F

RLO

C=R

1C0

BUFT

16X

T

PCIN

CR

RLO

C=R

-1C

8

ADD

16

A[15

:0]

B[15

:0]

CI

CO

OFL

S[15

:0]

ADD

RM

UX

M2_

16Z

RLO

C=R

1C7

A[15

:0]

B[15

:0]

SEL

O[1

5:0]

ZER

O

PC RAM

16X1

6SR

LOC

=R1C

9

A[3:

0]

D[1

5:0]

WE W

CLK

O[1

5:0]

RET

FD16

ER

LOC

=R1C

9

D[1

5:0]

CE C

LK

Q[1

5:0]

PCD

ISP

PCD

ISP1

6R

LOC

=R1C

6

BRD

ISP[

7:0]

BRAN

CH

PCD

ISP[

15:0

]

ZHBU

F

RLO

C=R

1C2

BUFT

8XT

DO

UT

FD16

ER

LOC

=R1C

4

D[1

5:0]

CE C

LK

Q[1

5:0]

FWD

M2_

16R

LOC

=R1C

2

A[15

:0]

B[15

:0]

SEL

O[1

5:0]

Z ZER

OD

ETR

LOC

=R1C

6

I[15:

0]Z

UD

LDBU

F

RLO

C=R

5C2

BUFT

8XT

UD

BUF

RLO

C=R

1C3

BUFT

8XT

LDBU

F

RLO

C=R

5C3

BUFT

8XT

RN

A[3:

0]

RN

B[3:

0]

AREG

[15:

0]

BREG

[15:

0]B[

15:0

]

AMU

X[15

:0]

BMU

X[15

:0]

RET

AD[1

5:0]

A[15

:0]

SUM

[15:

0]

LOG

IC[1

5:0]

PCN

EXT[

15:0

]

IMM

OP[

5:0]

PCD

ISP[

15:0

]

IMM

[11:

0]

DO

UT[

7:0]

BRD

ISP[

7:0]

G,G

,G,G

,G,G

,G,G

RES

ULT

[15:

8]

RES

ULT

[15:

8]

SRI,A

[15:

1]

RES

ULT

[7:0

]

RES

ULT

[15:

0]

PC[1

5:0]

DO

UT[

15:8

]R

ESU

LT[7

:0]

DO

UT[

15:8

]

LOG

ICO

P[1:

0]

DO

UT[

15:0

]

A[14

:0],G

ADD

R[1

5:0]

G,G

,G,D

MAP

C

CLK

RFW

E

ZXT

CLK

CLK

RFW

E

CLK

PCE

SLT

Z

RET

ADT

PCC

E

LDT

GN

D

SRT

SUM

T

LOG

ICT

CI

ADD

FWD

N

A15

CLK

CO

SELP

C

ZER

OPC

CLK

CLK

BCE1

5_4

V

G

SUM

15

PCE

BRAN

CH

PCE

SRI

UD

LDT

UD

T

RET

CE

DM

APC

Klaus Bicker, Carsten Thiele 24/24