konzept und realisierung eines zweidimensionalen ... · pdf fileuniversitat¨ des...

97
Universit¨ at des Saarlandes Prof. Dr.-Ing. L. Thiele Lehrstuhl f¨ ur Mikroelektronik S I T A S S A R A V I E N S I S R N I V E U Konzept und Realisierung eines zweidimensionalen programmierbaren Rechenfeldes mit XILINX FPGAs Diplomarbeit von Tobias Blickle Betreuer: Dipl.-Inform. Joachim K¨ onig Eingereicht im M¨ arz 1993

Upload: truongdang

Post on 07-Feb-2018

214 views

Category:

Documents


1 download

TRANSCRIPT

Universitat des SaarlandesProf. Dr.-Ing. L. ThieleLehrstuhl fur Mikroelektronik

S ITAS

SA

R

AV I E N

SI S

R

N

IVE

U

Konzept und Realisierung

eines zweidimensionalen

programmierbaren

Rechenfeldes mit

XILINX FPGAs

Diplomarbeit von Tobias Blickle

Betreuer: Dipl.-Inform. Joachim Konig

Eingereicht im Marz 1993

Inhaltsverzeichnis

Bilderverzeichnis iii

Tabellenverzeichnis iv

Kapitel 1 Einfuhrung 1

Kapitel 2 Einbettung 3

2.1 COMPAR 4

2.2 PAr2 4

2.3 Aufgabenstellung der Diplomarbeit 5

Kapitel 3 Konzept von PAr2 6

3.1 Xilinx FPGAs 6

3.2 Interface 9

3.3 Anforderungen 10

3.4 Grunduberlegungen 12

Kapitel 4 Die Komponenten von PAr2 18

4.1 Rechenfeld 18

4.1.1 Aufgabe 18

4.1.2 Kommunikation der Rechenfeld FPGAs untereinander 19

4.1.3 Kommunikation zwischen Rechenfeld und Ramcontroller 19

4.2 Ramcontroller 22

4.2.1 Aufgabe 22

4.2.2 Kommunikation zwischen Ramcontroller und Interface 23

4.2.3 Kommunikation zwischen Ramcontroller und RAM 24

4.3 Takterzeugung 28

4.3.1 Grundkonzept 28

4.3.2 Bestimmung des optimalen Timing 29

4.4 Modellierung der Kommunikation 36

4.5 Programmierung und Debugging 39

4.5.1 Vorbereiten der Programmierung 39

4.5.2 Programmiervorgang 41

4.5.3 Readback 42

ii

Kapitel 5 Realisierung der Hardware 445.1 Uberblick 44

5.2 Rechenfeld 465.3 Ramcontroller 48

5.4 Interface Adapter 495.4.1 Signalverteilung 49

5.4.2 Taktverteilung 505.4.3 General Purpose Bus 50

5.5 Layout 515.5.1 Stromversorgung 51

5.5.2 Signalleitungen 525.6 Test 54

5.7 Verbesserungsvorschlage zur Realisierung 55

Kapitel 6 Zusammenfassung 57

Literaturverzeichnis 58

Anhang A Programm zur Bestimmung des Timing 60

Anhang B Technische Angaben Rechenfeld 64

Anhang C Technische Angaben Ramcontroller 70

Anhang D Technische Angaben Ramcard I 77

Anhang E Technische Angaben Program&Readback Buffer 79

Anhang F Technische Angaben Interface-Adapter 81

Anhang G Meßstecker 90

iii

Bilderverzeichnis

Bild 1 Schematischer Aufbau eines XILINX FPGA . . . . . 7Bild 2 Vereinfachter Input-/Output Block (IOB) der

FPGAs. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Bild 3 Configurable Logic Block (CLB) der FPGAs. . . . . 9Bild 4 Blockschaltbild des PSI-Interface . . . . . . . . . . . 10Bild 5 Prinzipschaltbild von PAr2 — Kommunikation . . . 15Bild 6 Prinzipschaltbild Ramcontroller zu Bild 5 . . . . . . 16Bild 7 Prinzipschaltbild von PAr2 — Programmierung,

Readback und globaler Bus. . . . . . . . . . . . . . 17Bild 8 Kommunikation zwischen zwei

Rechenfeld-FPGAs. . . . . . . . . . . . . . . . . . . . 19Bild 9 Kommunikation zwischen Rechenfeld und

Ramcontroller . . . . . . . . . . . . . . . . . . . . . . . 20Bild 10 Prinzipielles Timingdiagramm fur die

Kommunikation zwischen Rechenfeld (RF) undRamcontroller (RC). . . . . . . . . . . . . . . . . . . . 21

Bild 11 Kommunikation zwischen Ramcontroller undInterface . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Bild 12 Prinzipielles Timingdiagramm fur dieKommunikation zwischen Ramcontroller(RC) undInterface(IF) uber den IFBUS. . . . . . . . . . . . . 25

Bild 13 Adreßmultiplexer der Ramcontroller . . . . . . . . . 26Bild 14 Prinzipielles Timingdiagramm fur die Kommunikation

zwischen Ramcontroller und RAM. . . . . . . . . . 27Bild 15 Prinzip der Taktsignalerzeugung aus einem

Grundtakt . . . . . . . . . . . . . . . . . . . . . . . . . 29Bild 16 Vollstandiges Timingdiagramm fur die

Kommunikation zwischen Rechenfeld undRamcontroller . . . . . . . . . . . . . . . . . . . . . . . 30

Bild 17 Vollstandiges Timingdiagramm fur dieKommunikation zwischen Ramcontroller undInterface . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Bild 18 Vollstandiges Timingdiagramm fur dieKommunikation zwischen Ramcontroller undRam. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Bild 19 Resultiernder Verlauf der globalen Taktsignale vonPAr2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

iv

Bild 20 An der Grenze zwischen positiver getriggerter undnegativ getriggerter Logik wirken zwei Register wieeineinhalb. . . . . . . . . . . . . . . . . . . . . . . . . . 37

Bild 21 Registermodell von PAr2 . . . . . . . . . . . . . . . . 39Bild 22 Blockschaltbild mit Verteilung der globalen Signale

sowie der Adressen der FPGAs . . . . . . . . . . . 45Bild 23 Phyikalische Verdrahtung der lokalen Verbindungen

der FPGAs auf dem Rechendfeld. . . . . . . . . . . 46Bild 24 Mogliches Verdrahtungsschema der FPGAs des

Rechenfeldes mit konstanten Leitungslangen. . . 48Bild 25 �-Tiefpaßfilter in den Versorgungsleitungen . . . 52Bild 26 Zusatzlicher Filter in der Stromversorungsleitung

des Grundtaktoszillators . . . . . . . . . . . . . . . . 52Bild 27 Thevenin-Terminierung eines Gatterausgangs . . . 53Bild 28 Schaltplan des Rechenfeldes . . . . . . . . . . . . . 65Bild 29 Pinbelegung eines Rechenfeld-FPGAs (Sicht

entsprechend dem XILINX-Tool XACT) . . . . . . . 66Bild 30 Pinbelegung eines Rechenfeld-FPGAs . . . . . . . 67Bild 31 Schaltplan des Ramcontrollers . . . . . . . . . . . . 71Bild 32 Pinbelegung eines Ramcontroller-FPGA (Sicht

entsprechend dem XILINX-Tool XACT) . . . . . . . 72Bild 33 Pinbelegung eines Rechenfeld-FPGAs . . . . . . . 73Bild 34 Pinbelegungen der DIL-Sockel der Ramcard . . . 77Bild 35 Schaltbild der Ramcard I . . . . . . . . . . . . . . . . 78Bild 36 Schaltbild des Program&Readback Buffer . . . . . 80Bild 37 Lage der GPBUS Jumper im Jumperfeld . . . . . . 81Bild 38 Layout der Interface-Adapter-Platine . . . . . . . . 82Bild 39 Schaltbild des Interface-Adapters . . . . . . . . . . 83Bild 40 Meßpunkte des Interface-Adapters . . . . . . . . . 84Bild 41 Teilschaltbild Taktsignalverteilung . . . . . . . . . . . 85Bild 42 Schaltbild der General-Purpose-Bus-Verteilung . . 86

v

Tabellenverzeichnis

Tabelle 1 Signalbezeichnungen im Rechenfeld-FPGA . . . . 40Tabelle 2 Signalbezeichnungen im Ramcontroller-FPGA . . 41Tabelle 3 Signalbezeichnungen im Ramcontroller-FPGA . . 41Tabelle 4 Pinbelegung Rechenfeld CN1 . . . . . . . . . . . . . 68Tabelle 5 Pinbelegung Rechenfeld CN2 – CN7 . . . . . . . . 69Tabelle 6 Pinbelegung Ramcontroller CN1 . . . . . . . . . . . 74Tabelle 7 Pinbelegung Ramcontroller CN2 . . . . . . . . . . . 75Tabelle 8 Pinbelegung Ramcontroller CN3, CN4 . . . . . . . 76Tabelle 9 Pinbelegung Interface-Adapter CN1 . . . . . . . . . 87Tabelle 10 Pinbelegung Interface-Adapter CN2 . . . . . . . . . 88Tabelle 11 Pinbelegung Interface-Adapter CN3 . . . . . . . . . 89Tabelle 12 Pinbelegung Interface-Adapter CN4 . . . . . . . . . 89Tabelle 13 Pinbelegung Interface-Adapter CN5 . . . . . . . . . 89Tabelle 14 Pinbelegung Meßstecker Typ A . . . . . . . . . . . . 90Tabelle 15 Pinbelegung Meßstecker Typ B . . . . . . . . . . . . 90

vi

Hiermit versichere ich an Eides statt, daß ich diese Arbeit selbst und nur mit

den angegebenen Hilfsmitteln angefertigt habe.

Saarbrucken, den 17.3.1993

(Tobias Blickle)

vii

Kapitel 1 Einfuhrung

1 Einfuhrung

Viele Probleme der Datenverarbeitung, besonders im Bereich der Signalverar-

beitung, erfordern heute Datenraten und Rechenleistungen, die von herkommlichen

sequentiellen Rechnern nicht bereitgestellt werden konnen. Zwar wurden in letzter

Zeit immer wieder Leistungssteigerungen durch Vergroßern der Packungsdichte

und Erhohung der Taktfrequenz erreicht, aber hier sind bereits die physikalischen

Grenzen der Miniaturisierung und Frequenzsteigerung absehbar. Selbst bei weite-

ren Leistungssteigerungen waren die Rechenleistungen fur Echtzeitanwendungen

wie Bilddatentransformation nicht ausreichend. Deshalb sucht man seit langerem

nach anderen Moglichkeiten, die Leistungsfahigkeit von Rechnern zu erhohen.

Den Schlussel dazu liefert die Parallelisierung, denn dadurch konnen von meh-

reren Prozessoren Teilaufgaben gleichzeitig gelost werden, was eine deutliche

Leistungssteigerung mit sich bringen kann.

Dabei werden zwei unterschiedliche Wege in der Ausfuhrung paralleler Pro-

gramme beschritten.

Eine Moglichkeit, die parallelisierten Probleme berechnen zu lassen, stel-

len frei programmierbare Parallelrechner dar. Dabei sind mehrere Prozessoren

durch ein festes Netz verbunden. Die Prozessoren selbst arbeiten ein Programm

sequentiell mit Hilfe eines Befehlssatzes ab, der auf die Probleme der parallelen

Verarbeitung zugeschnitten ist. Spezielle Compiler passen den Algorithmus an die

Hardware an. Sie sind dafur verantwortlich, wie gut die vorhandene Hardware

genutzt wird. Diese Parallelrechner sind wegen ihrer freien Programmierbarkeit

fur unterschiedliche Probleme leicht anpaßbar. Ihr Parallelitatsgrad ist allerdings

durch die Anzahl der vernetzten Prozessoren beschrankt.

Ein anderer Weg wird bei der Herstellung von algorithmisch spezialisierten

parallelen Schaltungen gegangen. Dabei wird fur jedes Problem ein spezieller

Chip entwickelt. Dadurch lassen sich im allgemeinen noch hohere Verarbeitungs-

geschwindigkeiten als bei Parallelrechnern erreichen, denn es konnen nicht nur die

einzelnen Teilprozessoren parallel arbeiten, sondern jeder Prozessor kann intern

parallel aufgebaut sein. Außerdem kann die Verbindungsstruktur der Prozessoren

auf dem Chip fur jeden Algorithmus angepaßt werden.

Beiden Verfahren ist zu eigen, daß die notigen Umformungen am Algorith-

mus, um ihn an einen Parallelrechner oder an einen Chip anzupassen, sehr kom-

plex sind. Wegen der einfachen Programmierbarkeit haben die Parallelrechner

den Vorteil, daß das Ergebnis der Umformung schnell auf einem solchen Rechner

verifiziert werden kann. Bei algorithmisch spezialisierten Schaltungen ist dage-

gen erst die Fertigung eines Prototyps notig, wenn man nicht auf Simulationen

1

Kapitel 1 Einfuhrung

angewiesen sein will. Eine solche Chipherstellung dauert mehrere Wochen und

ist sehr kostspielig.

Besonders im Bereich der Forschung und Entwicklung von parallelen Schal-

tungen ist deshalb ein System von Interesse, das wie die Parallelrechner einfach

und beliebig oft programmiert werden kann, dessen Prozessoren sich aber selbst

noch spezifizieren lassen, um die Parallelitat optimal auszunutzen. So lassen sich

die langen Wartezeiten und hohen Kosten, die durch die Fertigung eines Chip-

Prototypen entstehen, umgehen. Außerdem wird es moglich, einen schnellen

Uberblick uber die entwickelte Schaltung zu bekommen und sie fruhzeitig in der

Anwendungsumgebung zu testen.

Ein solches System stellen programmierbare Rechenfelder dar. Sie basieren

auf FPGAs (Field-Programmable Gate-Array), die eine Weiterentwicklung der

bekannten PLAs (Programmable Logic Array) darstellen. FPGAs sind nicht

nur in der Lage, kombinatorische Schaltungen zu realisieren, sondern stellen

auch intern Flipflops, programmierbare Verdrahtung und programmierbare Ein-

/Ausgabepins zur Verfugung. Außerdem sind sie wie ein RAM beschreibbar, d.h.

die momentane Konfiguration kann einfach uberschrieben werden, ohne daß ein

Loschen wie bei einem EPROM notig ware.

Mehrere dieser FPGAs sind bei einem programmierbaren Rechenfeld zu einem

Netz verbunden. Die Verbindungen der Teilprozessoren (FPGAs) sind somit zwar

starr vorgegeben, aber die FPGAs selbst lassen intern eine Parallelisierung und

Spezialisierung zu.

Diese Vorteile werden bereits in mehreren Architekturen ausgenutzt, die unter

dem Schlagwort “Rapid Prototyping” zusammengefaßt werden. Beispiele hierfur

sind Splash [4], Anyboard [9] oder ein Prototyping-System fur Steuerungsaufga-

ben [6].

Da der Lehrstuhl sich mit der Synthese algorithmisch spezialisierter Schal-

tungen befaßt, besteht ein Interesse an einem programmierbaren Rechenfeld. Die

Entwicklung und Realisierung eines solchen Rechenfeldes erfolgt im Rahmen des

Projekts PAr2 (Prototyping Array for Parallel Architecture). Es soll an das Ent-

wurfssystem COMPAR angeschlossen werden, das zur Abbildung von Algorith-

men auf Schaltungen dient. Die damit erzeugten Algorithmen sollen auf diesem

Rechenfeld abgearbeitet und getestet werden konnen.

Neben der Hardware des eigentlichen Rechenfeldes wird fur den Einsatz eines

solchen Systems ein Interface zum Anschluß an einen Hostrechner, sowie Soft-

ware benotigt, die eine Programmierung des Rechenfeldes gestattet. Die Entwick-

lung und Realisierung der Hardware fur PAr2 war Aufgabe dieser Diplomarbeit.

2

Kapitel 2 Einbettung

2 Einbettung

Dieses Kapitel bettet das Projekt PAr2 und diese Diplomarbeit in die Lehr-

stuhlarbeit ein.

Wie in der Einleitung kurz erwahnt, ist der Entwurf eines algorithmisch spezia-

lisierten Chips sehr komplex. Es mussen diverse Transformationen durchgefuhrt

werden, die den Algorithmus naher an eine Schaltung heranfuhren, die Semantik

aber nicht verandern. Um einen Entwurf effizient zu halten, ist eine Computer-

unterstutzung sinnvoll.

Normalerweise ist die Formulierung eines Algorithmus in sequenzieller Form

gegeben. Ein erster Schritt, einer Schaltungsrealisation naherzukommen, ist des-

halb die Parallelisierung des Algorithmus. Die Probleme, die mit einer Automati-

sierung dieser Parallelisierung zusammenhangen, sind ein Teil der Lehrstuhlarbeit.

Ein weiterer Schwerpunkt der Arbeiten ist, fur eine Algorithmenklasse ein

Entwurfssystem zu erstellen, das die notwendigen Schritte zur Abbildung eines

(bereits parallelisierten) Algorithmus auf eine Schaltung durchfuhrt, indem es dem

Entwickler eine Reihe von Transformationstools zur Verfugung stellt.

Dabei beschrankt man sich auf eine spezielle Klasse von Algorithmen, die Pro-

blemstellungen aus dem Bereich der linearen Algebra behandeln, den sogenannten

stuckweisen linearen Algorithmen (Piecewise Linear Algorithms). Zu ihnen zah-

len Algorithmen der Signalverarbeitung wie FIR-Filter (Finite Response Filter),

der Bildverarbeitung (z.B. Bilddatenkompression) oder direkte Anwendungen aus

der linearen Algebra wie Matrizenmultiplikation.

Um die parallele Form des Algorithmus beschreiben zu konnen, wurde fur

diese Klasse von Algorithmen die Sprache LIRAN entwickelt, die auf der von

Chandy und Misra entwickelten parallelen Programmnotation UNITY [2] aufbaut.

Formal lassen sich diese Algorithmen wie folgt charakterisieren:

• Es existieren nur Anweisungen zwischen linear indizierten Variablen.

• Jeder dieser Anweisungen ist ein Gultigkeitsraum im Indexraum zugeordnet.

• Jede Variable steht nur einmal auf der linken Seite einer Gleichung (Single

Assignment Bedingung).

• Es existiert eine zeitliche Reihenfolge der Anweisungen, so daß jeder Va-

riablen, die auf der rechten Seite einer Anweisung auftaucht, vorher schon

einmal ein Wert zugewiesen wurde (Berechenbarkeit).

3

Kapitel 2 Einbettung

2.1 COMPAR

Das Projekt COMPAR (Compiler for Massive Parallel Architectures) ist ein

Entwurfssystem, um stuckweise lineare Algorithmen auf Schaltungen abzubilden

[1].

Ausgehend von einer Beschreibung des Algorithmus in LIRAN soll der Al-

gorithmus aus der anfanglichen hardwarefernen Darstellung in eine hardwarenahe

Darstellung gebracht werden. Dazu sind eine ganze Reihe von Transformatio-

nen notig, die aber das Ein-/ Ausgangsverhalten des Algorithmus nicht verandern

durfen. Das Lokalisierungstool beispielsweise dient dazu, globale Datenabhangig-

keiten in lokale umzuwandeln [10]. Globale Abhangigkeiten entsprachen langen

Verbindungen auf dem Chip, die lange Signallaufzeiten und Platzprobleme mit

sich brachten und deshalb unerwuscht sind. Weitere Beispiele fur Transformatio-

nen sind die Generierung der Steuerung [12], die Zuordnung einer Zeitrichtung

(Scheduling) oder die Partitionierung [13]. Die Parititionierung ist besonders im

Hinblick auf das Rechenfeld von Interesse, denn sie ermoglicht es, den Algo-

rithmus an die vorgegebenen Ressourcen anzupassen. Hierauf wird genauer in

Kapitel 3.3 und 4.4 eingegangen.

Wurden alle erforderlichen Transformationen durchgefuhrt, ist beispielsweise

eine Ausgabe des Algorithmus in einer hardwarenahen Beschreibungssprache

(VLSI-OCCAM) moglich. Die Ausgabe in VLSI-OCCAM ermoglicht die Si-

mulation des Algorithmus auf einem Transputer. Sie dient aber auch als Aus-

gangspunkt, um die endgultige Realisierung auf einem Chip zu ermoglichen. Die

notigen Anpassungen werden dabei von dem ebenfalls am Lehrstuhl entwickelten

Transformationstool O2H (Occam to Hardware) vorgenommen.

Die Anbindung an das programmierbare Rechenfeld PAr2 soll ebenfalls uber

eine hardwarenahe Beschreibungssprache erfolgen. Allerdings ist dazu ein wei-

terer Schritt notwendig, der den Algorithmus auf die Register-Transfer-Ebene

(Register-Transfer-Level, RTL) umformt.

Da COMPAR zur Zeit noch in Entwicklung ist, sind noch nicht alle angespro-

chenen Transformationen verfugbar. Implementiert sind bisher nur die Datenein-

und -ausgabe in LIRAN, die Occamausgabe und die Lokalisierung.

2.2 PAr2

Das Projekt PAr2 soll ein programmierbares Rechenfeld zur Verfugung stellen,

um die mit COMPAR erzeugten Algorithmen in Echtzeit ablaufen lassen zu

konnen.

Dazu muß auf der Hardwareseite eine ausreichende Rechenkapazitat - also

genugend Gatteraquivalente bei moglichst hoher Taktfrequenz - vorhanden sein.

4

Kapitel 2 Einbettung

Die Hardware muß schnell, einfach und beliebig oft programmierbar sein. De-

buggingmoglichkeiten sollten vorgesehen sein. Ebenso sollte auf dem Rechenfeld

lokal ausreichend RAM vorhanden sein, um speicherintensive Algorithmen reali-

sieren zu konnen, ohne Zwischenergebnisse zwischen Host und Rechenfeld hin-

und hertransportieren zu mussen.

Neben dem eigentlichen Rechenfeld muß eine Anbindung an das Rechner-

system (Sparcstations) uber ein Interface erfolgen. Dazu dient das PSI-Interface

(Programmable SBus Interface), das hostseitig an den SBus der Sparcstations

angeschlossen wird. Die andere Seite des Interfaces stellt eine beliebig program-

mierbare Schnittstelle zu Verfugung, die nicht nur zum Anschluß von PAr2 ver-

wendet werden kann, sondern auch fur andere Projekte des Lehrstuhls verwendet

werden soll (siehe [8]). Die Programmierung dieser Schnittstelle fur PAr2 wurde

in der Diplomarbeit von Patrik Knapp ausgefuhrt [7].

Als weiterer Schritt zur vollstandigen Anbindung eines Rechenfeldes an

COMPAR muß softwareseitig die Lucke zwischen RTL-Beschreibung des Al-

gorithmus und der Gatterebene geschlossen werden, auf der PAr2 arbeitet.

Ist die vollstandige Anbindung des Rechenfeldes an COMPAR gelungen,

so stellt PAr2 eine flexible Hardware zur Verfugung, um parallele Algorithmen

abzuarbeiten. Neben der Verifizierung von Chipentwurfen ware in einem nachsten

Schritt die Einbindung dieser Hardware uber Funktionsaufrufe am Host denkbar,

die automatisch den entsprechenden Algorithmus im Rechenfeld programmieren

und abarbeiten. Auf diese Weise ließe sich PAr2 als ein "Coprozessor fur parallele

Algorithmen" an konventionellen Rechnersystemen einsetzen.

2.3 Aufgabenstellung der Diplomarbeit

Im folgenden Kapitel wird zunachst das Grundkonzept von PAr2 vorgestellt,

das in enger Zusammenarbeit mit Prof. Dr.-Ing. Lothar Thiele, Dipl.- Inform.

Joachim Konig sowie Patrik Knapp entstanden ist.

In Kapitel 4 wird der erste Themenschwerpunkt der Diplomarbeit erlautert,

der sich mit den gewahlten Kommunikationsmethoden des Rechenfeldes befaßt.

Neben der Beschreibung dieser Kommunikation wird ein Registermodell der

Hardware vogestellt. Dieses Modell ist besonders fur COMPAR wichtig, da es

die Restriktionen vorgibt, die von jedem Algorithmus erfullt werden mussen,

damit er auf der Hardware lauffahig ist. Mit Hilfe dieses Registermodells und

der Einfuhrung von einheitlichen Signalbezeichnungen innerhalb der FPGAs wird

es auch moglich, eine Beschreibung der Kommunikation abstrahiert von der

tatsachlichen physikalischen Realisation zu finden.

Der zweite Themenschwerpunkt wird in Kapitel 5 behandelt und stellt die

Hardware von PAr2 vor und geht auf die Probleme bei der Realisation ein.

5

Kapitel 3 Konzept von PAr2

3 Konzept von PAr2

In diesem Kapitel soll nun das Konzept von PAr2 dargelegt werden. Nach

kurzer Vorstellung der verwendeten FPGA-Bausteine und des Interface werden die

Anforderungen an das Rechenfeld zusammengefaßt. Im Anschluß wird daraus

das Konzept von PAr2 entwickelt.

3.1 Xilinx FPGAs

Das gesamte Konzept von PAr2 basiert auf den XILINX FPGAs der XC4000

Serie [15]. FPGA steht fur Field-Programmable Gate Array, frei ubersetzbar mit

"programmierbarem Logikchip". Mit ihnen lassen sich die Vorteile von VLSI

Schaltungen nutzen, ohne jedoch fur jede Anwendung einen speziellen Chip

konventionell herstellen zu mussen. Die Chips werden programmiert, indem man

die Konfigurationsdaten in den internen Speicher ladt. Dies kann entweder vom

Chip selbstandig aus einem EPROM erfolgen oder durch Laden eines Bitstroms

von einem Host aus. Sind die Daten geladen, kann die Schaltung mit einer

Taktfrequenz von bis zu 50-60 MHz betrieben werden. Dies gilt allerdings nur

bei geringer Auslastung des FPGAs und entsprechend optimaler Verdrahtung;

Praxiswerte bei hoher Chipauslastung und komplexen Routing liegen eher bei

10–20 MHz. Da ein FPGA beliebig oft programmiert werden kann, stellen sie

die idealen Bausteine zur Realisierung eines programmierbaren Rechenfeldes dar.

Die FPGAs lassen sich in drei Grundblocke aufteilen: Ein- /Ausgabe-Blocke

(Input-Output-Blocks, IOBs), konfigurierbare Logikblocke (Configurable Logic

Blocks, CLBs) und programmierbare Verbindungen (programmable Interconnect).

Die CLBs sind regelmaßig in einem quadratischen Feld auf dem Chip verteilt. An

den Randern des Chips befinden sich die IOBs. In den Zwischenraumen liegen

die Verdrahtungskanale mit den Verbindungsleitungen, an die die CLBs und IOBs

angeschlossen werden konnen (Bild 1).

Die IOBs bilden die Schnittstelle zwischen Chip und Außenwelt. Jedem

frei verfugbarem Datenpin ist ein IOB zugeordnet, der den Pin als Eingang

oder Ausgang konfigurieren kann. Da der Ausgang uber einen Tristate-Treiber

hochohmig geschaltet werden kann, sind auch bidirektionale Pins realisierbar.

Außerdem konnen sowohl im Eingangs-, als auch im Ausgangspfad ein Register

zwischengeschaltet werden (vgl. Bild 2).

Die CLBs stellen die eigentliche Schaltungslogik zur Verfugung. Sie besteht

im wesentlichen aus zwei programmierbaren Funktionsgeneratoren F und G mit

jeweils vier Eingangen und einem Ausgang (vgl. Bild 3). Sie bestimmen ihren

Funktionswert uber eine Look-Up-Table, d.h. uber ein vier Bit breites und

6

Kapitel 3 Konzept von PAr2

IOB

CLB

Verdrahtungs-kanale

Bild 1 Schematischer Aufbau eines XILINX FPGA

ein Bit tiefes ROM, in dem der Funktionswert zu jeder Eingangskombination

gespeichert ist. Die Ausgange der Funktionsgeneratoren konnen zusammen mit

einem weiteren externen Signal als Eingange fur den Funktionsgenerator H dienen.

Außerdem befinden sich in jedem CLB zwei Flipflops, deren Eingange von den

Ausgangen der Funktionsgeneratoren F, G oder H oder direkt von dem externen

Signal C2 gespeist werden konnen. Als Ausgange eines CLBs existieren die

Ausgange der Flipflops und zwei weitere Leitungen, die mit den Ausgangen der

Funktionsblocke F, G und H verbunden werden konnen.

Alle Flipflops der FPGA ubernehmen die Daten mit steigender Taktflanke.

Neben dieser Grundfunktion verfugt jeder CLB uber eine Fast Carry Logic,

sowie uber eine Moglichkeit, die Funktionsgeneratoren F und G als 16*1 Bit

RAM zu verwenden. Auf diese Moglichkeiten soll hier nicht weiter eingegangen

werden, da sie fur das Verstandnis der Arbeitsweise von PAr2 nicht erforderlich

sind. Genauere Informationen lassen sich in [15] nachlesen.

Das dritte Grundelement der FPGAs stellen die programmierbaren Verbin-

dungen dar. Es existieren dabei unterschiedliche Typen von Verbindungsleitun-

gen: Die "Single-Length Lines" verbinden direkt benachbarte CLBs, wahrend

"Double-Length Lines" immer ein CLB uberspringen. Fur großere Entfernung

7

Kapitel 3 Konzept von PAr2

Q

SD

RDEC

D

Q

SD

RDEC

D

M

M

OUT DATA

OUT CLOCK

M

M

M Q L

M

M

M

IN CLOCK

IN2

IN1

OUTPUT ENABLE

PAD

Pullup

Pulldown

invert

invert

invert

invert

M Multiplexer konfigurierbar bei Programierung

Bild 2 Vereinfachter Input-/Output Block (IOB) der FPGAs.

sind die "Global Longlines" pradestiniert, die mit Tristate-Treibern angesteuert

werden konnen. “Global Nets” sind fur die Verteilung von Taktsignalen konzi-

piert. Sie sind mit besonderen internen Treibern versehen (Global Primary Buffer

und Global Secondary Buffer) und erlauben es, zeitkritische Signale auf dem Chip

zu verteilen, da sie zu jedem Flipflop im Chip eine garantierte Laufzeit unter funf

Nanosekunden haben. Insgesamt stehen acht solcher Leitungen pro Chip zur

Verfugung; eine dieser Leitungen wird zum Verteilen des globalen Taktes ver-

wendet. Die Verbindungen zwischen den unterschiedlichen Leitungen erfolgen

uber sogenannte "Switch Matrices".

Der Programmiervorgang besteht nun darin, die Funktion der einzelnen Funk-

tionsblocke der CLB festzulegen, sowie die Art und Weise wie ihre Ausgange ver-

schaltet sind. Ebenso werden beim Programmieren die Konfiguration der IOBs

geladen und die Verbindungen zwischen den CLBs festgelegt, d.h. die Switch

Matrices programmiert.

Als Besonderheit bieten die XILINX FPGAs die Moglichkeit, den internen

Zustand auszulesen. Dies geschieht uber das READBACK. Zu einem beliebigen

Zeitpunkt kann mittels des Signals RDBK.TRIG das FPGA veranlaßt werden,

die Daten mit der durch RDBK.CLK vorgegebenen Geschwindigkeit uber den

Pin RDBK.DATA auszugeben. Dabei werden nicht nur die Daten uber die

8

Kapitel 3 Konzept von PAr2

S/RCONTROL

S/RCONTROL

C1 C2 C3 C4

G1

G2

G3

G4

F1

F2

F3

F4

K

(clock)

H1 DIN S/R EC

G’

F‘

G’

H’

G’

H’

G’

H’

H’

F’

DIN

DIN

F’

Q

SD

RDEC

D YQ

XQQ

SD

RDEC

D

1

1

Y

X

Logic

Function

of

G1-G4

Logic

Function

of

F1-F4

Logic

Function

of

F’,G’

and

H1

H’

F’

Bild 3 Configurable Logic Block (CLB) der FPGAs.

programmierte Funktion ubertragen, sondern auch der Zustand der Register in

den IOBs und CLBs.

Beim Aufbau von PAr2 wurden FPGAs vom Typ XC4005 verwendet. Sie

verfugen uber eine Gatteraquivalent von ca 5000 in 14 * 14 = 196 CLBs. In einem

156poligen Grid-Array stellen sie 112 frei verfugbare IOPins und ebensoviele

IOBs zur Verfugung. Insgesamt befinden sich in den CLBs und IOBs zusammen

616 Flipflops. Durch Ausnutzung der Funktionsgeneratoren als Speicher konnen

maximal 6272 Bit RAM auf einem Chip realisiert werden.

3.2 Interface

Das Interface, das am Lehrstuhl entwickelt wird, soll die Moglichkeit bieten,

unterschiedlich parallele algorithmische und semialgorithmische Prozessoren an

SPARC-Stations anzuschließen. Bild 4 zeigt das Prinzipschaltbild. Uber einen

Buscontroller ist ein FPGA an den SBus der SPARC-Station angeschlossen, das

die Kommunikation mit dem Host steuert. Zwei getrennte 32 Bit breite FIFOs —

eins fur die Lese-, eins fur die Schreibrichtung — puffern die zu ubertragenden

Daten, die an zwei weitere FPGAs gefuhrt werden. Von jedem dieser FPGAs

sind 60 Pins auf eine Steckerleiste gelegt, deren Bedeutung frei programmierbar

ist, je nach der in den FPGAs realisierten Schaltung. Es stehen also insgesamt

120 Pins zur Verfugung.

9

Kapitel 3 Konzept von PAr2

In seiner momentanen Realisierung erreicht das Interface eine Ubertragungs-

rate von maximal 8 MByte/s.

DM

A-C

on

tro

ller

Forth-

Code

Data/

Address

Address

Control

16

8

8

Serial

Prom

Serial

Prom

Xilinx XC4005PG156Transfer-Agent

SBus-FIFO

Configuration

32

SB

us-

Con

nec

tor

Data

Xilinx XC4005PG156Write-ControlApplic.-FIFO

Xilinx XC4005PG156Read-ControlApplic.-FIFO

FIFO Write

FIFO Read

Control

Data

Data

32

32

8

8

Control

Control

Control

Control

status

status

pro

gra

mm

ab

le I

/O-P

ins

pro

gra

mm

ab

le I

/O-P

ins

Control

Control

Bild 4 Blockschaltbild des PSI-Interface

3.3 Anforderungen

Das Rechenfeld soll fur den implementierten Algorithmus1 sozusagen das

Gehause zur Verfugung stellen, d.h. mehrere FPGAs und das RAM sowie die

Datenein- und -ausgabe so verfugbar machen, daß moglichst wenig Ressourcen

der FPGAs verloren gehen. Die Moglichkeiten, die sich durch die Transfor-

mationstools in COMPAR ergeben, sollten gewinnbringend in der Konzeption

eingesetzt werden.

Insgesamt ergeben sich folgende Anforgerungen an das Rechenfeld:

• Es muß eine ausreichende Anzahl von Gatteraquivalenten zur Verfugung

stellen.

• Die Anordnung der FPGAs als Teilprozessoren soll regelmaßig sein. Ziel der

Chipentwicklung ist es, eine regelmaßige Realisierung zu erreichen.

• Die einzelnen FPGAs sind uber lokale Busse miteinander verbunden. Lo-

kale Verbindungen direkt benachbarter FPGAs sind ausreichend, da mit dem

Lokalisierungstool von COMPAR globale Datenabhangigkeiten im implemen-

tierten Algorithmus aufgelost werden konnen. Uber diese Verbindungen ge-

langen sowohl die Rechendaten als auch die Steuerdaten, die Information

uber den momentanen Zustand im implementierten Algorithmus reprasentie-

ren. Zwischen diesen Daten besteht kein qualitativer Unterschied, denn durch

1 Im weiteren bezeichnet der kursiv gedruckte Ausdruck implementierter Algorithmus, die Schaltung (Algorithmus),die auf dem Rechenfeld ablaufen soll.

10

Kapitel 3 Konzept von PAr2

die Generierung einer Steuerung mittels COMPAR lassen sich Steuersignale

wie normale Daten behandeln.

• Die Kommunikation mit dem Host erfolgt am Rand des Rechenfeldes. Dies

ergibt sich praktisch direkt aus der Lokalitat des Algorithmus. Außerdem

erlaubt eine Chiprealisierung des Algorithmus nur Anschlusse am Rand der

Chipflache. Entsprechend ist es sinnvoll, bei einem Rechenfeld analog zu

verfahren.

• Es sollte moglichst viel RAM auf dem Rechenfeld vorhanden sein, um Daten

speichern zu konnen, ohne den Umweg uber den Host nehmen zu mussen,

was viel Zeit in Anspruch nehmen wurde. Die von den FPGAs von XILINX

zur Verfugung stehenden ca. 6k RAM sind nicht ausreichend fur speiche-

rintensive Algorithmen. Außerdem ist dieses RAM nur gegen Verzicht auf

Logikblocke erhaltlich, d.h. es bleiben fur die Kombinatorik der Schaltung

weniger Gatteraquivalente ubrig.

Hauptverwendungszweck des RAMs wird das Speichern von Daten sein, die

durch die Partitionierung anfallen. Eine Partitionierung ist deshalb notig,

weil der implementierte Algorithmus in den seltensten Fallen genau auf das

Rechenfeld “paßt”, d.h. der implementierte Algorithmus muß auf die durch

das Rechenfeld vorgegebenen Ressourcen abgebildet werden [13].

Die Partitionierung besteht in einem Aufteilen des Algorithmus in mehrere

Teilalgorithmen, wobei zwei grundsatzliche Methoden unterschieden werden

konnen. Arbeiten alle Prozessoren des Rechenfeldes parallel an einem Teil-

algorithmus, und die Teilalgorithmen werden sequentiell nacheinander abge-

arbeitet, spricht man von einer Partitionierung nach dem LPGS-Verfahren

(locally parallel, globally sequential). Hierbei wird wird zum Speichern der

Zwischenergebnisse Speicher am Rand des Prozessorfeldes benotigt, um Da-

ten uber mehrer Teilalgorithmen hinweg auszutauschen. Die zweite Methode

ist die LSGP-Partitionierung (locally sequential, globally parallel): Hier arbei-

tet jeder Prozessor einen Teilalgorithmus sequentiell ab, alle Teilalgorithmen

aber werden parallel ausgefuhrt. Dabei benotigt jeder Prozessor seinen eige-

nen Speicher, um die Daten des Teilalgorithmus zu speichern.

Fur eine LSGP-Partitionierung mußte jedem FPGA eigenes RAM zur Verfu-

gung gestellt werden. Damit wurden viel Ressourcen des FPGAs verbraucht,

denn es werden sowohl viele Pins fur die Adressierung und den Datentransfer

zum RAM benotigt, als auch CLBs fur eine Ansteuerschaltung des RAMs.

Da die Kommunikation mit dem Host sowieso eine Sonderbehandlung am

Rand des Rechenfeldes erfordert, geht man davon aus, daß nach dem LPGS-

Verfahren partitioniert wird und somit der Speicher ebenfalls an den Rand

gelegt werden kann.

• Das Rechenfeld soll zweidimensional sein. Diese Vorgabe liegt hauptsach-

lich in der dadurch erreichbaren hoheren Parallelitat begrundet. Außerdem

11

Kapitel 3 Konzept von PAr2

sind zweidimensionale Rechenfelder seltener vertreten und somit weniger gut

untersucht als eindimensionale Anordnungen.

• Die Kommunikation erfolgt synchron. Der Grund hierfur ist der wesentlich

geringere Hardwareaufwand einer synchronen Kommunikation gegenuber ei-

ner asynchronen, die zusatzliche Quittierungsleitungen benotigt. Die Nach-

teile der synchronen Kommunikation sind die Taktverschiebung bei großen

Entfernungen, sowie die Stromspitzen durch das gleichzeitige Schalten der

Elemente.

• Selbstverstandlich soll das Rechenfeld beliebig oft programmierbar sein.

• Debuggingmoglichkeiten sollten so weit wie moglich genutzt werden, da bei

einem experimentellen System jede Form der Uberprufbarkeit willkommen

ist.

• Wunschenswert ist weiterhin eine weitestgehende Modularitat der Hardware,

um sich die Option einer spateren Erweiterbarkeit des Systems offen zu halten.

3.4 Grunduberlegungen

Aus diesen Anforderungen an PAr2 ist das folgende Grundkonzept entstanden.

Das Rechenfeld besteht aus einem quadratischen 3x3 Feld von XILINX

XC4005 FPGAs, die zusammen eine Gatterkapazitat von 45000 Gattern haben.

Die FPGAs sind lokal uber Busse miteinander verbunden und am Rand torusmaßig

geschlossen. Bei 112 I/O Pins der FPGAs und vier benotigten Bussen ergibt sich

eine theoretische Busbreite von 28 Bit. Da SRAMS in Datenbusbreiten von 8 Bit

oder Vielfachen davon ublich sind, wurde als Busbreite 24 Bit gewahlt.

Die Verwaltung des benotigten Speichers am Rand sowie die Kommunika-

tion mit dem Host erfolgt uber FPGAs mit besonderen Steueraufgaben, die in die

Ruckfuhrungen der Rechenfeldverbindungen eingeschleift sind (Ramcontroller-

FPGAs). Sie haben damit die Moglichkeit, die Daten, die das Rechenfeld aus-

tauscht, "mitzuhoren" und zu manipulieren. Da in diesen Daten auch Steuerinfor-

mationen enthalten sind, konnen sie so eine gewunschte Aktion ausfuhren, also

z.B. Daten an den Host schicken bzw. vom Host holen oder Daten ins RAM

schreiben bzw. vom RAM lesen.

Die Aufgaben des Ramcontrollers sollen naher untersucht werden.

Um Daten mit dem Host auszutauschen, ist an jedes Ramcontroller-FPGA

das Interface uber den IFBUS (Interface-Bus) angeschlossen, der sowohl eine

Lese-, als auch eine Schreibrichtung hat. Dies liegt darin begrundet, daß das

Interface bereits getrennt Richtungen fur Lesen und Schreiben vorsieht. Da es

pro Rechenfeldzeile und Rechenfeldspalte jeweils ein Ramcontroller FPGA gibt,

sind an den IFBUS mehrere FPGAs parallelgeschaltet. In Leserichtung (vom

Interface zu den Ramcontrollern) ergibt sich daraus kein Problem, da nur das

12

Kapitel 3 Konzept von PAr2

Interface schreibend auf diesen Teilbus zugreift. In Schreibrichtung sieht das

anders aus, da hier jedes FPGA einen moglichen Datensender darstellt. Dadurch

wird es notig, eine Buskontrolle einzufuhren, die garantiert, daß immer nur ein

Teilnehmer auf den Bus zugreift.

Dafur wurden die unterschiedlichsten Verfahren in Erwagung gezogen. So

ist z.B. eine ubergeordnete Buskontrolle durch das Interface denkbar, das die

Ramcontroller der Reihe nach abfragt und ihnen so die Moglichkeit gibt, ihre

Daten abzusenden (Polling). Eine andere Idee ware, jedem Ramcontroller eine

“Request-Leitung” zum Interface zu legen, mit dem es ihm anzeigt, daß es Daten

senden mochte. Nach Zuteilung der Erlaubnis kann der Ramcontroller den Bus

belegen und seine Daten zum Interface schicken. Dieses Verfahren benotigt so

viele Leitungen am Interface wie es Ramcontroller gibt.

Der Nachteil an diesen Verfahren ist aber, daß der Ramcontroller so seine Da-

ten zwischenspeichern muß, da einige Zeit vergehen kann, bis er den Bus zugeteilt

bekommt. Ein Zwischenspeichern konnte nur entfallen, wenn das Interface in-

nerhalb eines Taktzyklusses des Ramcontrollers den “Sender” ausmachen und die

Daten ubertragen kann. Dies wiederum setzt voraus, daß das Interface (bei sechs

Ramcontrollern) mindestens sechsmal schneller lauft als der Ramcontroller. Zu-

satzlich mußte garantiert werden, daß nicht ein zweiter Ramcontroller zur selben

Zeit Daten sendet, sonst mußte einer von beiden wiederum seine Daten speichern.

Wurde man sich also notgedrungen auf eine Zwischenspeicherung der Daten

einlassen und eine gewisse Zwischenspeichergroße festlegen, mußte man sich

immer noch uberlegen, was passierte, wenn dieser Speicher voll ware. Dann

mußte der Ramcontroller das Rechenfeld anhalten konnen, bis wieder Platz in

seinem Speicher ware. Damit waren zwei Taktleitungen zu den Ramcontrollern

notig: eine, die die Kommunikation mit dem Rechenfeld steuern wurde und

angehalten werden konnte und eine weitere, die die Kommunikation zwischen

Ramcontroller und Interface regeln wurde.

Man sieht, daß diese Uberlegungen zu immer neuen Problemen fuhren. Des-

wegen wurde ein anderes Konzept gewahlt, das die Moglichkeiten von COMPAR

ausnutzt: Um die aufwendige Busarbitrierungsmaßnahmen zu vermeiden, wird

davon ausgegangen, daß jeder Ramcontroller den Zeitpunkt "weiß", wann er den

Bus benutzen darf. Dieses Wissen ist in COMPAR bereits vorhanden, denn die

Arbeitszeitpunkte der Prozessoren sind bekannt und somit auch die Zeitpunkte, an

denen die Ergebnisse der Berechnungen anfallen. Durch Wahl einer Zeitrichtung

in COMPAR (Schedule) ist eine Transformation des Algorithmus so moglich, daß

immer nur ein Ramcontroller zu einer Zeit den Bus benutzt. Dadurch ist die

Buskontrolle in eine hohere Ebene delegiert. Es genugt so, jedem Ramcontroller-

FPGA ein Output-Enable Signal fur seine Bustreiber zur Verfugung zu stellen.

Auf der Gegenseite muß das Interface wissen, wann Daten auf dem Bus gultig

13

Kapitel 3 Konzept von PAr2

sind. Denn es ist durchaus denkbar, daß mehrere Taktzeitpunkte kein Ramcon-

troller Daten zu senden hat. Dieses Problem wird in [7] diskutiert. Prinzipiell

ware es auch moglich, alle Daten einfach an den Host weiterzugeben, und diesen

erst die Unterscheidung treffen zu lassen, ob die Daten gultig oder ungultig sind.

Dies ist aber eine ungunstige Losung, da so viele unnotige Daten zum Host trans-

portiert wurden und der Bus zwischen Interface und Host, der sowieso schon den

Flaschenhals in der Kommunikation darstellt, zusatzlich belastet wurde.

Man benotigt nun zwar immer noch einen Mechanismus, um das gesamte Re-

chenfeld mit Ramcontroller anhalten zu konnen, aber jetzt kann dies das Interface

allein entscheiden. Denn der einzig denkbare Ausloser dafur ist das Uberlaufen

des Schreib-FIFOS bzw. das Leerlaufen des Lese-FIFOs im Interface. Außer-

dem besteht bei dieser Losung die Moglichkeit, andere Arbitrierungsverfahren

nachtraglich durch Programmieren der FPGAs zu realisieren, indem man einige

Leitungen des IFBUS fur diese Zwecke reserviert.

Das RAM ist ebenfalls an den Ramcontroller angeschlossen und soll pro

Taktzyklus sowohl einen Lese- als auch einen Schreibzugriff gestatten. Dies

erlaubt es beispielsweise gleichzeitig Daten vom RAM zum Interface zu senden

und Daten vom Rechenfeld in das RAM zu schreiben.

Insgesamt ergibt sich aus diesen Uberlegungen das in Bild 5 am Beispiel

eines 2x2–Feldes gezeigte Prinzipschaltbild.

Wie dort zu ersehen ist, mussen an ein Ramcontroller-FPGA die Busse

zweier Rechenfeld-FPGAs, Adreß- und Datenbus des RAMs sowie der IFBUS

zur Kommunikation mit dem Interface angeschlossen werden. Die verwendeten

XC4005 FPGAs stellen wie erwahnt 112 I/O-Pins zur Verfugung. Die Ramcon-

troller benotigen bei einer Busbreite von 24 Bit und 64k Adreßraum insgesamt

6*24+2*16=176 Pins. Es sollten aber keine großeren Chips der XC4000–Serie

verwendet werden, da diese erheblich teurer sind. Der Preis steigt hierbei etwa

quadratisch mit der Anzahl der zur Verfugung stehenden CLBs. Nicht unerheblich

ist auch das geometrische Problem, das im Layout entsteht, wenn so viele Leitun-

gen gezogen werden mussen. Es wird auch zunehmend schwieriger, ein Design

zu routen, je großer der Chip ist, da die Ressourcen an Verbindungsleitungen

zwischen den CLBs konstant sind.

Um also den Leitungsbedarf am Ramcontroller zu vermindern, wird ein

Multiplexen auf allen Bussen des Ramcontroller-FPGAs eingefuhrt. Man faßt

dazu die Lese- und Schreibleitungen eines Busses zusammen und benotigt dadurch

nur noch die halbe Anzahl der Leitungen, muß das Lesen und Schreiben dafur

nacheinander innerhalb eines Taktzyklus auf denselben Leitungen durchfuhren.

Die Datenrate auf den Bussen wird dadurch doppelt so hoch wie die Taktrate

von PAr2. Dies begrundet auch den Nachteil des Multiplexens: Da sich die maxi-

male Taktrate im wesentlichen nach der hochsten vorkommenden Datenrate in der

14

Kapitel 3 Konzept von PAr2

Interface-Adapter

Clock-generator

INTERFACE

Rechenfeld

FPGA

Rechenfeld

FPGA

Rechenfeld

FPGA

Rechenfeld

FPGA

Ramcontroller

Ramcontroller

Ram

cont

rolle

r

Ram

cont

rolle

r

Bild 5 Prinzipschaltbild von PAr2 — Kommunikation

Schaltung richtet, fuhrt es zu einer Halbierung der Taktrate des gesamten Rechen-

feldes. Da man auf diese Weise aber eine Halbierung der Anzahl der Leitungen

am Ramcontroller erreicht, ist dieser Nachteil tolerierbar. Dies gilt insbesondere

dann, wenn wahrend der Laufzeit des Algorithmus große Datenmengen vom oder

zum Host transportiert werden mussen. In einem solchen Fall nutzt eine hohere

Taktrate namlich wenig, da die Datenubertragungsrate vom Host bzw. Inter-

face bestimmt wird. Bei hoherer Verarbeitungsgeschwindigkeit des Rechenfeldes

mußte das Rechenfeld nur um so ofter angehalten werden, da der Host nicht mehr

nachkommt, die Daten abzunehmen bzw. bereitzustellen. Außerdem konnen als

RAM nun konventionelle SRAMs eingesetzt werden, die erheblich preisgunstiger

und in großeren Speicherkapazitaten als Dual-Port RAM erhaltlich sind.

Das in Bild 5 gezeigte Prinzipschaltbild stellt also nicht die physikalische

Wirklichkeit dar, wie die Komponenten von PAr2 verbunden sind. Es zeigt

vielmehr das “Prinzip” in dem Sinne, wie die Hardware fur den implementierten

15

Kapitel 3 Konzept von PAr2

Bust

reib

er

RamcontrollerFPGA

Steuerung

Pfad-kontrolle

Adressen

Daten

Daten

Adressen

RA

MSch

reib

enLese

n

Rec

henf

eld-

FP

GA

s

IFB

US

Bild 6 Prinzipschaltbild Ramcontroller zu Bild 5

Algorithmus aussieht. Es ist somit ein “virtuelles” Prinzipschaltbild im Gegensatz

zu den physikalischen Prinzipschaltbildern zur Kommunikation im folgenden

Kapitel (Bild 9, 11 und 13).

Zusatzlich zu diesen prinzipiellen Komponenten gibt es einen globalen Bus

(General Purpose Bus, GPBUS), an dem alle FPGAs des Rechenfeldes und die

der Ramcontroller angeschlossen sind (siehe Bild 7). Obwohl dieser globale

Bus dem eigentlichen Konzept der Lokalitat des Algorithmus widerspricht, wurde

er eingefuhrt, um keine Leitungen an dem FPGA ungenutzt zu lassen. Denn

dadurch, daß die Busbreite auf 24 Bit festgesetzt wurde, sind abzuglich reservierter

Leitungen 10 Leitungen an jedem FPGA frei. Außerdem sind Anwendungen

denkbar, in denen dieser Bus sinnvoll genutzt werden kann. Da dieser Bus auch

zu den sieben nicht benotigen Global Primary bzw. Secondary Buffer (siehe

Kapitel 3.1) fuhrt, konnen hiermit beispielsweise zusatzliche Taktsignale verteilt

werden.

Zur Programmierung von PAr2 mussen die Programmdaten an die einzelnen

FPGAs geleitet werden und sichergestellt werden, daß nur ein FPGA gleichzeitig

programmiert wird. Dies erfolgt uber die Zuordnung einer Adresse zu jedem

FPGA, das nur dann an die Programmierleitungen angeschlossen wird, wenn

die ensprechende Adresse anliegt. Die Programmierung erfolgt dann uber einen

Befehl an das Interface, das die Daten in das entsprechende FPGA leitet.

Um einen Algorithmus debuggen zu konnen, wurde die Moglichkeit des

READBACKS der XILINX FPGAs auch in PAr2 vorgesehen. Mit demselben

Mechanismus wie bei der Programmierung kann ein FPGA angesprochen werden

und der interne Zustand der Register im Chip ausgelesen werden. Die Leitungen

16

Kapitel 3 Konzept von PAr2

zum Programmierung und Debuggen der FPGAs sind zu dem PRBUS (Programm

& Readbackbus) zusammengefaßt.

Rechenfeld

FPGA

Rechenfeld

FPGA

Rechenfeld

FPGA

Rechenfeld

FPGA

Interface-Adapter

Clock-generator

INTERFACE

Tris

tate

buffe

r

Tristatebuffer

FPGA

Tris

tate

buffe

r

FP

GA

Tris

tate

buffe

r

FP

GA

Tris

tate

buffe

r

Tris

tate

buffe

r

Tris

tate

buffe

r

Tristatebuffer

FPGA

PRBUS (Program&Readback)

GP

BU

S (G

eneral Purpose)

Bild 7 Prinzipschaltbild von PAr2 — Programmierung, Readback und globaler Bus.

Aus der beschriebenen Notwendigkeit, die gesamte Hardware von PAr2 an-

halten zu konnen, ergibt sich in Verbindung mit dem READBACK-Mechanismus

eine komfortables Fehlersuchverfahren. So ist es moglich, den Algorithmus im

Einzel-Schritt-Verfahren abzuarbeiten und nach jedem Taktzyklus die internen Zu-

stande der FPGAs auszulesen und zu uberprufen.

17

Kapitel 4 Die Komponenten von PAr2

4 Die Komponenten von PAr2

Die Hauptaufgabe bei der Konzeption und Realisierung von PAr2 bestand

darin, die Kommunikationsmittel fur den implementierten Algorithmus bereitzu-

stellen. Nach der Festlegung des Grundkonzepts im vorangegangenen Kapitel

soll hier im einzelnen beschrieben werden, wie die Kommunikation der Elemente

Rechenfeld, Ramcontroller mit RAM und Interface von PAr2 geregelt ist. Im

Anschluß daran werden die fur diese Kommunikation benotigten Taktsignale ab-

geleitet und deren optimaler Verlauf bestimmt. Kapitel 4.4 befaßt sich mit dem

Registermodell von PAr2. Dieses Modell stellt eine Abstraktion von der physika-

lischen Realisierung der Kommunikation dar und ermoglicht eine Beschreibung

durch fest definierte Schnittstellen an den FPGA-Grenzen. Der letzte Abschnitt

dieses Kapitels befaßt sich mit der Programmierung der FPGAs.

Grundsatzlich geht das Konzept davon aus, daß zu jedem Taktzyklus der

globalen Clock (ComCLK , Communikation CLocK) einmal Daten von jeder

Datenquelle anfallen konnen, also von den FPGAs des Rechenfeldes, des Ram-

controller, vom RAM und vom Interface. Daß in der Regel beim implementierten

Algorithmus nicht in jeden Taktzyklus ein Datum anfallt, stort dabei nicht, denn

die transportierten Daten konnen von dem implementierten Algorithmus einfach

nicht beachtet werden.

Den “Flaschenhals” in der Kommunikation zwischen Host und PAr2 bildet

hierbei sicherlich das Interface. Bei der gewahlten Busbreite von 24 Bit und

einer Kommunikation in beiden Richtungen vom und zum Interface mit einer

Taktfrequenz von 8 MHz fallen am Interface 24*8*2/8 = 48 MB pro Sekunde

an. Dies ist in seiner jetzigen Implementierung vom Interface bei einer Datenrate

von 8MB/s nicht zu bewaltigen, so daß eine Moglichkeit bestehen muß, das

gesamte System von PAr2 vom Interface aus anzuhalten, wenn das Interface die

Daten nicht weiterleiten kann. Dieser Fall kann dabei nicht nur durch den hohen

Datendurchsatz auftreten, sondern ebenso bei Kommunikationsengpassen mit dem

Host.

4.1 Rechenfeld

4.1.1 Aufgabe

Das Rechenfeld besteht aus einem 3x3 Feld von XILINX XC4005 FPGAs

und stellt somit eine Gatterkapazitat von ca 45000 Gattern zur Verfugung. Die

FPGAs sind durch lokale 24 Bit breite Busse miteinander verbunden. Hier soll

der implementierte Algorithmus ablaufen.

18

Kapitel 4 Die Komponenten von PAr2

4.1.2 Kommunikation der Rechenfeld FPGAs untereinander

Die Verbindungen der Rechenfeld-FPGAs untereinander sind unidirektional

und statisch fur den gesamten Ablauf eines Algorithmus. Das ist auch sinnvoll,

denn eine Umkehr des Datentransfers auf einer Leitung wahrend der Laufzeit

des Algorithmus ist ausgeschlossen. Allerdings ist die Richtung des Datenflusses

auf Grund der freien Programmierbarkeit der IOBs der XILINX FPGAs fur jede

Leitung unabhangig von den Richtungen der anderen Leitungen moglich.

Die Kommunikation zwischen zwei benachbarten Rechenfeld FPGAs gestal-

tet sich relativ einfach (Bild 8). An der Datenquelle der Leitung wird das IOB des

entsprechenden FPGAs auf Ausgang mit vorgeschaltetem Register programmiert.

An der Datensenke des anderen FPGAs befindet sich ein auf Eingang program-

miertes Register im IOB. Beide Register, bei der Quelle wie bei der Senke, werden

mit steigender Taktflanke von ComCLK beschrieben. Die Daten haben also eine

Taktperiode von ComCLK Zeit, um von einem FPGA zum anderen zu gelangen.

BIT A

C

D Q

U3

OUTFF

C

D Q

QM

U1

INREG

BIT A

ComCLK ComCLK

BIT B

C

DQ

U4

OUTFF

C

DQ

QM

U2

INREG

BIT B

Rechenfeld FPGA 1 Rechenfeld FPGA 2

Bild 8 Kommunikation zwischen zwei Rechenfeld-FPGAs.

4.1.3 Kommunikation zwischen Rechenfeld und Ramcontroller

In Kapitel 3.4 wurde das Multiplexen aller Leitungen zum Ramcontroller

eingefuhrt, um das Leitungsproblem am Ramcontroller zu losen. Die dafur

notwendige Multiplexschaltung zeigt Bild 9. Der gesamte Mehraufwand an

Hardware gegenuber unidirektionalen Verbindungen kann in den IOBs der FPGAs

untergebracht werden. Sie verfugen bereits uber Tristate-Ausgangstreiber sowie

Ein- und Ausgaberegister innerhalb eines IOBlocks (vgl Bild 2). Es gehen somit

keine CLBs und damit Gatteraquivalente innerhalb der FPGAs verloren.

19

Kapitel 4 Die Komponenten von PAr2

U3

OUTFFT

U7INV

BIT A

C

DQ

QM

U2

INREG

ComCLK

BIT B

ComCLK

C

DQ

QM

U1

INREG

U4

OUTFFT

U8

INV

BIT A

BIT B

ComCLK

U9

INV

U5

OUTFFT

BIT A

BIT A out

BIT A in

C

D Q

QM

U6

INREG

U10

OUTFFT

U12

INVBIT B out

BIT B

C

D Q

QM

U11

INREG

BIT B in

Rechenfeld FPGA 1

Rechenfeld FPGA 2

Ramcontroller

Bild 9 Kommunikation zwischen Rechenfeld und Ramcontroller

Fur dieses Multiplexen schließt man alle einander entsprechenden Datenleitun-

gen der beiden FPGAs und des Ramcontrollers kurz, also Bit A von Rechenfeld-

FPGA 1 mit Bit A von Rechenfeld-FPGA 2 und Bit A des Ramcontrollers usw.

In Bild 9 ist ein Beispiel fur zwei Bit mit unterschiedlichen Richtungen gezeigt.

In der ersten Halfte des Taktes (ComCLK=H) liest der Ramcontroller auf al-

len 24 Leitungen des Busses Daten ein. Dazu werden die Tristate-Ausgangsteiber

in den Rechenfeld-FPGAs aktiviert (active-low) und so die Daten auf die Lei-

tung gelegt. Dabei spielt es fur den Ramcontroller keine Rolle, welches der

beiden FPGAs nun auf welcher Leitung Daten ausgibt. Da die Leitungen vom

implementierten Algorithmus aus unidirektional sind, kann es nicht zu einer Da-

tenkollision kommen, denn es kann nur entweder FPGA1 oder FPGA2 an dieser

Leitung auf Ausgang programmiert sein. Das andere FPGA muß auf diesem Bit

einen Dateneingang programmiert haben. Sind die Daten stabil, werden sie mit

fallender Taktflanke von ComCLK in den Ramcontroller eingelesen (vgl Bild 10).

In der zweiten Takthalfte (ComCLK=L) werden die Tristate- Ausgangstreiber

der Rechenfeld-FPGAs deaktiviert und der Ramcontroller legt seine Daten auf den

Bus. Daraufhin ubernehmen die Rechenfeld-FPGAs mit steigender Taktflanke von

ComCLK die Daten. Auch hier gilt, daß nur entweder FPGA1 oder FPGA2 des

Rechenfeldes an einer Leitung einen Eingang programmiert haben kann.

Von "innen" betrachtet sieht dieses Kommunikationsschema fur die FPGAs

des Rechenfeldes aus, als hatten sie jeder einen eigenen 24 Bit breiten Bus

20

Kapitel 4 Die Komponenten von PAr2

zum Ramcontroller. Auf diesem werden pro Taktperiode von ComCLK genau

einmal (mit steigender Flanke von ComCLK) die Daten aus den Eingangsregister

eingelesen bzw. in die Ausgangsregister geschrieben. Die Rechenfeld-FPGAs

arbeiten also mit der Taktfrequenz von ComCLK.

Der Ramcontroller "sieht" einen 24 Bit breiten bidirektionalen Bus, bei dem

die Leserichtung zu einem, die Schreibrichtung zu dem anderen FPGA des Re-

chenfeldes fuhrt. Welche Richtung zu welchem Rechenfeld-FPGA fuhrt, ent-

scheidet sich erst bei der Programmierung von PAr2 durch Festlegen der Daten-

richtungen in den Rechenfeld-FPGAs. Der Ramcontroller arbeitet ebenfalls mit

der Taktfrequenz von ComCLK. Da der Ramcontroller die Daten bei fallender

Taktflanke ubernimmt, das Rechenfeld jedoch bei steigender, herrscht zwischen

den Ramcontrollern und Rechenfeld eine Phasenverschiebung von 180 Grad bzw.

einem halben Takt. Der Ramcontroller wird deshalb mit dem invertierten Signal

von ComCLK, also ComCLK betrieben. Dann arbeiten alle internen Register des

Ramcontrollers ebenfalls mit steigender Flanke, allerdings mit steigender Flanke

von ComCLK.

Aus der obigen Darstellung ergibt sich, daß die FPGAs am Rand des Re-

chenfeldes nicht direkt miteinander kommunizieren konnen, sondern ihre Daten

immer durch den Ramcontroller schicken mussen, wie das in den Grunduberle-

gungen in Kapitel 3.4 (Bild 5) dargelegt wurde. Selbst wenn dieser die Daten

einfach nur weitergibt, ergibt sich eine großere Registeranzahl als zwischen zwei

FPGAs innerhalb des Rechenfeldes. Darauf wird in Kapitel 4.4 eingegangen.

ComCLK

RF out= RC in

Data valid

Data validRC out=RF in

ComCLK

Datenübernahme RC Datenübernahme RF

1. Takthälfte 2.Takthälfte 1. Takthälfte

Datenübernahme RF

resultierenderSignalverlauf

Data validRF RC

Data validRC RF

Data validRF RC

Data valid

Bild 10 Prinzipielles Timingdiagramm fur die Kommunikation

zwischen Rechenfeld (RF) und Ramcontroller (RC).

21

Kapitel 4 Die Komponenten von PAr2

Der IOB eines Pins eines auf Ausgang programmierten Rechenfeld-FPGAs

sieht fur die Busse innerhalb des Rechenfeldes (vgl. Bild 8) anders aus, als fur

die Rander, die zu den Ramcontrollern fuhren (Bild 9). Diese Unregelmaßigkeit

laßt sich aber durch das Einfuhren fester Signalbezeichnungen im FPGA (Kapitel

4.5) vor dem implementierten Algorithmus verbergen.

4.2 Ramcontroller

4.2.1 Aufgabe

Die Ramcontroller sind die Steuerzentralen der Rechenfeldes. Sie sind die

Ruckleitungen der Rechenfeld-FPGAs eingeschleift und konnen so die Daten im

Rechenfeld verfolgen und beeinflussen. Je nach gewunschter Aktivitat werden

dann Daten vom Host gelesen oder an den Host gesendet, oder Daten ins RAM

geschrieben oder vom RAM gelesen. All diese Aktionen werden durch die

Steuerdaten, die auf den Bussen des Rechenfeldes fließen und vom Interface

kommen, bestimmt.

Die Auswertung der Steuerinformation des Rechenfeldes ist dabei offen gelas-

sen. In dieser Arbeit werden nur die entspechenden Schnittstellen zum Rechenfeld,

Host und RAM zur Verfugung gestellt. Die Verbindung dieser Komponenten hangt

vom implementierten Algorithmus ab und muß mit dessen Programmierung auch

in den Ramcontroller-FPGAs definiert werden. Dies ist durchaus beabsichtigt;

denn eine Spezialisierung von der Hardwareseite auf ein bestimmtes Steuerungs-

schema schrankt die Klasse der bearbeitbaren Algorithmen ein.

Die Hauptaufgabe des Speichers am Rand wird in den meisten Fallen das

Zwischenspeichern der Daten fur eine bestimmte Anzahl von Taktzyklen sein,

der Speicher wird also als FIFO (First In – First out) genutzt werden. Allerdings

ist es durchaus denkbar, daß mehrere FIFOs unterschiedlicher Tiefe auf verschie-

denen Bits des Datenbusses realisiert werden mussen. Wollte man diese FIFOs

durch eine allgemeine Schaltung unabhangig vom implementierten Algorithmus

realisieren, hatte man sich auf eine bestimmte maximale Anzahl von FIFOs un-

terschiedlicher Tiefe festlegen und ihnen feste Bitnummern zuordnen mussen.

Dies wurde die Klasse der abarbeitbaren Algorithmen aber sehr einschranken.

Mit der jetzt zur Verfugung stehenden freien Gatterkapaziat von ca 4100 Gat-

tern pro Ramcontroller-FPGA kann man eine individuelle Darstellung des RAMs

fur jeden implementierten Algorithmus gut realisieren. Da diese Realisierung re-

lativ komplex ist, ist dabei an eine Bibliothek von Standardlosungen gedacht, aus

der fur den speziellen Fall eine Ansteuerung “maßgeschneidert” werden kann.

22

Kapitel 4 Die Komponenten von PAr2

4.2.2 Kommunikation zwischen Ramcontroller und Interface

Die Ramcontroller sind uber den Interface-Bus (IFBUS) mit dem Interface

verbunden. Dieser besteht aus zwei 24 Bit breiten Teilbussen fur Lesen und

Schreiben.

Mit derselben Uberlegung wie bei der Kommunikation zwischen Rechenfeld

und Ramcontroller (4.1.3) kann man die Leitungsanzahl am Ramcontroller in

Richtung Interface halbieren. Die zwei getrennten Busse fur Datenein- und

Datenausgabe werden an jedem Ramcontroller uber Bustreiber zusammengefaßt

(Bild 11).

ComCLK

U3

INV

U1

OUTFFT

XU1

1/6 74F245

IFBUS (READ)

BOE

C

D Q

U6

OUTFF

BIT A out

ComCLK

U5

BIT A

C

D Q

QM

U2

INREG

BIT A out

BIT A in

RCOE

C

DQ

U4

OUTFF

RCBOE

C

DQ

QM

INREG

XU2

1/6 74F245

IFBUS (WRITE)BIT A in

Interface Ramcontroller FPGARamcontrollerIFBUS

ComCLK

FPGA Write-Control

FPGA Read-Control

Bild 11 Kommunikation zwischen Ramcontroller und Interface

Betrachten wir zunachst den Datentransfer vom Ramcontroller zum Interface

uber den Write-Bus. Hat der Ramcontroller Daten zu senden, liegen sie an “Bit

A out” an. Gleichzeitig muß die Steuereinheit des Ramcontrollers an der Leitung

RCOE ein Low anlegen (fur die Signalverlaufe siehe auch Bild 12). Mit der

nachsten steigenden Flanke von ComCLK werden die Daten in die IOB-Register

ubernommen. Dadurch wird das Signal RCBOE low und der Bustreiber XU2

aktiv. Gleichzeitig hiermit wird der Bustreiber eines anderen Ramcontrollers, der

eventuell vorher den Bus belegt hat, inaktiv, da bei ihm RCOE high sein muß. Der

WRITE-Bus ist nun ausschließlich von diesem FPGA belegt. Solange ComCLK

high ist, ist der Ausgangstreiber im OUTFFT durchgeschaltet, und die Daten

gelangen uber die Tristatetreiber XU2 und den IFBUS(WRITE) zum Interface.

Wechselt ComCLK von High auf Low, ist das gleichbedeutend mit einem Wechsel

von ComCLK von Low auf High, was eine Ubernahme der angelegten Daten in

die IOBs des “FPGA Write-Control” des Interface zur Folge hat.

Nun erfolgt der Datentransfer in die andere Richtung (Ramcontroller-READ).

Mit dem Wechsel von ComCLK auf High wurden die im “FPGA Read-Control”

23

Kapitel 4 Die Komponenten von PAr2

an “Bit A out” anliegenden internen Daten in OUTFF ubernommen und gelangen

uber IFBUS(READ) an XU1. Gleichzeitig wird der Tristatetreiber im Ramcon-

troller FPGA inaktiv. Analog zur Schreibrichtung wurde man den Tristatetreiber

XU1 mit ComCLK steuern. Da das Aktivieren dieses Treibers aber wesentlich

schneller geschieht als das Abschalten des Treibers in den FPGAs, wurde aus Si-

cherheitsgrunden ein zusatzliches Signal BOE eingefuhrt, dessen fallende Flanke

gegenuber der von ComCLK verzogert ist. Solange dieses Signal Low ist, liegen

die Daten an U2 (INREG) des Ramcontrollers an. Hier werden sie mit steigender

Flanke von ComCLK ubernommen. Damit wird auch BOE wieder High und der

Treiber XU1 inaktiv und ein Schreib-/Lesezyklus ist abgeschlossen.

Wahrend der Ramcontroller-READ-Phase bleibt der Treiber XU2 aktiv, wo-

durch die Lesedaten auch uber den IFBUS(WRITE) an den INREGs des Interface

anliegen. Dies stort aber nicht, da die Daten nur mit steigender Taktflanke von

ComCLK ins Interface ubernommen werden. Die Daten liegen aber nur solange

an, bis ComCLK wieder Low wird.

4.2.3 Kommunikation zwischen Ramcontroller und RAM

Als RAM wurde statischer Speicher gewahlt, da er ohne komplizierte Refresh-

Schaltungen auskommt und die benotigten kurzen Zugriffszeiten von 12ns ermo-

glicht.

Der Speicher wird ebenfalls innerhalb eines Taktes von ComCLK sowohl

gelesen als auch geschrieben. Dazu verfugen die Datenleitungen zum RAM

uber denselben Multiplex-Mechanismus wie bei den Rechenfeld- bzw. Interface-

Anschluss. Die Adreßleitungen mussen aber ebenfalls gemultiplext werden, da-

mit das Schreiben an einer anderen Adresse wie das Lesen innerhalb des selben

Taktzyklus moglich ist. Diese Multiplexschaltung ist in Bild 13 gezeigt. Sie

stellt dem Ramcontroller intern getrennte Adreßleitungen fur Lesen (RADR0–14)

und Schreiben (WADR0–14) zur Verfugung, die synchron mit steigender Takt-

flanke von ComCLK ubernommen werden. Mit dieser Taktflanke werden auch

die Schreibdaten der angelegten Schreibadresse in die Datenbus-IOBs ubernom-

men. Ebenfalls gleichzeitig erscheinen die Lesedaten der Ramadresse des letzten

Taktzyklus am internen Eingang der FPGAs.

Im nachsten Takt werden zuerst bei ComCLK=H die Schreibadressen auf

den Adreßleitungen ausgegeben. Gleichzeitig sind die Datenleitungen des FPGAs

mit ComCLK=H auf Ausgang geschaltet. Das WE-Signal der RAMs wird nach

Einhalten der Adreßhaltezeit global auf Low gesetzt, wodurch die Daten in

das RAM geschrieben werden. Geht das WE-Signal wieder auf High, ist der

Schreibzugriff beendet. Dies erfolgt gleichzeitig mit dem Wechsel von ComCLK

auf Low. Damit werden zum einen an den Adreßleitungen die Leseadresse

ausgegeben, zum anderen die DatenbusIOBs des Ramcontrollers auf Eingang

24

Kapitel 4 Die Komponenten von PAr2

ComCLK

Data valid

Datenübernahme RCDatenübernahme IF

ComCLK

resultierenderSignalverlauf(RCPAD)

Data valid IF RC

Data validRC IF

Data valid IF RC

IFBUS(READ)

BOE

RCBOE

RC out(RCPAD)

IFBUS(WRITE)

RC in(RCPAD)

Data valid Data valid

Data valid

Datenübernahme IF

(falsche Daten)

Buskontrolle bei diesem Ramcontroller

Bild 12 Prinzipielles Timingdiagramm fur die Kommunikation

zwischen Ramcontroller(RC) und Interface(IF) uber den IFBUS.

geschaltet. Nach Abwarten der Adreßhaltezeit wird mittels des globalen OE-

Signals die Daten vom RAM auf den Datenbus gelegt. Mit steigender Taktflanke

von ComCLK werden diese Daten ins FPGA eingelesen und der Ablauf beginnt

von vorne.

Da die Schaltung vollig synchron mit globalen Taktsignalen arbeitet, wurden

Daten in jedem Taktzyklus sowohl vom RAM gelesen als auch ins RAM ge-

schrieben. Es ist aber durchaus denkbar, daß nicht in jedem Taktzyklus Daten fur

das RAM anfallen. Die vom RAM gelesen Daten storen dabei wenig, sie konnen

von dem implementieren Algorithmus einfach ignoriert werden. Das Schreiben

von Daten ins RAM muß jedoch in einem solchen Fall verhindert werden, da

nicht garantiert werden kann, daß uber mehrere Taktzyklen am internen Datenbus

25

Kap

itel4

Die

Ko

mp

on

enten

vo

nPA

r2

U12

OBUF

F27

SC

U36

OPAD

BLKNM=ADR0,FAST,LOC=N14

ADR0

wadrq016M2-1

..\16M2-1\16M2-1.SCH

A0

A1

A3

A4

A5

A6

A7

A8

A9

A10

A11

A12

A13

A14

A15

A2

B0

B1

B2

B3

B4

B5

B6

B7

B8

B9

B10

B11

B12

B13

B14

B15

SE

O0

O1

O2

O3

O4

O5

O6

O7

O8

O9

O10

O11

O12

O13

O14

O15

F1

SC

F2

SC

F3

SC

F4

SC

F5

SC

F6

SC

F7

SC

F8

SC

F9

SC

F10

SC

F11

SC

F12

SC

F13

SC

D0

D1

D2

D3

D4

D5

D6

D7

D8

D9

D10

D11

D12

D13

D14

D15

CE

Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

Q8

Q9

Q10

Q11

Q12

Q13

Q14

Q15

CRD

U4

RD16wadr0

wadr0

wadr1

wadr2

wadr3

wadr4

wadr5

wadr6

wadr7

wadr8

wadr9

wadr10

wadr11

wadr12

wadr1

wadr2

wadr3

wadr4

wadr5

wadr6

wadr7

wadr8

wadr9

wadr10

wadr11

wadr12

U23

VCC radrq0

radrq1

wadrq1

wadrq2

wadrq3

wadrq4

wadrq5

wadrq6

wadrq7

wadrq8

wadrq9

wadrq10

wadrq11

wadrq12

U6

OBUF

U7

OBUF

U8

OBUF

F28

SC

F29

SC

F30

SC

U37

OPAD

BLKNM=ADR1,FAST,LOC=P15

U38

OPAD

BLKNM=ADR2,FAST,LOC=N15

U39

OPAD

BLKNM=ADR3,FAST,LOC=M14

ADR1

ADR2

ADR3

U13

OBUF

U14

OBUF

U16

OBUF

F31

SC

F32

SC

F33

SC

F34

SC

U40

OPAD

BLKNM=ADR4,FAST,LOC=P16

U41

OPAD

BLKNM=ADR5,FAST,LOC=L15

U42

OPAD

BLKNM=ADR6,FAST,LOC=M16

ADR4

ADR5

ADR6

radrq2

radrq3

radrq4

radrq5

radrq6

radrq7

radrq8

radrq9

radrq10

radrq11

radrq12U1

GND

D0

D1

D2

D3

D4

D5

D6

D7

D8

D9

D10

D11

D12

D13

D14

D15

CE

Q0

Q1

Q2

Q3

Q4

Q5

Q6

Q7

Q8

Q9

Q10

Q11

Q12

Q13

Q14

Q15

CRD

U5

RD16radr0

radr1

radr2

radr0

radr1

radr2

radr3

radr4

radr5

radr6

radr7

radr8

radr9

radr10

radr11

radr12

F14

SC

F15

SC

F16

SC

radr3

radr4

radr5

radr6

radr7

radr8

radr9

radr10

radr11

radr12

U24

VCC

F17

SC

F18

SC

F19

SC

F20

SC

F21

SC

F22

SC

F23

SC

F24

SC

F25

SC

F26

SC

U15

OBUF

U17

OBUF

U20

OBUF

F35

SC

F36

SC

F37

SC

U43

OPAD

BLKNM=ADR7,FAST,LOC=L16

U44

OPAD

BLKNM=ADR8,FAST,LOC=K14

U45

OPAD

BLKNM=ADR9,FAST,LOC=K15

ADR7

ADR8

ADR9

U9

OBUF

U10

OBUF

U18

OBUF

U19

OBUF

F38

SC

F39

SC

U46

OPAD

BLKNM=ADR10,FAST,LOC=K16

U47

OPAD

BLKNM=ADR11,FAST,LOC=J16

U48

OPAD

BLKNM=ADR12,FAST,LOC=J15

ADR10

ADR11

ADR12

VCC

U25

VCC

F48

SC

F49

SC

F50

SC

F51

SC

U2

GND

wadr13

wadr14

wen=L : active

w\e\n\wen

A0

A1

O0

O1

O2

O3

U27

D2-4

wadr13

wadr14

CE

D0

D1

D3

Q0

Q1

D2

R

Q2

Q3

C

U22

RD4R

4M2-1

..\4M2-1\4M2-1.SCH

A0

A1

A2

A3

B0

B1

B2

B3

SE

O0

O1

O2

O3

U32

INV

F44

SC

F45

SC

U11

OBUF

U28

OBUF

F40

SC

F41

SC

U49

OPAD

BLKNM=ADR13,FAST,LOC=H16

U50

OPAD

BLKNM=ADR14,FAST,LOC=G16

U51

OPAD

BLKNM=BANK0,FAST,LOC=G15

ADR13

ADR14

U29

OBUF

U30

OBUF

U31

OBUF

F42

SC

F43

SC

U52

OPAD

BLKNM=BANK1,FAST,LOC=G14

U53

OPAD

BLKNM=BANK2,FAST,LOC=F16

U54

OPAD

BLKNM=BANK3,FAST,LOC=E16

U33

INV

U34

INV

U35

INV

F46

SC

F47

SC

CE

D0

D1

D3

Q0

Q1

D2

R

Q2

Q3

C

U21

RD4R

F52

SC

F53

SC

F54

SC

F55

SC

ren

A0

A1

O0

O1

O2

O3

U26

D2-4

radr13

radr14

radr13

radr14

ren=L : active

r\e\n\

ComCLK

U3

INV

Bild

13

Adreß

multip

lexer

der

Ram

contro

ller

des

FP

GA

sg

ultig

eS

chreib

daten

ansteh

en.

Dieser

Sch

reibsch

utz

erfolg

tuber

das

CS

Sig

nal

des

RA

Ms,

das

nur

dan

nau

fL

ow

ist,w

enn

amW

EN

Ein

gan

gdes

Adreß

multip

lexers

eben

fallsein

Low

anlieg

t.L

iegt

dort

einH

igh

anw

erden

zwar

die

Sch

reibad

ressenau

sgeb

enund

Sch

reibdaten

anden

Daten

bus

geleg

t,au

chden

WE

-Sig

nal

kom

mt

aufg

rund

der

glo

balen

Gen

erierung

dieses

Sig

nals

amR

AM

an,

weil

CS

aber

Hig

hist,

werd

endie

Daten

nich

tubern

om

men

.A

us

Sym

metrie-

gru

nden

wurd

efu

rdie

Leserich

tung

das

analo

ge

Sig

nal

RE

Nein

gefu

hrt.

26

Kapitel 4 Die Komponenten von PAr2

ComCLK

Data valid

ComCLK

resultierenderSignalverlauf(Datenbus)

Data validRam RC

Data validRC Ram

RAMWE

RC out

Data valid Data valid

OE

Ram out

Adresse Read Adresse ReadAdresse WriteRamadresse

Datenübernahme RC Datenübernahme RamDatenübernahme Ram

Data validRam RC

Bild 14 Prinzipielles Timingdiagramm fur die Kommunikation zwischen Ramcontroller und RAM.

Mit Hilfe des CS Signals am RAM wird es auch moglich, mehrere RAM-

Bausteine parallel zu schalten und nur uber das CS Signal auszuwahlen, welches

RAM angesprochen wird. Auf diese Weise wurden 4 parallele BANKs vorge-

sehen, deren Auswahl uber die obersten Adreßbits erfolgt. Die Schaltung wie

sie jetzt vorliegt, ist fur 8kB RAMs konzipiert, es ergibt also ein maximaler

Adreßraum von 32k. Da aber das Pinout von 8kB und 32kB RAMs kompatibel

ist, wurden die zusatzlichen Leitungen bereits vorgesehen, und so konnen maxi-

mal 4x32k=128k Adreßraum angesprochen werden. Dafur ist die Schaltung des

Adreßmultiplexer aus Bild 13 an den vergroßerten Adreßraum anzupassen.

Die Schaltung des Adreßmultiplexer ist sehr zeitkritisch und erfordert deshalb

eine optimale Plazierung und Verdrahtung auf dem FPGA, damit keine zu großen

Laufzeiten auftreten. Deshalb ist vorgesehen, den Adreßmultiplexer aus einer

Datei zu der restlichen Schaltung des FPGAs dazuzuladen. In dieser Datei sind

dann bereits Plazierungsinformationen enthalten, welche die kurzen Laufzeiten

27

Kapitel 4 Die Komponenten von PAr2

garantieren. Dies wird durch eine Beschreibung des Adreßmultiplexers durch ein

sogenanntes Hardmacro erreicht (siehe [18]).

Der Adreßmultiplexer ist - wie der Umfang der Schaltung zu erkennen gibt

- im Gegensatz zu den Multiplexern der Datenleitungen nicht in den IOBs des

FPGAs unterzubringen. Er belegt 33 CLBs, also 17% des Ramcontroller-FPGAs.

Damit ist die Beschreibung der Kommunikation abgeschlossen. Im nachsten

Abschnitt soll nun das dafur notwendige Timing hergeleitet werden.

4.3 Takterzeugung

4.3.1 Grundkonzept

Da die Schaltung synchron arbeitet, muß ein globaler Takt zur Versorgung

aller FPGAs erzeugt werden. Neben diesem eigentlichen Taktsignal ComCLK

sind noch zwei zusatzliche globale Signale zur Steuerung der statischen RAMs

notwendig: das Output-Enable-Signal OE und das Write-Enable Signal WE.

Das Signal BOE zum Steuern der Tristatetreiber der Ramcontroller hat einen

identischen Verlauf wie das OE-Signal fur die RAMs. Dieses Signal wird fortan

mit BOE bezeichnet, das RAM WE Signal mit RAMWE.

Alle Signale werden von einem schnellen Grundtakt BaseClock (BSCLK) mit

64 Mhz abgeleitet. Dieser Grundtakt speist einen 3 Bit Zahler, an den eine 3 Bit

tiefes ROM angeschlossen ist. An den Datenausgangen des ROMs lassen sich so

je nach Programmierung beliebige Signale aus maximal 8 Segmenten und einer

Auflosung von 12.5 ns erzeugen. Bild 15 zeigt das Schaltung der Takterzeugung

wie sie in einem FPGA des Interface untergebracht ist.

Da dieser Zahler und das ROM in einem der FPGAs des Interface unterge-

bracht ist, ist es moglich, die durch das ROM erzeugten Taktsignale beliebig zu

andern. Deshalb wurden neben den erwahnten Taktsignalen noch vier weitere Lei-

tungen des Interface reserviert, um bei Bedarf zusatzliche Taktsignale erzeugen

zu konnen.

Wie erwahnt, ist die Moglichkeit vorgesehen, das Rechenfeld durch das

Interface anzuhalten. Dazu dient das Signal HALT, das mit steigender Flanke

von ComCLK in das Ausgangsflipflop von GTBUF geschrieben wird. An diesem

Signal ist der Output-Enable Pin der Takttreiber angeschlossen. Geht dieses Signal

auf high, werden die Ausgange der Treiber inaktiv. Durch Pullup- bzw. Pulldown-

Widerstande wird der Zustand der Signale hinter den Treibern “eingefroren”.

Somit bleibt das Rechenfeld stehen. Wird das HALT-Signal wieder auf Low gelegt

erfolgt das Aktivieren der Treiber synchron zu ComCLK, und das Rechenfeld

lauft weiter.

28

Kapitel 4 Die Komponenten von PAr2

U14

OPAD

U6

OBUFU7

OBUF

F6SC

F7SC

F2SC

F3SC

F4SC

A0A1A2

O0O1O2O3O4O5O6

U10

RFCLKGEN

F8SC

U8

OBUF

U15

OPAD

U16

OPAD

U17

OPAD

U5

OBUF

F5SC

F9SC

RD

Q0

Q1

Q2

Q3C

CE

U1C4BINRIP

U2VCC

F1SC

U4

IBUF

U22

IPADF10SC

U11

OBUFU12

OBUF

U18

OPAD

U19

OPAD

U20

OPAD

U13

OBUF

F11SCU3

GND

halt

C

D Q

U9

OUTFF

U21

OPAD

BLKNM=RAMWEout,FAST

FILE=RFCLKGEN

BLKNM=IFBOEout,FAST

BLKNM=ComCLKout,FAST

BLKNM=CLKa_out,FAST

BLKNM=BSCKL,FASTBLKNM=CLKb_out,FAST

BLKNM=CLKc_out,FAST

BLKNM=CLKd_out,FAST

BLKNM=GTBUF,FAST

Bild 15 Prinzip der Taktsignalerzeugung aus einem Grundtakt

Das Ableiten der Taktsignale aus einem gemeinsamen Grundtakt wurde der

Erzeugung von Taktsignalen mittels Verzogerungsglieder aus mehreren Grunden

vorgezogen. So ist es zum einen moglich, die Signale durch einfaches Umpro-

grammieren des Interface FPGAs dem oben beschriebenen Rahmen zu andern.

Außerdem kann so bei Laufzeitproblemen das gesamte Timing von PAr2 durch

Auswechseln des Quarzoszillators fur den Grundtakt geandert werden. Dies er-

wies sich insbesondere in der Testphase des Rechenfeldes als sehr nutzlich. Indem

man zuerst mit einem Quarz niedriger Frequenz die Schaltung testet, kann man

laufzeitbedingte Fehler ausschließen. Wenn eventuelle logische Fehler beseitigt

wurden, kann man durch Erhohen der Taktfrequenz die maximale Datenrate fest-

legen. Sollte das Rechenfeld spater vergroßert werden, wodurch sich langere

Laufzeiten der Signale auf dem globalen Interface-Bus ergeben, kann die Takt-

frequenz ebenfalls einfach angepaßt werden.

4.3.2 Bestimmung des optimalen Timing

Zur Bestimmung der optimalen Taktsignale wurden die einzuhaltenden Zeiten

zum Umschalten der diversen Treiber und des RAMs als lineares Programm

formuliert und dadurch das optimale Timing bestimmt. Dabei stellt sich das

Problem, daß die einzelnen Gatterlaufzeiten zwar sehr genau bekannt waren([15],

[11] und [5]), die Laufzeit der Signale auf den Leitungen jedoch nur schwer

abzuschatzen war. Dies lag einerseits an der anfangs nicht bekannten Geometrie

29

Kapitel 4 Die Komponenten von PAr2

des Rechenfeldes, zum anderen an den unbekannten dielektrischen Eigenschaften

des Platinenmatrials. So wurden die Laufzeiten als Variablen in das lineare

Programm eingesetzt, deren Werte erst durch empirische Messungen am fertigen

Aufbau bestimmt werden konnten. Die Lange des gemultiplexten Busses zwischen

Rechenfeld und Ramcontroller von etwa 40 cm ergab eine Laufzeit von ca 7ns.

Zwischen Interface und Ramcontroller sind die Signalleitungen mit ca 60 cm noch

langer und die Verzogerung somit noch großer (11 ns). Diese Verzogerungen

sollen nun systematisch untersucht werden und daraus ein lineares Programm

formuliert werden, um die maximale Taktfrequenz zu bestimmen.

τ

Tpick

ComCLK

Data validRC out

Tfza

Data validRF in

t0 t1

ComCLK

RF outData valid Data valid

Tfza

Tdrf

Tpick

RC inData valid Data valid

t2

Tdrf

Bild 16 Vollstandiges Timingdiagramm fur die Kommunikation zwischen Rechenfeld und Ramcontroller

Betrachten wir zunachst die Kommunikation zwischen Rechenfeld und Ram-

controller (Bild 16). Hierbei wird von einer Taktverschiebung Tdrf und einer

Datenlaufzeit derselben Große ausgegangen. Dies ist durchaus akzeptabel, da die

Leitungslangen der entsprechenden Signale in derselben Großenordnung liegen.

Fur die Kommunikation vom Ramcontroller zum Rechenfeld erhalten die Daten

dieselbe Verzogerung wie das Taktsignal. Es mussen also nur die Zeiten fur das

Einschalten der Ausgangstreiber des FPGAs (Tfza) und die Haltezeit am Ein-

gangsregister (Tpick) eingehalten werden. Dies liefert uns als erste Bedingung im

30

Kapitel 4 Die Komponenten von PAr2

linearen Programm:

Tfza + Tpick < t2 � t1

Bei der Kommunikation vom Rechenfeld zum Ramcontroller (2. Takthalfte

von ComCLK in Bild 16) ist der Takt ComCLK des Rechenfeldes bereits um

Tdrf gegen den Takt des Ramcontrollers verschoben. Nachdem das Rechenfeld

seine Daten durchgeschaltet hat (Tfza), dauert es wiederum Tdrf Sekunden, bis

die Daten am Ramcontroller-FPGA anliegen. Dort mussen sie mindesten Tpick

Sekunden anstehen, bevor ComCLK auf high wechselt. Dies liefert uns eine

weitere Bedingung fur das lineare Programm:

Tdrf + Tpick + Tdrf + Tfza < t1 � t0

Betrachten wir nun die Signale zwischen Interface und Ramcontroller (Bild

17). Da alle Signale vom Interface erzeugt werden, erhalten die Daten bei

der Kommunikation vom Interface zu den Ramcontroller dieselbe Verzogerung,

wie die Taktsignale selbst. Somit muß die Verzogerung der Signale in dieser

Richtung – analog zu dem oben betrachteten Fall – nicht berucksichtigt werden

(erste Takthalfte in Bild 17). Die relevanten Zeiten sind die Aktivierungszeit des

externen Treibers (Tbza) und die Datenhaltezeit (Tpick). Die Bedingung an das

lineare Programm ergibt sich so zu:

Tbza + Tpick < t1 � t3

wenn t3 der Zeitpunkt am Interface ist, zu dem das Signal BOE von High auf

Low wechselt. Es ist aber moglich, daß das BOE–Signal schneller schaltet, als

die Durchlaufzeit der Daten durch das Flipflop (Tokop) und den externen Treiber

XU1 (Tbd) ist. Dies wird mit folgender Ungleichung berucksichtigt:

Tokop + Tbd + Tpick < t1 � t0

Dazu kommt die Bedingung, daß der externe Treiber nicht zu fruh schalten darf,

damit nicht zwei Ausgange gegeneinander arbeiten:

Tfaz � Tshort < t3 � t0 + Tbza

wobei Tshort die Zeit ist, die zwei Ausgange maximal gegeneinander geschaltet

sein durfen.

Bei der Kommunikation in der anderen Richtung vom Ramcontroller zum In-

terface laufen die Daten den Taktsignalen sozusagen entgegen, was eine doppelte

Verzogerung der Daten mit sich bringt. Die Signale vom Interface besitzten eine

Verzogerung von Tdif . Das bedeutet, daß bei der Kommunikation vom Ram-

controller zum Interface der Ramcontroller erst mit einer Verzogerung von Tdif

31

Kapitel 4 Die Komponenten von PAr2

IFBUS(READ)(Interface)

Data validRC out(RCPAD)

Tokpo Tbza

RC in(RCPAD)

Data valid Data valid

Tbza

BOE

Buskontrolle bei diesem Ramcontroller

RCBOE

IFBUS(WRITE)(Ramcontroller)

Data valid (falsche Daten)

Tbd

ComCLK

τ

IFBUS(READ)(Ramcontroller)

ComCLK

Tdif Tpick

IFBUS(WRITE)(Interface)

Data valid (falsche Daten)

Tpick

Tdif

t0 t1 t2

Tfza

t3

Tokpo

Tfaz

Bild 17 Vollstandiges Timingdiagramm fur die Kommunikation zwischen Ramcontroller und Interface

gegenuber dem Interface die Daten absendet. Ebenfalls mit dieser Verzogerung

wird das Register des Steuersignals RCBOE getriggert. Bis dieses Signal tatsach-

lich am Pad erscheint, vergehen Tokpo Sekunden. Weitere Tbza Sekunden dauert

es, bis der Treiber XU2 von den hochohmigen Zustand in den aktiven Zustand

gewechselt ist. Nun ist das Signal bis zum Interface wieder Tdif lang unter-

wegs und muß dort wieder Tpick Sekunden anstehen, bevor ComCLK auf high

32

Kapitel 4 Die Komponenten von PAr2

wechselt. Somit ergibt sich als Bedingung:

Tdif + Tpick + Tdif + Tokop + Tbza < t2 � t1

Auch hier muß eine Bedingung bezuglich der Durchlaufzeit berucksichtigt wer-

den:

Tdif + Tfza + Tdif + Tpick < t2 � t1

ComCLK

Data valid

ComCLK

BOE

RAMWE

RC out

Data valid Data valid

Trdoe

Tfza

Ram out

Adresse Read Adresse ReadAdresse WriteRamadresse

Taa

Tdw Twr

Tsat4

t0 t1 t2

t5

Tpar Tpaw

Tfaz

Bild 18 Vollstandiges Timingdiagramm fur die Kommunikation zwischen Ramcontroller und Ram.

Als dritter Teil soll nun die Kommunikation zwischen RAM und Ramcontrol-

ler untersucht werden. Da hier die Leitungslangen relativ kurz sind, wurden keine

Signallaufzeiten berucksichtigt. Das zeitkritischste Element ist der Adreßmulti-

plexer, da hier auch interne Laufzeiten auf dem FPGA berucksichtigt werden

mussen. Die Verzogerungszeiten zwischen den Flanken von ComCLK und dem

Erscheinen der Daten am PAD wurden mittels des XILINX-Tool XDELAY be-

stimmt. Dabei ist Tpar die Zeit, die es dauert, bis nach positiver Flanke von

ComCLK die Leseadressen gultig sind. Tpaw ist die entsprechende Zeit fur die

Schreibdaten nach fallender Flanke von ComCLK.

Daraus lassen sich im wesentlichen schon die Bedingungen formulieren. Fur

den Lesezugriff auf das RAM muß die Adresse mindestens Taa Sekunden stabil

33

Kapitel 4 Die Komponenten von PAr2

sein, bevor die Daten gultig sind. Diese Daten mussen wiederum Tpick Sekunden

am Ramcontroller anstehen, bevor ComCLK auf High wechselt:

Tpar + Taa + Tpick < t1 � t0

Das Umschalten des Datenbusses nimmt Trdoe Sekunden nach der negativen

Flanke von BOE (t4) in Anspruch:

Trdoe + Tpick < t1 � t4

Auch soll eine maximale Kurzschlußzeit zweier Ausgange von Tshort garantiert

werden:

Tfaz � Tshort < t4 � t0 + Trdoe

Fur den Schreibzugriff erhalt man die analogen Bedingungen:

Tpaw + Tsa < t5 � t1

Tfza + Tdw < t5 � t1

Twr < t2 � t5

wobei t5 der Zeitpukt ist, wenn das Signale WE von High auf Low wechselt.

Fur konkrete Zahlenwerte sind naturlich die meisten der angegebenen Unglei-

chungen redundant, aber das lineare Programm sollte so allgemein wie moglich

formuliert werden.

Da alle Signale von dem gemeinsamen Takt BSCLK (� ) abgeleitet werden,

mussen die Schaltzeitpunkte an ganzzahligen Vielfachen von � liegen:

t1 � t0 = a � �t2 � t0 = b � �t3 � t0 = c � �t4 � t0 = d � �t5 � t0 = e � �a; b; c; d; e 2 N

34

Kapitel 4 Die Komponenten von PAr2

Insgesamt ergibt sich durch Zusammenfugen aller Bedingungen folgendes

Optimierungsproblem:

min �;

(b� a) � � � Tfza � Tpick

a � � � 2 � Tdrf(a� c) � � � Tbza + Tpick

a � � � Tokop + Tbd + Tpick

c � � � Tfaz � Tshort � Tbza

(b� a) � � � 2 � Tdif + Tpick + Tokop + Tbza

(b� a) � � � 2 � Tdif + Tfza + Tpick

a � � � Tpar + Taa + Tpick

(a� d) � � � Trdoe + Tpick

d � � � Tfaz � Tshort � Trdoe

(e� a) � � � Tpaw + Tsa

(e� a) � � � Tfza + Tdw

(b� e) � � � Twr

a; b; c; d; e 2 N

Ein Problem hierbei ist, daß nicht nur � , sondern auch die ganzzahligen Va-

riablen a; b; c; d; e zu bestimmen sind. Da sie als Faktoren vor der unabhangigen

Variablen � stehen, handelt es sich eigentlich nicht mehr um ein linerares Pro-

gramm, sondern um ein quadratisches Optimierungsproblem mit teilweise ganz-

zahligen Variablen. Ein solches Optimierungsproblem ist im allgemeinen schwer

zu losen. Deshalb werden alle sinnvollen Werte fur a bis e durch Enumerieren

eingesetzt. “Sinnvoll” heißt hierbei Werte zwischen eins und einer Obergrenze

(im Programm die Variable resolution). Fur b wird dabei immer die Ober-

grenze resolution eingesetzt, da b die Periode aller Taktsignale bestimmt

(b � � = t2 � t0). Fur jede Kombination der Variablen a; c; d; e muß dann ein

einfaches lineares Programm gelost werden. Das minimale � aller gefundenen

Losungen liefert die maximale Taktfrequenz der BSCLK und die Werte fur die

Faktoren a bis e.

Im Programm wurde resolution=8 gesetzt, da sich eine Zweierpotenz

leicht als Binarzahler realisieren laßt. Hohere Werte konnen zwar eventuell

ein besseres Ergebnis liefern, sind aber praktisch nicht mehr realisierbar. Denn

ein Faktor von beispielsweise zehn wurde bedeuten, daß die BSCLK zehn mal

schneller lauft als die resultierende ComCLK. Solch hohe Frequenzen fur das

BSCLK-Signal sind aber praktisch nicht mehr handhabbar.

35

Kapitel 4 Die Komponenten von PAr2

Das Enumerieren der moglichen Werte mag unelegant erscheinen. Da aber

das lineare Programm nur eine Variable zu bestimmen hat, handelt es sich faktisch

um eine Maximumbildung. Diese braucht sehr wenig Rechenzeit und so fallt die

Enumeration selbst bei 4096 Durchlaufen (resolution=8) kaum ins Gewicht.

Das entsprechende Programm zur Bestimmung der Zeiten ist im Anhang A

abgedruckt. Fur die dort eingesetzten Werte ergab sich eine maximale Frequenz

von ComCLK von 8.62 MHz. In der Realisierung wurde 8 MHz gewahlt,

entsprechend einem BSCLK-Quarz von 64 MHz. Der resultierende Verlauf der

Signale zeigt Bild 19.

ComCLK

BOE

BSCLK[64 MHz]

0 15.6

31.3

5

46.8

8

62.5

78.1

93.7

5

109.

4

125

Zeit [ns]

RAMWE

T = 8 MHz

Bild 19 Resultiernder Verlauf der globalen Taktsignale von PAr2

4.4 Modellierung der Kommunikation

Aus den in den vorangegangenen Abschnitten vorgestellten Kommunika-

tionsschaltungen laßt sich ein Modell fur die Kommunikationsvorgange auf

Registerebene ableiten.

Die Taktverschiebung zwischen Interface und Rechenfeld auf der einen Seite

und Ramcontroller auf der anderen soll dabei naher betrachtet werden. Interface

und Rechenfeld arbeiten wie erwahnt auf steigende Taktflanke von ComCLK, bil-

den also eine mit positiver Flanke getriggerte Logik, wahrend der Ramcontroller

auf steigende Taktflanke von ComCLK seine Daten taktet, also negativ getriggerte

Logik beinhaltet. An der Grenze folgt somit einem Register mit positiver Flanke

(Rechenfeld) ein Register mit negativer Flanke (Ramcontroller), wenn man den

36

Kapitel 4 Die Komponenten von PAr2

C

D Q

C

D Q

1 2

NächsterTaktzeitpunkt

ÜbernahmeRegister 1

ÜbernahmeRegister 2

1,5

positiv getriggerte Logik negativ getriggerte Logik

Bild 20 An der Grenze zwischen positiver getriggerter und

negativ getriggerter Logik wirken zwei Register wie eineinhalb.

Datenfluß vom Rechenfeld zum Ramcontroller betrachtet. In der umgekehrten

Datenflußrichtung folgt entsprechend ein Register mit negativer Flanke auf ein

Register mit postiver Flanke. Zusammengefaßt ergeben beide Reihenfolgen je-

weils 1,5 Register (siehe Bild 20). Da “halbe Register” schwer vorstellbar sind

und sie auch in COMPAR nicht modelliert werden konnen, muß man mit Hilfe

einer Schnittmengentransformation die Registerzahl ganzzahlig machen.

Die Schnittmengentransformation ist ein systematisches Verfahren, um Sig-

nalflußgraphen zu transformieren. Das Registermodell von PAr2 kann als Graph

interpretiert werden, wenn man jedem FPGA einen Knoten zuordnet und die Ver-

bindungsleitungen als Kanten auffaßt. Die Schnittmengentransformation gibt nun

eine Regel an, mit der man die Registerzahlen in den Kanten des Graphen ver-

37

Kapitel 4 Die Komponenten von PAr2

andern kann, ohne die Funktionsweise der Schaltung zu andern [14]. Dazu wahlt

man sich eine Menge G von Knoten. Wenn man nun in alle Leitungen (Kanten),

die in diese Menge G hineinfuhren, c Register hinzufugt und bei den Leitungen

(Kanten), die hinausfuhren, c Register wegnimmt, hat sich an der Schaltungs-

funktion nichts geandert.

Diese Registerzahlen c mussen nicht notwendigerweise ganzzahlig sein.

Wahlt man als Menge G alle Ramcontroller mit Adreßmultiplexer und RAM und

setzt c = 12 , ergeben sich im Hinpfad zwei Register und im Ruckpfad eines (siehe

Bild 21). Naturlich konnte man auch c = �12 setzten und erhielte so im Hinpfad

eines und im Ruckpfad zwei Register. Dies macht fur die Funktionsweise keinen

Unterschied.

Die in Bild 21 eingezeichneten Hin- und Ruckleitungen mussen naturlich nicht

bei jedem implementierten Algorithmus vorkommen. Es ist auch ein Datenfluß

in nur eine Richtung bei einigen FPGAs denkbar. Das Bild soll jedoch alle

Spezialfalle abdecken.

Das Rechenfeld ist also nicht vollig homogen, die Rander mussen immer

uber den Ramcontroller kommunizieren, auch wenn sie eigentlich die Daten

nur an ein anderes FPGA des Rechenfeldes weitergeben wollen. Denn selbst

bei einer direkten Durchverbindung der Leitungen im Ramcontroller sind in

diesen Leitungen drei Register im Gegensatz zu zwei Registern innerhalb des

Rechenfeldes.

Das Beschreiben des RAMs erfolgt mit einer Verzogerung von einem Takt,

entsprechend befinden sich in Adreß- und Datenbus in Schreibrichtung jeweils

ein Register. Die Daten, die man beim RAM-Zugriff lesen kann, sind immer die

Daten der Adresse, die zum Zeitpunkt vorher angelegen hat. Entsprechend liegt in

der Adreßleitung ein Register, in der ruckfuhrenden Datenleitung jedoch keines.

Die Partitionierung in COMAR muß den Algorithmus so aufteilen, daß er

nicht mehr Ressourcen benotigt, als das Rechenfeld insgesamt zur Verfugung

stellen kann. Außerdem darf keinem einzelnen FPGA mehr Hardware zugeordnet

werden, als ein XILINX-Baustein fassen kann. Und drittens muß die Aufteilung

des Algorithmus so erfolgt sein, daß die Register, die durch die Kommunika-

tion entsprechend Bild 21 vorhanden sind, im Algorithmus im entsprechenden

Datenpfad auch vorgegeben sind.

Mit Hilfe des vorgestellten Registermodells wird es moglich, die Kommuni-

kation innerhalb von PAr2 zu modellieren und dem implementierten Algorithmus

fest definierte Schnittstellen zur Verfugung zu stellen. Dies kann abstrahiert von

der tatsachlichen physikalischen Realisierung der Kommunikation geschehen, der

implementierte Algorithmus muß davon nichts wissen.

38

Kapitel 4 Die Komponenten von PAr2

RF RF RF RC

RA

M

Adressm

ux

RF RF RF RC

RA

M

Adressm

ux

RF RF RF RC

RA

M

Adressm

ux

RAM

Adressmux

RC

RAM

AdressmuxR

C

RAM

Adressmux

RC

WA

WD

RA

RD

WA

WD

RA

RD

WA

WD

RA

RD

WA

WD

RA

RD

WA

WD

RA

RD

WA

WD

RA

RD

Interface

RF = Rechenfeld FPGARC = Ramcontroller FPGAWA= Write AdresseWD= Write DataRA = Read AdresseRD = Read Data

Bild 21 Registermodell von PAr2

4.5 Programmierung und Debugging

4.5.1 Vorbereiten der Programmierung

Der zu implementierende Algorithmus muß, wie im vorangegangenen Kapi-

tel dargelegt, erst von COMPAR so partitioniert werden, daß einzelne Segmente

entstehen, die nicht mehr Schaltunglogik beinhalten, als ein FPGA aufnehmen

kann. Ebenso muß die Schaltung fur die Ramcontroller spezifiziert werden. So

erhalt man 15 Beschreibungen fur die verschiedenen FPGAs. Die Beschreibung

der Chipinhalte erfolgt mit einem lesbaren Netzlistenformat, das von XILINX

39

Kapitel 4 Die Komponenten von PAr2

entwickelt wurde, dem sogenannten XNF-Format. Aus diesem Format wird mit

Hilfe des PPR-Programms (Partition, Place & Route) ein Zwischenformat erzeugt,

das mittels des Programms MAKEBITS in den Bitstrom zur Programmierung ei-

nes FPGAs umgewandelt wird. Das Programm PPR hat dabei relativ komplexe

Aufgaben zu losen, denn es muß die Netzliste, die es als Eingabe erhalt, so par-

titionieren, daß die CLBs optimal genutzt werden und die Verdrahtung zwischen

den CLBs durchfuhren. Dieser Vorgang kann fur ein gut ausgelastetes XC4005

FPGA durchaus mehr als eine Stunde Rechenzeit in Anspruch nehmen.

Die Beschreibung der Kommunikationsvorgange hat gezeigt, daß unterschied-

liche Inhalte in die Input/Output-Blocke der FPGAs des Rechenfeldes program-

miert werden mussen. Die Rander des Rechenfeldes benotigen in ihren Aus-

gangspins zusatzlich Tristatetreiber, die innerhalb des Rechenfeldes nicht benotigt

werden. Um diese Unregelmaßigkeit vor dem implementierten Algorithmus zu

verbergen, werden einheitliche Signalbezeichungen innerhalb des Chips im XNF-

Netzlistenformat eingefuhrt. Fur die neun unterschiedlichen Zuordnungen der

Rander zu den FPGAs des Rechenfeldes mussen an die Netzliste nur noch die

IOB-Belegungen angefugt werden, die fur die neun Chips in neun Dateien spe-

zifiziert sind. Die Festlegung der Namen ist in Tabelle 1 fur das Rechenfeld

aufgefuhrt. Es existieren pro Pin zwei Datenrichtungen (READ und WRITE),

es kann an den implementieren Algorithmus jedoch immer nur eines der beiden

Signale – abhangig von der Datenrichtung – angeschlossen werden. Die zweite,

nicht benotigte Richtung wird von dem Programm PPR unter Ausgabe einer War-

nung entfernt, weil entweder der Ausgang eines Flipflops (bei READ) oder der

Eingang eines Flipflops (bei WRITE) nicht angeschlossen ist.

Signalbezeichnungen des Rechenfeld-FPGA

Datenbus links Datenbus rechts Datenbus oben

(up)

Datenbus unten

(down)

Pinbelegung D3 - N2 C15 - N14 A1 - A14 R3 - R13

Signal in

FPGA hinein

(READ)

DLR0 - DLR23 DRR0 - DRR23 DUR0 - DUR23 DDR0 - DDR23

Signal aus

FPGA hinaus

(WRITE)

DLW0 - DLW23 DRW0 - DRW23 DUW0 -

DUW23

DDW0 -

DDW23

Tabelle 1 Signalbezeichnungen im Rechenfeld-FPGA

Ebenso kann man bei den Ramcontroller-FPGAs vorgehen. Diese sind zwar

alle identisch in der Pinbelegung, aber die Programmierung der IOBs sowie der

Adreßmultiplexer brauchen nicht fur jedes FPGA noch zusatzlich von COMPAR

erzeugt zu werden. Diese immer gleichen, der Hardware entsprechenden Beschrei-

40

Kapitel 4 Die Komponenten von PAr2

bungen sind auch als Datei abgelegt, die an die eigentliche Spezifizierung des

Ramcontrollers angehangt wird, bevor PPR aufgerufen wird. Fur den Adreßmulti-

plexer enthalt diese Datei, wie in Kapitel 4.2.3 erwahnt, Plazierungsinformationen,

um kurze Signallaufzeiten zu garantieren. Die Festlegung der Signalbezeichnung

fur den Ramcontroller zeigen die Tabellen 2 und 3.

Signalbezeichnungen des Ramcontroller-FPGA

Datenbus

Rechenfeld

Datenbus RAM Datenbus

Interface

Pinbelegung D3 - N2 A1 - A14 R3 - R13

Signal in

FPGA hinein

(READ)

DRFR0 -

DRFR23

DRAMR0 -

DRAMR23

DIFR0 - DIFR23

Signal aus

FPGA hinaus

(WRITE)

DRFW0 -

DRFW23

DRAMW0 -

DRAMW23

DIFW0 -

DIFW23

Tabelle 2 Signalbezeichnungen im Ramcontroller-FPGA

Signalbezeichnung Adressmultiplexer Ramcontroller-FPGA

Adressbezeichnung Enable-Signal

Lesezugriff

(READ)

RADR0 - RADR14 REN

Schreibzugriff

(WRITE)

WADR0 - WADR14 WEN

Tabelle 3 Signalbezeichnungen im Ramcontroller-FPGA

4.5.2 Programmiervorgang

Die Programmierung der FPGAs erfolgt einzeln nacheinander im Serial-Slave-

Mode [15].

Dazu darf immer nur ein FPGA mit den Programmierleitungen uber den

PRBUS an das Interface angeschlossen sein. Die Auswahl erfolgt uber

Tristatebustreiber, die uber eine Adresse angesprochen werden. Die Adressenaus-

wahl nimmt ein BCD-zu-dezimal Decoder global fur alle FPGAs vor. Zu jeder

Adresse gehort genau ein Treiber, dessen FPGA dann an den PRBUS geschaltet

wird.

Wurde so ein FPGA ausgewahlt, wird mit der fallenden Flanke von PROG

die Programmierung eingeleitet. Das INIT—Signal quittiert diesen Vorgang durch

einen Wechsel auf High. Nach einer Pause von mindestens 40�s werden die

Daten seriell uber DIN mit der Frequenz CCLK eingelesen. Sollte wahrend der

41

Kapitel 4 Die Komponenten von PAr2

Programmierung ein Fehler auftreten, wird das INIT—Signal vom FPGA auf

Low gezogen.

Da sich bei einer Neuprogrammierung des Rechenfeldes die Richtungen der

Leitungen andern konnen, muß ein Mechanismus vorgesehen werden, der verhin-

dert, daß wahrend einer Programmierphase zwei Ausgange aufeinander treffen.

Dazu dient das Signal GTS (Global TriState), das an jedes FPGA gefuhrt wird.

Bevor die Programmierung gestartet wird, wird dieses Signal aktiviert, worauf alle

FPGA-Ausgange in den hochohmigen Zustand gehen. Jetzt konnen die FPGAs

der Reihe nach programmiert werden, ohne daß die Gefahr besteht, daß zwei Aus-

gange gegeneinander geschaltet werden. Außerdem muß garantiert werden, daß

das gesamte Rechenfeld gleichzeitig loslauft. Wahrend der Programmierung sorgt

das DONE–Signal dafur, das die Ausgange von bereits programmierten FPGAs

hochohmig bleiben, bis alle FPGAs programmiert wurden. Dazu ist das Signal

nicht wie die anderen Leitungen uber die Tristatetreiber geschaltet, sondern alle

DONE-Leitungen aller FPGAs sind direkt parallel verbunden. Dies ist moglich,

da es sich um Open-Kollektor-Ausgange handelt. Der Ausgangspegel dient dem

FPGA nach der Programmierung gleichzeitig als Information, ob die Ausgange

aktiviert werden durfen. Dazu “halt” man das DONE-Signal von außen, also

durch das Interface auf Low.

Ein Programmiervorgang soll deshalb folgendermaßen ablaufen:

• Anhalten des globalen Taktes ComCLK.

• Alle Pins aller FPGAs durch Umschalten von GTS auf High hochohmig

machen.

• DONE-Signal auf Low ziehen.

• Selektieren und Programmieren der einzelnen FPGAs.

• DONE-Signal “loslassen”; geht es auf High, ist kein Fehler wahrend der

Programmierung aufgetreten.

• GTS=Low.

• ComCLK starten.

4.5.3 Readback

Der READBACK-Mechanismus der XILINX FPGAs ermoglicht ein Auslesen

der internen Registerzustande. Die so erhaltenen Informationen konnen Debug-

gingzwecken dienen.

Um die Informationen aus einem bestimmten FPGA auszulesen, wird der-

selbe Adressierungsmechanismus verwendet wie bei der Programmierung. Die

Tristatetreiber schalten also nicht nur die Leitungen fur die Programmierung an

das Interface, sondern auch die Leitungen RTRIG, RIP, RCLK und RDATA fur

das READBACK.

42

Kapitel 4 Die Komponenten von PAr2

Fur weitere Einzelheiten zum Programmier- bzw. Readbackvorgang sei auf

[15] und [7] verwiesen.

43

Kapitel 5 Realisierung der Hardware

5 Realisierung der Hardware

Am Anfang der Uberlegungen stand unter anderem, das Konzept des Re-

chenfeldes moglichst modular zu halten, um es bei Bedarf vergroßern zu konnen.

Deshalb wurde fur die Realisierung zuerst versucht, eine Platine fur jedes FPGA

des Rechenfeldes vorzusehen, die uber Stecker einen beliebigen Ausbau des Re-

chenfeldes ermoglichen.

Der Aufwand an Steckverbindungen ware aber auf dem Rechenfeld enorm

gewesen. Denn bei einem zweidimensionalen Rechenfeld sind die vier moglichen

Richtungen in der Ebene bereits durch die Anschlusse der Nachbarprozessoren

belegt. Da aber auch globale Leitungen fur den Takt und die Programmierung der

FPGAs benotigt werden, hatte man diese von unten oder oben fur jedes FPGA

extra zufuhren mussen und so Probleme bei der Verteilung dieser Signale auf

dem Rechenfeld bekommen.

Deshalb wurde in der Realisierung ein Kompromiß eingegangen: Die Ram-

controller, die bereits eine relativ hohe Komplexitat aufweisen, wurden jeweils auf

einer Platine aufgebaut, auf die das RAM mit einer zusatzlichen Platine (Ram-

card) eingesteckt wird. Das gesamte Rechenfeld mit den neun FPGAs wurde aber

auf einer großen Platine untergebracht. Diese Platine ist nicht erweiterbar, d.h.

sollte man ein großeres Rechenfeld wunschen, mußte dafur eine komplett neue

Rechenfeld-Platine gebaut werden. Allerdings kann man durch die vorhandenen

Kurzschlußverbindungen das Rechenfeld beliebig verkleinern. Die Ramcontroller

konnen in einer vergroßerten Version des Rechenfeldes aber weiterhin genutzt

werden.

Alle Platinen wurden zweiseitig durchkontaktiert gefertigt. Fur die Anpassung

an die Schnittstelle des Interfaces ist eine zusatzliche Platine (Interface-Adapter)

notig. Diese wurde in Fadel-Technik realisiert.

5.1 Uberblick

Der Aufbau gliedert sich in drei große Teile: das eigentliche Rechenfeld mit

neun FPGAs, die sechs Ramcontroller am Rand zur Steuerung von Speicherzu-

griffen und der Kommunikation mit dem Interface, sowie dem Interface-Adapter,

der die physikalische Schnittstelle zum Interface bildet.

Die Datenbusbreite betragt 24 Bit, dementsprechend sind die RAMs auch

zu 3x8 Bit breiten Daten angeordnet. In der momentanen Ausstattung sind pro

Ramcontroller 24 x 8k Ram, also insgesamt 144 kB Speicher auf dem gesamten

Rechenfeld aufgebaut. Es ist aber ein Ausbau mit bis zu 24 x 128k RAM je

Ramcontroller moglich, was einem Gesamtspeicher von 2304 kB entspricht.

44

Kapitel 5 Realisierung der Hardware

Der Rechentakt betragt 8 MHz. Wegen des getrennten Busses fur READ und

WRITE zwischen Interface und Ramcontroller konnen somit maximal 3 * 2 * 8

= 48MByte Daten pro Sekunden zum Transport fur das Interface anfallen.

Bild 22 zeigt das Blockschaltbild von PAr2. Das Rechenfeld mit den neun

FPGAs befindet sich auf einer großen Rechenfeldplatine. Jeder Ramcontroller

befindet sich mit RAM auf einer eigenen Platine, die uber eine VG64-Leiste an

das Rechenfeld angeschlossen wird. Der horizontale, 60 Leitungen umfassenden

IFBUS verbindet alle Ramcontroller am oberen Rand des Rechenfeldes mit der

Interface-Adapter Platine. Durch den entsprechenden vertikalen Bus sind die

Ramcontroller am rechten Rand der Rechenfeldplatine mit dem Interface-Adapter

verbunden. Eine 40polige Verbindung zwischen Interface-Adapter und Rechenfeld

dient hauptsachlich der Programmierung der FPGAs, sowie der Verteilung der

globalen Signale PRBUS, GPBUS und ComCLK. Auf dem Interface-Adapter ist

des weiteren die Grundtakterzeugung, sowie die Takttreiber und Taktverteilung

untergebracht. Zusatzlich sind in Bild 22 die Adressen der FPGAs fur die

Programmierung und das Readback eingezeichnet.

Rechenfeld

Ramcontroller

Ram

controller

Interface-Adapter

Interface

IFBUS vertikal

IFBUShorizontal

PRBUSGPBUSComCLKFADR

1

2

3

456

7

8

9

10

11

12

13

14

15

Bild 22 Blockschaltbild mit Verteilung der globalen Signale sowie der Adressen der FPGAs

45

Kapitel 5 Realisierung der Hardware

5.2 Rechenfeld

Das Rechenfeld aus den 3 x 3 FPGAs befindet sich auf einer großen Pla-

tine von ca 40 x 42 cm. Sie ist sehr regelmaßig aufgebaut. Zu jedem FPGA

existiert ein Tristate-Treiber, der die Programmierleitungen und Readbackleitung

des entsprechenden FPGAs auf den Program&Readback-Bus schaltet. Die An-

steuerung dieser Treiber erfolgt uber einen BCD-zu-dezimal-Dekoder 74154, der

16 Adressen auswahlen kann. So werden durch diesen Decoder nicht nur die

Rechenfeld-FPGAs adressiert, sondern sechs Leitungen werden an die Ramcon-

troller weitergeleitet. Die freibleibende Adresse 0 soll immer dann adressiert sein,

wenn keines der FPGAs programmiert werden soll.

Die Verteilung der globalen Signale (ComCLK, PRBUS, GPBUS) erfolgt nach

dem in Bild 22 angegebenen Schema. Die Ramcontroller werden also von dem

Rechenfeld her mit den globalen Signalen versorgt (siehe auch Steckerbelegung

im Anhang).

FPGA1,1

FPGA3,1

FPGA

FPGA1,2

FPGA3,2

FPGA2,2

FPGA1,3

FPGA3,3

FPGA2,3 2,1

U

D

L R

U

D

L R

U

D

L R

U

D

L R

U

D

L R

U

D

L R

U

D

L R

U

D

L R

U

D

L R

Bild 23 Phyikalische Verdrahtung der lokalen Verbindungen der FPGAs auf dem Rechendfeld.

Jedes FPGA ist mit seinen vier Nachbarn uber einen 24 Bit breiten Bus ver-

bunden. Die FPGAs am Rand sind uber lange Ruckleitungen an den entsprechen-

46

Kapitel 5 Realisierung der Hardware

den Partner auf der anderen Seite der Platine angeschlossen. Ausserdem werden

diese Leitungen auf die Ramcontrolleranschlusse gefuhrt (Bild 23). Die langen

Ruckleitung bewirken Signallaufzeiten. Erschwerend kommt hinzu, daß gerade

diese Ruckleitungen auch zum Ramcontroller fuhren und somit gemultiplext sind,

d.h. eine hohere Datenrate fassen mussen. Es gibt ein Verbindungsschema, das

den Nachteil der langen Ruckleitungen nicht aufweist: uberspringt man bei der

Verdrahtung immer ein FPGA, so ergibt sich zwischen allen FPGAs ungefahr

dieselbe Leitungslange (Bild 24). Somit konnten beliebig große Rechenfelder

realisiert werden, ohne daß es zu Laufzeitproblemen auf dem Rechenfeld kame.

Aus mehreren Grunden wurde diese Schema aber trotzdem nicht verwen-

det. Zum einen ist die Verdrahtung auf der Platine wesentlich schwieriger, weil

die Leitungen oft schrag gefuhrt werden mussen, was bei einem Bus von 24

Leitungen einen erheblichen Platzbedarf bedeutet. Des weiteren ist der Gewinn

dieses Verdrahtungsschemas bei einem 3x3–Rechenfeld relativ bescheiden, denn

die Ruckleitungen nach dem einfachen Verdrahtungsschema sind nur unwesentlich

langer, als bei der Verdrahtung nach Bild 24. Und drittens fuhrt die Umplazie-

rungen der einzelnen FPGA zu erheblichen Komplikationen bei der Zuordung der

Busse am FPGA.

Wenn man davon ausgeht, daß der implementierte Algorithmus regelmaßig

aufgebaut ist, wird jedes FPGA auf der Rechenfeldplatine annahernd denselben

Inhalt bekommen. Verdrahtet man die FPGAs nach dem in Bild 24 gezeigten

Schema, andern sich nicht nur ihre Positionen auf dem Rechenfeld, sondern es

drehen sich teilweise die Zuordungen von ”links” und “rechts” bzw. “oben” und

“unten” um. Betrachten wir dazu FPGA (1,2). Verglichen mit Bild 23 zeigt

sich, daß die Anschlusse links und rechts vertauscht sind. Das bedeutet, daß man

entweder den Inhalt des Chips entsprechend “umdrehen”, oder den Chip auf der

Platine anders anschließen muß.

Dreht man den Chipinhalt um, handelt man sich interne Unregelmaßigkeiten

ein, weil die FPGAs nicht vollig homogen aufgebaut sind. Die Anschlusse auf

der Platine zu andern ist aber auch relativ unrealistisch, denn um die Anordnung

entsprechend Bild 24 zu erreichen, mußten die Chip teilweise spiegelverkehrt,

d.h. von der Unterseite der Platine eingelotet werden. Außerdem verliert man

so die Regelmaßigkeit im Layout. Deshalb wurde das einfachere Layout nach

Bild 23 gewahlt.

An jeden der vier Busse eines FPGA ist ein 26pol Pfostenstecker angeschlos-

sen (JM10 – JM42). Er kann einerseits zu Meßzwecken dienen, andererseits

ermoglicht er es, das Rechenfeld zu verkleinern. Dazu uberbruckt man die nicht

benotigten Rechenfeld-FPGA—Sockel (die FPGAs sollten in diesem Fall aus den

Sockeln ausgebaut werden !) an ihren Pfostensteckern mit Flachbandkabeln. So

ist es einfach moglich, auch ein beliebig kleineres Rechenfeld zu erhalten.

47

Kapitel 5 Realisierung der Hardware

FPGA FPGA FPGA

FPGA FPGA FPGA

FPGA FPGA FPGA

1,11,31,2

3,2 3,3 3,1

2,2 2,3 2,1

U

D

U

D

U

D

U

D

U

D

U

D

D

U

D

U

D

U

L R

L R

L R

L R

L R

L R

R L

R L

R L

Bild 24 Mogliches Verdrahtungsschema der FPGAs des Rechenfeldes mit konstanten Leitungslangen.

5.3 Ramcontroller

Der Ramcontroller ist die komplexeste Platine des Projekts. Sie enthalt ne-

ben dem eigentlichen Ramcontroller-FPGA mit Program&Readback Buffer den

Demultiplexer zum Anschluß an den IFBUS, zwei Steckplatze zur Aufnahme der

Ramkarten, sowie den Anschluß an das Rechenfeld. Der Rechenfeld-Anschluß

ist als VG64–Leiste ausgefuhrt und liefert den lokalen Datenbus vom Rechen-

feld sowie den PRBUS, den GPBUS und das ComCLK-Signal. Ein 60poliges

Flachbandkabel fuhrt den IFBUS und die Signale BOE und RAMWE direkt vom

Interface zum Ramcontroller.

Die Steckerbelegungen sind im Anhang aufgefuhrt. Ebenfalls im Anhang ist

der Schaltplan abgedruckt.

Der Ramausbau sollte moglichst flexibel moglich sein. Dies wurde im Kapitel

4.2.3 bereits mit der Einfuhrung des Bankings ermoglicht. Um in der Realisierung

die durch das Banking gewonnene Flexibilitat nicht zu verlieren, wurden die

Rambausteine nicht direkt auf der Ramcontroller-Platine untergebracht, sondern

werden uber zwei 50poligen Steckplatze angeschlossen. Diese konnen jeweils

eine Platine aufnehmen, die die RAMs tragt (Ramcard). Da diese Ramcard nur

48

Kapitel 5 Realisierung der Hardware

die gewunschten Speicherbausteine ohne Zusatzbauteile tragen muß, ist sie einfach

zu entwerfen und einfach an die gewunschten Verhaltnisse anpaßbar.

Die realisierte ”Ramcard I” stellt die einfachste Moglichkeit dar, die RAMs

anzuschließen. Sie ist in der Lage, entweder drei 8Kx8 RAMs oder drei 32Kx8

RAMs aufzunehmen, also genau eine Bank. Jumper ermoglichen die Auswahl

einer der vier Banks, an die die RAMs gelegt werden sollen. Mit einer zweiten

Karte diesen Typs laßt sich der Speicher verdoppeln, indem man dort einfach die

nachste Bank durch Jumpern auswahlt. Erst wenn mehr als zwei Banks genutzt

werden sollen, muß eine neue Platine entworfen werden, die mindesten zwei

Banks auf einmal ansprechen kann.

Alle Daten- und Adreßleitungen sind mit Abschlußwiderstanden versehen,

um die Reflektionen am Leitungsende so gering wie moglich zu halten. Diese

Abschlußwiderstande sind mit den Widerstandsnetzwerden RN1 - RN10, sowie

den Widerstanden R4 - R8 realisiert (siehe auch Kapitel 5.5).

Die fur das Demultimplexen des IFBUS benotigten Tristatetreiber sind eben-

falls auf der Platine untergebracht (IC 2– IC 7). IC 2 bis IC 4 puffern den

Zugriff auf den IFBUS(WRITE), also die Datenausgabe vom Ramcontroller zum

Interface. Ihre Freigabe erfolgt durch das RCBOE-Signal wie in Kapitel 4.2.2

erlautert. Die Treiber IC 5 bis IC7 sind fur die Gegenrichtung zustandig und

werden von dem globalen Signal BOE gesteuert. Der Widerstand R11 sorgt im

nichtprogrammierten Zustand des FPGAs dafur, das die Treiber inaktiv sind.

Fur Meß– und Kontrollzwecke sind die Stecker JM1 bis JM3 vorgesehen. An

JM1 liegt der Datenbus Richtung Rechenfeld, wahrend JM2 die Daten vor den

Demultiplexern zum Interface fuhrt. JM3 schließlich stellt die Anschlusse des

PRBUS hinter dem Tristatetreiber direkt am FPGA zur Verfugung. Die Belegung

dieser Meßpunktstecker ist am Anhang aufgefuhrt (JM1 und JM2 sind vom Typ

B, JM3 vom Typ A).

5.4 Interface Adapter

Beim Interface-Adapter laufen alle Faden der Kommunikation zusammen.

Der Anschluß an das Interface erfolgt uber zwei VG64 Leisten, wovon eine

zum FPGA fur die Leserichtung, die andere zum FPGA fur die Schreibrichtung

fuhrt. Die Belegungen dieser Stecker ist zusammen mit den Schaltplanen wie

ublich im Anhang aufgefuhrt.

5.4.1 Signalverteilung

Die Ramcontroller werden uber den horizontalen (mittels CN4) und den verti-

kalen (mittels CN5) IFBUS angeschlossen. Diese Busse sind als Flachbandverbin-

49

Kapitel 5 Realisierung der Hardware

dungen ausgefuhrt und am Ende mit Terminierungswiderstanden abgeschlossen,

um die Reflektionen am Leitungsende so gering wie moglich zu halten.

Die Verbindung CN3 zum Rechenfeld umfaßt den GPBUS und PRBUS mit

den Adreßleitungen zum Selektieren der FPGAs (FADR0–7), sowie den globalen

Takt ComCLK.

5.4.2 Taktverteilung

Neben der Verteilung der Signale auf die Rechenfeld– und Ramcontrollerpla-

tinen, wird auf der Interface–Adapter–Platine der globale Takt BSCLK erzeugt,

und uber Treiber werden die einzelnen Taktsignale verstarkt.

Die Grundtakterzeugung geschieht mittels eines TTL-Quarzoszillators, dessen

Ausgang direkt uber den Interface-Anschluß #2 (CN2) zum FPGA #2 des Interface

fuhrt. Dort ist, wie in Kapitel 4.3 beschrieben, die programmierbare Takterzeu-

gung untergebracht. Als Signale kommen von dort die Leitungen RAMWE_out,

ComCLK_out, BOE_out, CLKa_out bis CLKd_out, sowie GTBUF zuruck. Alle

Signale werden durch Tristate-Treiber 74F245 verstarkt. Dies bewirkt eine einheit-

liche Verzogerung aller Taktsignale ohne Phasenverschiebung. Deshalb werden

die fur den Betrieb des Interface benotigten Taktsignale von hier auch wieder

an das Interface zuruckgegeben und nicht direkt innerhalb der Interface-FPGAs

geroutet.

Das Signal GTBUF dient dazu, den Treiber U2 zu deaktivieren, wodurch

wegen der nachgeschalteten Pullup-Widerstande alle Ausgange auf high gehen.

Damit ist es moglich, das Rechenfeld anzuhalten (Schaltbild Anhang F, Bild 41).

An U2 werden die Signale BOE_out und RAMWE_out geteilt und jeweils uber

einen eigenen Treiber verstarkt. Die Signale fuhren dann zum horizontalen bzw.

vertikalen IFBUS. Somit muß nicht ein Treiber alle RAMs ansteuern, sondern zwei

konnen sich die Arbeit teilen, was einen weniger stark verzerrten Signalverlauf

zur Folge hat.

Die Signale, die uber U3 gefuhrt werden, konnen nicht abgeschaltet werden.

Dies muß so sein, da hiervon auch der Takt des Interface selbst herkommt, der

naturlich nicht mit angehalten werden darf, wenn das Rechenfeld stehen bleibt.

5.4.3 General Purpose Bus

Fur den GPBUS wurde ein Jumper-Feld auf der Interface-Adapter-Platine

vorgesehen, um diese Leitungen moglichst flexibel nutzen zu konnen.

So sollen zum einen zusatzliche Clocksignale verteilt werden konnen. Eine

denkbare Anwendung eines weiteren Clocksignals konnte beispielsweise in der

Verwendung als Takt fur die neun FPGAs des Rechenfeldes liegen. Diese FPGAs

konnten dann mit einer hoheren Frequenz arbeiten. Auch einen Datenaustausch

50

Kapitel 5 Realisierung der Hardware

zwischen diesen FPGAs ware noch moglich, da sich die Kommunikation der

Rechenfeld-FPGAs untereinander relativ einfach gestaltet (vgl. 4.1.2). Nur die

Kommunikation mit den Ramcontrollern mußte mit der langsameren Frequenz

ComCLK erfolgen.

Zum andern sollen globale Signale vom Interface an die FPGAs weitergeleitet

werden konnen oder umgekehrt globale Signale von den FPGAs zum Interface

gelangen. Da das Interface getrennte FPGAs fur Lese- und Schreibrichtung hat,

sollte der IFBUS teilweise an das eine oder andere Interface-FPAG angeschlossen

werden konnen.

Diese Aufgaben werden mit einem Jumper-Feld (vgl. Bild 42) realisiert. Die

Bits 0–3 des GPBUS konnen mittels der Jumper JP22–JP25 an die zusatzlichen

Clocksignale CLKa-CLKd angeschlossen werden. Sollte dies nicht erwunscht

sein, konnen diese Bits uber die Jumper JP18–JP21 zur Aufteilung an den GPin–

bzw. GPout-Bus weitergeleitet werden. Das Interface stellt zwei Richtungen

fur die moglichen globalen Leitungen des GPBUS zur Verfugung : acht Leitun-

gen fuhren zum Rechenfeld hin (GPin0–7), acht weitere vom Rechenfeld weg

(GPout0–7). Die Zuordnung des GPBUS zu dem GPin- bzw. GPout-Bus erfolgt

uber die Jumper JP2–JP17.

5.5 Layout

5.5.1 Stromversorgung

Da das gesamte System von PAr2 synchron arbeitet, wurde bei der Verteilung

der Stromversorgung mit Sorgfalt gearbeitet. Das gleichzeitige Schalten aller

Bauteile kann namlich erhebliche Stromspitzen mit sich bringen.

So wurde die Stromversorgung fur jeden Ramcontroller extra gefuhrt, fur

das Rechenfeld wurden drei Stromversorungsanschlusse vorgesehen. Die Versor-

gungsleitungen treffen sich erst direkt am Netzteil. Es gilt namlich, die gemein-

samen Leitungswege zweier Stromkreise so kurz wie moglich zu halten, um die

galvanische Kopplung zu minimieren. Optimal ware hierfur eine streng sternfor-

mige Spannungsverteilung, bei der alle Verbraucher direkt an einem gemeinsamen

Punkt angeschlossen sind. Dies laßt sich bei einem so umfangreichen Projekt wie

dem Rechenfeld aber nicht realisieren. So wurden die VCC-Versorungsleitungen

sternformig zu den einzelnen Platinen gefuhrt und dort moglichst gunstig ver-

teilt. Insbesondere wurde darauf geachtet, daß sich keine Schleifen in der VCC-

Versorung ausbilden.

Zusatzlich wurde vor jedem Anschluß eines Zweiges an das Netzteil ein

Tiefpaß in Form eines �-Gliedes zwischengeschaltet (Bild 25). Diese Tiefpasse

sollen hochfrequente Storsignale, die durch das Schalten der Treiber entstehen,

51

Kapitel 5 Realisierung der Hardware

auf den lokalen Versorgungszweig beschranken, in dem sie entstehen. Die Spule

L besteht dabei nur aus funf Windungen Kupferdraht. Da neben den sechs

Ramcontrollern und den drei Anschlussen des Rechenfeldes auch der Interface-

Adapter mit Spannung versorgt werden muß, wurde dieser Tiefpaß insgesamt

zehnmal benotigt.

C1 100nF C2 100nF

L

C3 100uF

Net

ztei

l

VCC

GND

Bild 25 �-Tiefpaßfilter in den Versorgungsleitungen

Die Stromversorgung des Oszillators, der das BSCLK-Signal erzeugt, wurde

noch einmal zusatzlich gefiltert. Dies erwies sich als notwendig, da sich die sehr

hohen Frequenzen des Grundtaktes sonst zu stark auf die Versorgungsspannung

ubertragen hatten. Dieser Filter ist in Bild 26 zu sehen.

C2 100nF C3 1000nF C5 10uF

Net

ztei

l

VCC

C4 100nFC1 100uF

Oszillator

Dr

Bild 26 Zusatzlicher Filter in der Stromversorungsleitung des Grundtaktoszillators

Eine weitere Schutzmaßnahme vor Spannungsspitzen bieten die reichlich vor-

handene Abblockkondensatoren. Es wurden nicht nur IC-Sockel mit eingebautem

Abblockkondensator verwendet, sondern zusatzlich moglichst nah an “Storquel-

len” wie RAMs und FPGA Kondensatoren angeschlossen.

5.5.2 Signalleitungen

Da auf allen Taktleitungen sowie dem Interface-Bus relativ hohe Frequen-

zen auftauchen, wurden diese Leitungen mit Abschlußwiderstanden versehen, um

Reflektion am Leitungsende zu minimieren. Fur die Berechnung dieser Abschluß-

widerstande, muß man den Wellenwiderstand der Leitungen berucksichtigen und

versuchen, einen Abschluß moglichst nahe an diesem Wellenwiderstand zu fin-

den. Denn nur bei einem Abschluß mit dem Wellenwiderstand entstehen keine

52

Kapitel 5 Realisierung der Hardware

Reflektionen am Leitungsende. Dabei muß als zweite Beschrankung der maxi-

male Ausgangsstrom der Treiber berucksichtigt werden, der nicht uberschritten

werden darf.

Bild 27 zeigt das Prinzip des Abschlusses, der als Thevenin-Terminierung

bezeichnet wird [3]. Hochfrequenzmaßig sind VCC und GND kurzgeschlossen,

wodurch sich als Abschlußwiderstand die Parallelschaltung der beiden Wider-

stande ergibt:

Ra =R1 �R2

R1 +R2

Als Belastung fur den Ausgang ergibt sich im Low-Zustand (UoL am Ausgang

des Treibers) der Strom IL, zu :

IL =UV CC � UoL

R1� UoL

R2� UV CC

R1

fur UoL � 0. Entsprechend erhalt man fur den High-Zustand (UoH ) die Belastung

zu

IH =UV CC � UoH

R1� UoH

R2� �UV CC

R2

fur UoH � UV CC

R1

R2

VCC

I

Uo

Leitung

Bild 27 Thevenin-Terminierung eines Gatterausgangs

Eine genaue Berechnung des Wellenwiderstandes der Leitung ist sehr auf-

wendig, da die Geometrie der Leiterbahn berucksichtigt werden muß. Da das

Signal im allgemeinen uber mehrere Stecker und somit auch unterschiedliche

Leitungsformen gefuhrt wird, wurde der Einfachheit halber ein Schatzwert von

100 zugrunde gelegt [3].

Die Treiber der 74F-Serie konnen leicht 24 mA treiben, so daß sich fur

R1 = 180 und R2 = 220 ergeben. Der Wellenwiderstand ergibt sich dann

zu Ra = 99. Die Ausgange der FPGAs konnen aber nur 12mA treiben, womit

sich rechnerisch R1 = 360 und R2 = 440 ergibt. Um nicht bis an die

53

Kapitel 5 Realisierung der Hardware

Belastungsgrenze der FPGAs zu gehen, wurden beide Widerstande zu R1 = R2 =470 gewahlt. Daraus folgt eine hochfrequenzmaßiger Abschlußwiderstand von

235. Einige Leitungen wie der Bus zwischen Ramcontroller und Rechenfeld

sind bidirektional, deshalb wurden in einem solchen Fall Abschlußwiderstande an

beiden Enden der Leitung vorgesehen, die dann jeweils den Wert 1k haben. Der

selbe Wert wurde fur die beiden Abschlusse des Interface-Bus gewahlt, der sich

in einen horizontalen und einen vertikalen Bus aufteilt und deshalb auch zweimal

abgeschlossen wird.

Die resultierende Abschlußwiderstande weichen zwar relativ stark von dem

zugrundegelegeten Wellenwiderstand von 100 ab, fur die Praxis erwiesen sich

diese Abschlusse jedoch als ausreichend.

Ein besonderes Problem stellt die Leitung fur BSCLK dar, die 64 MHz uber

ein Flachbandkabel vom Interface-Adapter zum Interface transportieren muß. Dies

fuhrte in der Testphase zu erheblichen Problemen. Deshalb wurde fur dieses

Signal das Flachbandkabel maßgeschneidert: Die Leitung, die das Signal BSCLK

transportiert, wurde an beiden Enden aufgeschnitten und durch ein abgeschirmtes

Kabel ersetzt.

Bei der Konzeption der Platinen wurde die Wichtigkeit der Abschlußwider-

stande unterschatzt, weshalb keine Abschlußwiderstande auf dem Bus zwischen

Rechenfeld und Ramcontroller vorgesehen wurden. Sie werden jetzt nachtraglich

uber die Meßstecker auf der Ramcontroller- bzw. Rechenfledplatine angeschlos-

sen. Ebenfalls nachtraglich wurden die Abschlußwiderstande fur das Taktsignal

ComCLK auf der Unterseite der Rechenfeldplatine eingebaut. Das Signal ist jetzt

dreimal mit jeweils 1k gegen Masse und VCC abgeschlossen. Problematisch ist

der Abschluß der zusatzlichen Taktsignale, die uber den global Bus transportiert

werden sollen. Da hier nicht klar ist, welches Signal von einem 74F-Treiber an-

gesteuert wird (im Fall des Clocksignals) und welches von einem FPGA-Ausgang

(im Fall eines globalen Steuersignals), konnen nicht alle Abschlusse festgelegt

werden. So wurde fur die Verteilung des CLKa-Signals die entsprechende Lei-

tung terminiert, wahrend alle anderen GPBUS-Signale offen sind.

5.6 Test

Da zum Zeitpunkt der Fertigstellung dieser Diplomarbeit das Interface noch

nicht verfugbar war, konnten nur einige grundlegende Tests in der Kommunikation

durchgefuhrt werden, wobei das XC4000 Demoboard von XILINX als Interface-

Ersatz diente [16]. Die Programmierung erfolgte mit Hilfe der XChecker Soft-

und Hardware von XILINX [17]. Sie ermoglicht es, ein FPGA uber die serielle

Schnittstelle eines Rechner zu programmieren.

54

Kapitel 5 Realisierung der Hardware

Im einzelnen wurden folgende Tests durchgefuhrt:

• Testen der Adreßdecodierung und Programmierung mehrerer FPGAs

nacheinander.

• Test der Kommunikation zwischen Interface und Ramcontroller. Es

wurden auf denselben Bits des IFBUS Daten gelesen und geschrieben, um

den Multiplexmechanismus zu testen. Die Datenubertragung lief auch mit

dem “letzten” Ramcontroller am Interfacebus erfolgreich bei 8 MHz.

• Test der Kommunikation zwischen Ramcontroller und Rechenfeld. Auch

hier wurde auf denselben Bits Daten in beide Richtungen geschickt, um den

Multiplexmechanismus zu uberprufen, sowie die am weitesten auseinander-

liegenden FPGAs angeschlossen, um den Fall der langsten Signallaufzeit ab-

zudecken. Dabei erwies es sich als notwendig, am Ramcontroller Abschluß-

widerstande an den Bus anzuschließen (vgl. vorangegangenen Abschnitt).

Dieser Test lief ebenfalls bei 8MHz erfolgreich.

• Test der Kommunikation zwischen Ramcontroller und RAM. Auch dieser

Test verlief bei 8MHz erfolgreich, sowohl bezuglich des Adreß- als auch des

Datenmultiplexens.

• Test der Kommunikation innerhalb des Rechenfeldes. Diese Kommuni-

kation ist die einfachste, da sie ohne Multiplexen auskommt. Deshalb war

der erfolgreiche Test bei 8MHz zu erwarten. Als weitergehender Test wurde

diese Kommunikation mit Hilfe eines zusatzlichen Taktsignals, das mit CLKa

erzeugt und uber GPBUS0 verteilt wurde, bei 16MHz getestet und verlief

ebenfalls erfolgreich. Damit ist es prinzipiell moglich, den inneren Teil des

Rechenfeldes mit der doppelten Taktfrequenz laufen zu lassen wie die Ran-

der bzw. die Ramcontroller. Dies stellt aber hohe Anforderungen bei der

Entwicklung eines Algorithmus, die in jedem Fall in COMPAR zu erbringen

waren.

Da die Korrektheit der Signale nur mit einem Logic Analyser festgestellt werden

konnte, wurden jeweils nur vier Bit der 24 Bit breiten Busse getestet.

5.7 Verbesserungsvorschlage zur Realisierung

Hardwaretechnisch mußte mehr Gewicht auf den korrekten Abschluß aller

Leitungen mit Abschlußwiderstanden gelegt werden. Der Hochfrequenzaspekt

der Signale bei 8 MHz wurde unterschatzt. Schließt man an den Treiber eines

8MHz-Signales nur offenes Stuck Kabel von 40–50 cm wird die Signalform

durch Reflektionen am Leitungsende so stark uberlagert und mit Uberschwingern

versehen, daß von der ursprunglichen Signalform faßt nichts mehr ubrig bleibt.

Als Verbesserung sollten bei kunftigen Platinenlayouts alle Leitungen, die von

FPGAs gesteuert werden mit mindestens jeweils ein 1k gegen VCC und GND

55

Kapitel 5 Realisierung der Hardware

abgeschlossen werden. Diese Fehleinschatzung ist aber nicht so gravierend, da die

Terminierungen ohne Probleme an den vorhandenen Meßsteckern angeschlossen

werden konnen.

56

Kapitel 6 Zusammenfassung

6 Zusammenfassung

In der vorliegenden Arbeit wurde ein zweidimensionales, synchrones Rechen-

feld entworfen und realisiert, auf dem Algorithmen abgearbeitet werden konnen,

die mit dem Entwurfssystem COMPAR erzeugt werden.

Das Rechenfeld basiert auf XILINX FPGAs vom Typ XC4005. Es stellt eine

Gatterkapazitat von 45000 Gattern bei einer Taktrate von 8 MHz zur Verfugung.

Die Datenbusbreite betragt 24 Bit. Pro Ramcontroller konnen maximal 384kB

RAM angeschlossen werden, was einem Gesamtspeicher von 2304kB entspricht.

Die maximale Datenrate zum Interface betragt 24 MB/s sowohl fur die Lese- als

auch die Schreibrichtung, insgesamt also 48 MB/s.

In dieser Arbeit wurden die Kommunikationsschemata der Teilprozessoren

(FPGAs) aus dem Gesamtkonzept von PAr2 entwickelt. Durch eine Beschrei-

bung der Hardware auf Registerebene und der Einfuhrung einheitlicher Signalbe-

zeichnungen als Schnittstellen innerhalb der FPGAs wurde eine Modellierung des

Rechenfeldes unabhangig von der tatsachlichen Hardwarerealisierung gefunden.

Dieses Registermodell (Bild 21,Kapitel 4.4) dient als Ausgangspunkt fur die Re-

prasentation der Hardware in abstrakteren Beschreibungen wie sie in COMPAR

notwendig sind.

Neben der realisierten Hardware ist zum Betrieb des Rechenfeldes eine

Schnittstelle in COMPAR notig, sowie ein Interface, um das Rechenfeld an einem

Host betreiben zu konnen. Momentan wird an diesem Interface gearbeitet, die

Fertigstellung in Kurze wird dann auch ein umfangreiches Testen der Hardware

von PAr2 ermoglichen.

57

Kapitel 6 Zusammenfassung

Literaturverzeichnis

[1] U. Arzt, J. Teich, and L. Thiele. The concepts of COMPAR: A compiler for

massive parallel architectures. In Proc. International Symposium on Circuits

and Systems (ISCAS), pages 681–684, San Diego, May 1992.

[2] K.M. Chandy and J. Misra. Parallel Program Design. Addison-Wesley Publ.

Comp., Reading, Mass., 1988.

[3] R. Dreyer. Strahenschutz, EMV-Aspekte beim Leiterplattendesign. ELRAD,

pages 56–61, Sept. 1992.

[4] M. Gokhale et.al. Building and using a highly parallel programmable logic

array. IEEE Computer, pages 81–89, Jan. 1992.

[5] Fairchild. Fast Fairchild Advanced Schottky TTL. Fast Data Book. Fairchild,

1985.

[6] H.-J. Herpel and M. Glesner. A rapid prtoryping approach to requirements

validation of application specific embedded controllers. In ITG-Fachberich

122 , ITG-Fachtagung, pages 23–34, Nov. 1992.

[7] P. Knapp. Konzept und Implementierung einer Steuerung des PAr2-

Rechenfeldes durch das PSI-Interface. Diplomarbeit am Lehrstuhl fur Mi-

kroelektronik, Universitat, des Saarlandes, Saarbrucken, 1993.

[8] J. Konig. Programmable SBus Interface. Lehrstuhl fur Mikroelektronik,

Universitat des Saarlandes, 6600 Saarbrucken, 1993.

[9] J. N. Morris. Hardware design of a rapid prototyping reconfigurable logic

system. North Carolina State University, ECE Dept., Box 7911, Raleigh, NC

27695-7911, 1992.

[10]V. Roychowdhury, L. Thiele, S. K. Rao, and T. Kailath. On the localization

of algorithms for VLSI processor arrays. in: VLSI Signal Processing III, IEEE

Press, New York, pages 459–470, 1989.

[11]Cypress Semiconductor. CMOS/BiCMOS Data Book. Cypress Semiconduc-

tor,3901 North First St., San Jose, CA 95134, 1992.

[12]J. Teich and L. Thiele. Control generation in the design of processor arrays.

Int. Journal on VLSI and Signal Processing, 3(2):77–92, 1991.

[13]J. Teich and L. Thiele. A transformative approach to the partitioning of

processor arrays. In Proc. Int. Conf. on Application Specific Array Processors,

IEEE Computer Society Press, pages 4–20, Berkeley, August 1992.

[14]L. Thiele. Materialien zur Vorlesung Mikroelektronik 3. Lehrstuhl fur

Mikroelektronik, Universitat des Saarlandes, 6600 Saarbrucken, 1991.

58

Kapitel 6 Zusammenfassung

[15]XILINX. The XC4000 Data Book. XILINX, 2100 Logic Drive, San Jose, CA

95124, 1991.

[16]XILINX. XACT Reference Guide, The XC4000 Design Demonstration Board.

XILINX, 2100 Logic Drive, San Jose, CA 95124, 1992.

[17]XILINX. XACT Reference Guide, XChecker Universal Download/Readback

Cable and Logic Probe. XILINX, 2100 Logic Drive, San Jose, CA 95124,

1992.

[18]XILINX. The XC4000 Design Implementation User Guide. XILINX, 2100

Logic Drive, San Jose, CA 95124, 1992.

59

Anhang A Programm zur Bestimmung des Timing

Anhang A Programm zurBestimmung des Timing

Zur Bestimmung des optimalen Timings wurde ein C-Programm geschrieben,

das im folgenden abgedruckt ist. In der Datei calctime.h (Listing 1) sind alle

Zeiten vordefiniert, die Datei calctime.c (Listing 2) enthalt das eigentliche

Programm. Es entspricht den in Kapitel 4.3 hergeleiteten Zeitabhangigkeiten.

Das Ergebnis des Programmlaufs zeigt Listing 3.

/* CALCTIME.H */

/* Delaytime-definitions follow */

#define Tshort 3 /*max time two outputs connected

while switching to tristate */

#define Tch 0 /*min data hold after clock */

#define Tfza 20 /*max FPGA PAD clock to PAD tristate

to active (empirisch) */

#define Tfaz 20

#define Tpick 16 /*min FPGA data vaild before clock */

#define Tokop 12

#define Tpar 20 /*max delay RAM adresse read from

RCMux to PAD (empirisch)*/

#define Tpaw 37 /*max delay clk low to RAM adresse

write valid on PAD (empirisch)*/

/* External Buffers of the IFBus 74F245*/

#define Tbza 8 /*max Buffer tristate to active */

#define Tbd 6 /*max Buffer propagation delay */

#define Tboz Tfza-Tbza /*min Buffer outputs disable */

/* RAM-Specifications: 12ns RAM CY7B185/186 */

#define Trdoe 6 /*max: RAM OE low to data valid */

#define Taa 12 /*min: RAM adress to data valid */

#define Tsa 0 /*min: Adress set-up to write start */

#define Twr 8 /*min: RAM write pulse width */

#define Tdw 0 /*min: Data valid to WE */

#define Tdh Tpick+Tbd /*min: data hold valid before clock */

#define Tdrf 8 /* Propagation delay on RF-LOOP wire */

#define Tdif 11 /* Propagation delay on IFBUS wire */

#define resolution 8 /* Number of Segments between one Clocktime */

Listing 1 calctime.h

60

Anhang A Programm zur Bestimmung des Timing

/*

Optimal timing computation for FPGA-Array

Tobias Blickle 11.9.92

*/

#include "calctime.h"

#include <stdio.h>

#define rows 13

#define LARGE 1E20

set_up_table(LPA,LPb,a,b,c,d,e)

int *LPA;

int *LPb;

int a,b,c,d,e;

{

/*input data follows , see documentation*/

LPA[0]=b-a; LPb[0]=Tfza-Tpick;

LPA[1]=a; LPb[1]=2*Tdrf+Tpick+Tfza;

LPA[2]=a-c; LPb[2]=Tbza+Tpick;

LPA[3]=a; LPb[3]=Tokop+Tbd+Tpick;

LPA[4]=c; LPb[4]=Tfaz-Tshort-Tbza;

LPA[5]=b-a; LPb[5]=2*Tdif+Tpick+Tokop+Tbza;

LPA[6]=b-a; LPb[6]=2*Tdif+Tfza+Tpick;

LPA[7]=a; LPb[7]=Tpar+Taa+Tpick;

LPA[8]=a-d; LPb[8]=Trdoe+Tpick;

LPA[9]=d; LPb[9]=Tfaz-Tshort-Trdoe;

LPA[10]=e-a; LPb[10]=Tpaw+Tsa;

LPA[11]=e-a; LPb[11]=Tfza+Tdw;

LPA[12]=b-e; LPb[12]=Twr;

}

main()

{

int *A=(int *)calloc(rows,sizeof(int));

int *b=(int *)calloc(rows,sizeof(int));

int rueck;

int am,cm,dm,em;

int aopt,copt,dopt,eopt;

double val=LARGE;

double minimum;

char *command="cat calctime.h\n";

printf("Computing optimal timing for FPGA array.\n\n");

printf("The maximal overlay time of two outputs beeing active\n");

printf("at the same time ist set to %d ns.\n",Tshort);

printf("The following restrictions are set:\n\n");

fflush(stdout);

system(command);

/* Enumerate all possible values */

for (am=1;am<resolution;++am)

for (cm=1; cm<resolution;++cm)

for (dm=1;dm <resolution;++dm)

61

Anhang A Programm zur Bestimmung des Timing

for (em=1;em <resolution;++em)

{

set_up_table(A,b,am,resolution,cm,dm,em);

rueck=get_minimum(A,b,rows,&minimum);

if (rueck==0 && minimum<val)

{

val=minimum;aopt=am;copt=cm;dopt=dm;eopt=em;

}

}

if (val==LARGE)

{

printf("No solution was found !\n");

printf("Please check restrictions !\n");

}

else

{

printf("Soloution found:\n");

printf("\ta\tb\tc\td\te\t tau[ns]\t BSCLK[MHz]\t ComCLK[Mhz]\n");

printf("\t%d\t%d\t%d\t%d\t%d\t%10.5f\t%10.5f\t%10.5f\n",

aopt,resolution,copt,dopt,eopt,val,1000/val,125/val);

}

printf("\nTo edit other restrictions change the file ’calctime.h’\n");

printf("and re-run ’make calctime’ to compute output.\n");

return(0);

}

/*

Determines the minimum x,

subj. to a*x >= b

returns 0, if solution is valid

*/

int get_minimum(a,b,r,min)

int *a,*b,r;

double *min;

{

register int i;

*min=-LARGE;

for (i=0;i<r;++i)

{

if (a[i]==0) return (-2);

if (a[i]<0 && b[i]>0) return (-3);

if ((double)b[i]/(double)a[i]>=*min)

*min=(double)b[i]/(double)a[i];

}

if (*min==-LARGE) return -1;

return 0;

}

Listing 2 calctime.c

62

Anhang A Programm zur Bestimmung des Timing

Computing optimal timing for FPGA array.

The maximal overlay time of two outputs beeing active

at the same time ist set to 3 ns.

The following restrictions are set:

/* Delaytime-definitions follow */

#define Tshort 3 /*max time two outputs connected

while switching to tristate */

#define Tch 0 /*min data hold after clock */

#define Tfza 20 /*max FPGA PAD clock to PAD tristate

to active (empirisch) */

#define Tfaz 20

#define Tpick 16 /*min FPGA data vaild before clock */

#define Tokop 12

#define Tpar 20 /*max delay RAM adresse read from

RCMux to PAD (empirisch)*/

#define Tpaw 37 /*max delay clk low to RAM adresse

write valid on PAD (empirisch)*/

/* External Buffers of the IFBus 74F245*/

#define Tbza 8 /*max Buffer tristate to active */

#define Tbd 6 /*max Buffer propagation delay */

#define Tboz Tfza-Tbza /*min Buffer outputs disable */

/* RAM-Specifications: 12ns RAM CY7B185/186 */

#define Trdoe 6 /*max: RAM OE low to data valid */

#define Taa 12 /*min: RAM adress to data valid */

#define Tsa 0 /*min: Adress set-up to write start */

#define Twr 8 /*min: RAM write pulse width */

#define Tdw 0 /*min: Data valid to WE */

#define Tdh Tpick+Tbd /*min: data hold valid before clock */

#define Tdrf 8 /* Propagation delay on RF-LOOP wire */

#define Tdif 11 /* Propagation delay on IFBUS wire */

#define resolution 8 /* Number of Segments during one Clocktime */

Soloution found:

a b c d e tau[ns] BSCLK[MHz] ComCLK[Mhz]

4 8 1 1 7 14.50000 68.96552 8.62069

To edit other restrictions change the file ’calctime.h’

and re-run ’make calctime’ to compute output.

Listing 3 Ergebnis des Programmlaufes von calctime

63

Anhang B Technische Angaben Rechenfeld

Anhang B Technische Angaben Rechenfeld

Der Schaltplan des Rechenfeldes ist auf der folgenden Seite abgedruckt. Die

Reproduktionsqualitat ist leider nicht sehr gut, da das Orginal im Format DIN A0

erstellt ist. Dieser Plan enthalt nicht die auf der Platine vorhandenen Meßstecker.

An jedem FPGA ist fur jede Richtung ein Meßstecker vorhanden, der den lokalen

Bus in einem 26poligen Wannenstecker zuganglich macht. Mit diesen Stecker ist

es moglich, auch kleinere Rechenfelder zu realiseren, indem die nicht benotigten

FPGAs uberbruckt.

Der Schaltplan des Blocks PRGRBK, der die Tristatetreiber enthalt, ist in

Bild 36 im Anhang E gezeigt. Er gilt gleichermaßen fur die Rechfeld- wie fur

die Ramcontrollerplatine.

Auf den folgenden Seiten sind die Pinbelegungen der Stecker CN1–CN7 der

Rechenfeld-Platine aufgelistet. Die Belegungen der Meßstecker JM1 – JM45

sind in Anhang G gegeben. Die Stecker JM1–JM9 sind vom Typ A, wahrend

JM10–JM45 vom Typ B sind.

Zu den Verbindungen CN2–CN7, die zu den Ramcontroller fuhren ist folgen-

des zu bemerken: Da es sich bei diesen Stecker und seinem Gegenstuck auf der

Ramcontroller-Platine um VG64–Verbinder mit 90� Anschlussen handelt, ist die

Nummerierung — obwohl die Stecker miteinander verbunden werden — spiegel-

verkehrt. Dies ist bereits in der hier aufgefuhrten Belegungstabelle berucksichtigt.

64

Anhang B Technische Angaben Rechenfeld

Bild 28 Schaltplan des Rechenfeldes

65

Anhang B Technische Angaben Rechenfeld

B3

A1

A2

C5

B4

A3

B5

B6

A5

C7

B7

A6

A7

A8

C9

B9

A9

B10

C10

A10

A11

B11

B12

A13

A14

C12

B13

B14

T2

P4

R3

R4

P5

T3

T4

R6

T5

P7

R7

T6

T7

T8

P9

R9

T9

R10

P10

T10

T11

R11

T13

T14

P12

R13

T15

T16

B2

B1

D3

C2

C!

E3

E2

E1

F2

F1

G3

G2

G1

H1

J3

J2

J1

K1

K2

K3

L1

L2

N1

P1

M3

N2

P2

R1

B16

D14

C15

D15

E14

C16

F15

E16

F16

G14

G15

G16

H16

H15

J15

J16

K16

K15

K14

L16

M16

L15

P16

M14

N15

P15

N14

R16

PG

CK

4,A

1

CS

1,A

2A8

A9

A10

A11

A12

A13

A14

SG

CK

1,A

15

PGCK1,A16

A17

TDI

TCK

TMS

SGCK2

PG

K2

HD

C

LD

C

ER

R,IN

IT

SG

KC

3

PGCK3

D7

D6

D5

CS0

D4

D3

RS

D2

D1

RDY/BUSY

D0,DIN

SGCK4,DOUT

A0,W

SA3

A4

A5

A6

A7

XC4005-PG156

DL

3

DL

4

DL

5

DL

6

DL

7

DL

8

DL

9

DL

10

DL

11

DL

12

DL

13

DL

14

DL

15

DL

16

DL

17

DL

18

DL

19

DL

20

DL

21

DL

22

GP 0 (ICLK)

DIN

DD 0

DD 1

DD 2

DD 3

DD 4

DD 5

DD 6

DD 7

DD 8

DD 9

DD 10

DD 11

DD 12

DD 13

DD 14

DD 23

DD 22

DD 21

DD 20

DD 19

DD 18

DD 17

DD 16

DD 15

GP 3

GP 7

DR

0

DR

1

DR

2

DR

3

DR

4

DR

5

DR

6

DR

7

DR

8

DR

9

DR

10

DR

11

DR

12

DR

13

DR

14

DR

15

DR

16

DR

17

DR

18

DR

19

DR

20

DR

21

DR

22

DR

23

INIT

GP

1

GP

4

RIP

DU 0

DU 1

DU 2

DU 3

DU 4

DU 5

DU 6

DU 7

DU 8

DU 9

DU 10

DU 11

DU 12

DU 13

DU 14

DU 15

DU 16

DU 17

DU 18

DU 20

DU 21

DU 22

DU 23

DU 19

GTS

GSR

GP 2

GP 5

GP

8

Co

mC

lk

DL

0

DL

1

DL

2

DL

23

GP

6

GP

9

Rechenfeld

Bild 29 Pinbelegung eines Rechenfeld-FPGAs (Sicht entsprechend dem XILINX-Tool XACT)

66

Anhang B Technische Angaben Rechenfeld

DONER15

CCLKR2

PROGR14

DINP4

INITH15

RTRIG(M0)A16

RDATA(M1)A15

RCLK(M2)B15

RIPD14

COMCLK

B2

GSR

B13

GTS

C12

GP0 GSCK4T2

GP1 GSCK3R16

GP2 GSCK2B14

GP3 GPCK3T15

GP4 GPCK2B16

GP5 GPCK1B3

GP6 GPCK4P2

DU0

A1

DU1

A2

DU2

C5

DU3

B4

DU4

A3

DU5

B5

DU6

B6

DU7

A5

DU8

C7

DU9

B7

DU10

A6

DU11

A7

DU12

A8

DU13

C9

DU14

B9

DU15

A9

DU16

B10

DU17

C10

DU18

A10

DU19

A11

DU20

B11

DU21

B12

DU22

A13

DU23

A14

DL0D3

DL1C2

DL2C1

DL3E3

DL4E2

DL5E1

DL6F2

DL7F1

DL8G3

DL9G2

DL10G1

DL11H1

DL12J3

DL13J2

DL14J1

DL15K1

DL16K2

DL17K3

DL18L1

DL19L2

DL20N1

DL21P1

DL22M3

DL23N2

DD0

R3

DD1

R4

DD2

P5

DD3

T3

DD4

T4

DD5

R6

DD6

T5

DD7

P7

DD8

R7

DD9

T6

DD10

T7

DD11

T8

DD12

P9

DD13

R9

DD14

T9

DD15

R10

DD16

P10

DD17

T10

DD18

T11

DD19

R11

DD20

T13

DD21

T14

DD22

P12

DD23

R13

DR0C15

DR1D15

DR2E14

DR3C16

DR4F15

DR5E16

DR6F16

DR7G14

DR8G15

DR9G16

DR10H16

DR11J15

DR12J16

DR13K16

DR14K15

DR15K14

DR16L16

DR17M16

DR18L15

DR19P16

DR20M14

DR21N15

DR22P15

DR23N14

GP7T16

GP8B1

GP9R1

XC4005PG156

Rechenfeld - FPGA

Bild 30 Pinbelegung eines Rechenfeld-FPGAs

67

Anhang B Technische Angaben Rechenfeld

Rechenfeld-Platine

40poliger Flachbandkabelanschluß

CN1 Interface-Adapter-Anschluß

1 GNDBOE (NC)

2

3 GND ComCLK (1) 4

5 GND ComCLK (2) 6

7 GND RAMWE (NC) 8

9 GTS GSR 10

11 GND GP0 12

13 GP1 GP2 14

15 GP3 GP4 16

17 GP5 GP6 18

19 GP7 GP8 20

21 GP9 GND 22

23 PR0 (INIT) PR1 (DIN) 24

25 PR2 (PROG) PR3 (CCLK) 26

27 PR4 (RIP) PR5 (RCLK) 28

29 PR6 (RDATA) PR7 (RTRIG) 30

31 PR8 (DONE) GND 32

33 FADR0 FADR1 34

35 FADR2 FADR3 36

37 FADR4 (NC) FADR5 (NC) 38

39 FADR6 (NC) PADR7 (NC) 40

Tabelle 4 Pinbelegung Rechenfeld CN1

68

Anhang B Technische Angaben Rechenfeld

Rechenfeld-Platine

VG 64 Leiste mannlich (s. Bemerkung im Text)

CN 2 - CN 7 Ramcontrolleranschluß

A1 GND GND C1

A2 DRF1 DRF0 C2

A3 DRF3 DRF2 C3

A4 DRF5 DRF4 C4

A5 DRF7 DRF6 C5

A6 GND GND C6

A7 DRF9 DRF8 C7

A8 DRF11 DRF10 C8

A9 DRF13 DRF12 C9

A10 DRF15 DRF14 C10

A11 GND GND C11

A12 DRF17 DRF16 C12

A13 DRF19 DRF18 C13

A14 DRF21 DRF20 C14

A15 DRF23 DRF22 C15

A16 GND GND C16

A17 GP8 GP9 C17

A18 GP6 GP7 C18

A19 GP4 GP5 C19

A20 GP2 GP3 C20

A21 GP0 GP1 C21

A22 GND GND C22

A23 SELECT GND C23

A24 RTRIG (PR7) DONE (PR8) C24

A25 RCLK (PR5) RDATA (PR6) C25

A26 CCLK (PR3) RIP (PR4) C26

A27 DIN (PR1) PROG (PR2) C27

A28 GND INIT (PR0) C28

A29 GSR GND C29

A30 GND GND C30

A31 ComCLK GTS C31

A32 GND GND C32

Tabelle 5 Pinbelegung Rechenfeld CN2 – CN7

69

Anhang C Technische Angaben Ramcontroller

Anhang C Technische AngabenRamcontroller

Auf der folgende Seite ist der Schaltplan des Ramcontrollers abgebildet,

anschließend folgt die Belegung des FPGAs sowie die Steckerbelegungen auf

der Platine.

Zu dem Stecker CN1 (Rechenfeldanschluß) gilt das gleiche wie beim Re-

chenfeld gesagte: Da es sich bei diesem Stecker und seinem Gegenstuck auf der

Rechenfeldseite um VG64 Verbinder mit 90� Anschlussen handelt, ist die Numme-

rierung — obwohl die Stecker miteinander verbunden werden — spiegelverkehrt.

Dies ist bereits in der hier aufgefuhrten Belegungstabelle berucksichtigt.

70

Anhang C Technische Angaben Ramcontroller

Bild 31 Schaltplan des Ramcontrollers

71

Anhang C Technische Angaben Ramcontroller

B3

A1

A2

C5

B4

A3

B5

B6

A5

C7

B7

A6

A7

A8

C9

B9

A9

B10

C10

A10

A11

B11

B12

A13

A14

C12

B13

B14

T2

P4

R3

R4

P5

T3

T4

R6

T5

P7

R7

T6

T7

T8

P9

R9

T9

R10

P10

T10

T11

R11

T13

T14

P12

R13

T15

T16

B2

B1

D3

C2

C!

E3

E2

E1

F2

F1

G3

G2

G1

H1

J3

J2

J1

K1

K2

K3

L1

L2

N1

P1

M3

N2

P2

R1

B16

D14

C15

D15

E14

C16

F15

E16

F16

G14

G15

G16

H16

H15

J15

J16

K16

K15

K14

L16

M16

L15

P16

M14

N15

P15

N14

R16

PG

CK

4,A

1

CS

1,A

2A8

A9

A10

A11

A12

A13

A14

SG

CK

1,A

15

PGCK1,A16

A17

TDI

TCK

TMS

SGCK2

PG

K2

HD

C

LD

C

ER

R,IN

IT

SG

KC

3

PGCK3

D7

D6

D5

CS0

D4

D3

RS

D2

D1

RDY/BUSY

D0,DIN

SGCK4,DOUT

A0,W

SA3

A4

A5

A6

A7

XC4005-PG156

DR

F 3

DR

F4

DR

F 5

DR

F 6

DR

F 7

DR

F 8

DR

F 9

DR

F 1

0

DR

F 1

1

DR

F 1

2

DR

F 1

3

DR

F 1

4

DR

F 1

5

DR

F 1

6

DR

F 1

7

DR

F 1

8

DR

F 1

9

DR

F 2

0

DR

F 2

1

DR

F 2

2

GP 0 (ICLK)

DIN

IFD0

IFD1

IFD2

IFD3

IFD4

IFD5

IFD6

IFD7

IFD8

IFD9

IFD10

IFD11

IFD12

IFD13

IFD14

IFD23

IFD22

IFD21

IFD20

IFD19

IFD18

IFD17

IFD16

IFD15

GP 3

GP 7

RC

BO

E NC

NC

NC

NC

BA

NK

3

BA

NK

2

BA

NK

1

BA

NK

0

AD

R15

AD

R14

AD

R13

AD

R12

AD

R11

AD

R9

AD

R8

AD

R7

AD

R6

AD

R5

AD

R4

AD

R3

AD

R2

AD

R1

AD

R0

INIT

GP

1

GP

4

RIP

DRAM0

DRAM1

DRAM2

DRAM3

DRAM4

DRAM5

DRAM6

DRAM7

DRAM8

DRAM9

DRAM10

DRAM11

DRAM12

DRAM13

DRAM14

DRAM15

DRAM16

DRAM17

DRAM18

DRAM 20

DRAM21

DRAM22

DRAM 23

DRAM19

GTS

GSR

GP 2

GP 5

GP

8

Co

mC

lk

DR

F 0

DR

F 1

DR

F 2

DR

F 2

3

GP

6

GP

9

Ramcontroller

Bild 32 Pinbelegung eines Ramcontroller-FPGA (Sicht entsprechend dem XILINX-Tool XACT)

72

Anhang C Technische Angaben Ramcontroller

XC4005PG156

d15

d16

d17

d18

d19

d20

d21

d22

d23

d2d3d4d5d6d7d8d9d10

d11

d12

d13

d14

d0d1

DONER15

CCLKR2

PROGR14

DINP4

INITH15

RTRIG(M0)A16

RDATA(M1)A15

RCLK(M2)B15

RIPD14

COMCLK

B2

GSR

B13

GTS

C12

GP0 GSCK4T2

GP1 GSCK3R16

GP2 GSCK2B14

GP3 GPCK3T15

GP4 GPCK2B16

GP5 GPCK1B3

GP6 GPCK4P2

DU0

A1

DU1

A2

DU2

C5

DU3

B4

DU4

A3

DU5

B5

DU6

B6

DU7

A5

DU8

C7

DU9

B7

DU10

A6

DU11

A7

DU12

A8

DU13

C9

DU14

B9

DU15

A9

DU16

B10

DU17

C10

DU18

A10

DU19

A11

DU20

B11

DU21

B12

DU22

A13

DU23

A14

DL0D3

DL1C2

DL2C1

DL3E3

DL4E2

DL5E1

DL6F2

DL7F1

DL8G3

DL9G2

DL10G1

DL11H1

DL12J3

DL13J2

DL14J1

DL15K1

DL16K2

DL17K3

DL18L1

DL19L2

DL20N1

DL21P1

DL22M3

DL23N2

DD0

R3

DD1

R4

DD2

P5

DD3

T3

DD4

T4

DD5

R6

DD6

T5

DD7

P7

DD8

R7

DD9

T6

DD10

T7

DD11

T8

DD12

P9

DD13

R9

DD14

T9

DD15

R10

DD16

P10

DD17

T10

DD18

T11

DD19

R11

DD20

T13

DD21

T14

DD22

P12

DD23

R13

DR0C15

DR1D15

DR2E14

DR3C16

DR4F15

DR5E16

DR6F16

DR7G14

DR8G15

DR9G16

DR10H16

DR11J15

DR12J16

DR13K16

DR14K15

DR15K14

DR16L16

DR17M16

DR18L15

DR19P16

DR20M14

DR21N15

DR22P15

DR23N14

GP7T16

GP8B1

GP9R1

a0a1a2a3a4a5drf18

drf19drf20drf21drf22drf23

drf17

drf9drf10drf11drf12drf13drf14drf15drf16

a6a7a8a9a10a11a12a13a14bank0bank1bank2bank3

drf1drf2drf3drf4drf5drf6drf7drf8

drf0 rcboe

dram0

dram1

dram2

dram3

dram4

dram5

dram6

dram7

dram8

dram9

dram10

dram11

dram12

dram13

dram14

dram15

dram16

dram17

dram18

dram19

dram20

dram21

dram22

dram23

Ramcontroller-FPGA

Interface-Anschluss

Rec

henf

eld-

Ans

chlu

ss

Ram-Datenbus

Ram

-Adr

essb

us

Bild 33 Pinbelegung eines Rechenfeld-FPGAs

73

Anhang C Technische Angaben Ramcontroller

Ramcontroller-Platine

VG 64 Leiste weiblich (s. Bemerkung im Text)

CN 1 Rechenfeldanschluß

A1 GND GND C1

A2 ComCLK GTS C2

A3 GND GND C3

A4 GSR GND C4

A5 GND INIT (PR0) C5

A6 DIN (PR1) PROG (PR2) C6

A7 CCLK (PR3) RIP (PR4) C7

A8 RCLK (PR5) RDATA (PR6) C8

A9 RTRIG (PR7) DONE (PR8) C9

A10 SELECT GND C10

A11 GND GND C11

A12 GP0 GP1 C12

A13 GP2 GP3 C13

A14 GP4 GP5 C14

A15 GP6 GP7 C15

A16 GP8 GP9 C16

A17 GND GND C17

A18 DRF23 DRF22 C18

A19 DRF21 DRF20 C19

A20 DRF19 DRF18 C20

A21 DRF17 DRF16 C21

A22 GND GND C22

A23 DRF15 DRF14 C23

A24 DRF13 DRF12 C24

A25 DRF11 DRF10 C25

A26 DRF9 DRF8 C26

A27 GND GND C27

A28 DRF7 DRF6 C28

A29 DRF5 DRF4 C29

A30 DRF3 DRF2 C30

A31 DRF1 DRF0 C31

A32 GND GND C32

Tabelle 6 Pinbelegung Ramcontroller CN1

74

Anhang C Technische Angaben Ramcontroller

Ramcontroller-Platine

60 poliger Flachbandkabelanschluß

CN2 Interface-Adapter-Anschluß

1 NC (VCC f. Terminierung) GND 2

3 RAMWE GND 4

5 BOE GND 6

7 READ23 READ22 8

9 READ21 READ20 10

11 WRITE23 WRITE22 12

13 WRITE21 WRITE20 14

15 GND READ19 16

17 READ18 READ17 18

19 READ16 WRITE19 20

21 WRITE18 WRITE17 22

23 WRITE16 GND 24

25 READ15 READ14 26

27 READ13 READ12 28

29 WRITE15 WRITE14 30

31 WRITE13 WRITE12 32

33 GND READ11 34

35 READ10 READ9 36

37 READ8 WRITE11 38

39 WRITE10 WRITE9 40

41 WRITE8 GND 42

43 READ7 READ6 44

45 READ5 READ4 46

47 WRITE7 WRITE6 48

49 WRITE5 WRITE4 50

51 GND READ3 52

53 READ2 READ1 54

55 READ0 WRITE3 56

57 WRITE2 WRITE1 58

59 WRITE0 GND 60

Tabelle 7 Pinbelegung Ramcontroller CN2

75

Anhang C Technische Angaben Ramcontroller

Ramcontroller-Platine

50 poliger Platinenstecker

CN3, CN4 Ramkarte

1 VCC GND 2

3 A0 RAMWE 4

5 A2 A1 6

7 A3 A4 8

9 A5 A6 10

11 A7 A8 12

13 A9 A10 14

15 A11 A12 16

17 A13 (CE2) A14 (NC) 18

19 BOE BANK0 20

21 BANK1 BANK2 22

23 BANK3 GND 24

25 DRAM23 DRAM22 26

27 DRAM21 DRAM20 28

29 DRAM19 DRAM18 30

31 DRAM17 DRAM16 32

33 DRAM15 DRAM14 34

35 DRAM13 DRAM12 36

37 DRAM11 DRAM10 38

39 DRAM9 DRAM8 40

41 DRAM7 DRAM6 42

43 DRAM5 DRAM4 44

45 DRAM3 DRAM2 46

47 DRAM1 DRAM0 48

49 GND VCC 50

Tabelle 8 Pinbelegung Ramcontroller CN3, CN4

76

Anhang D Technische Angaben Ramcard I

Anhang D Technische Angaben Ramcard I

Die Ramcard kann entweder drei RAMs vom Typ 7B185 (8k x 8) oder drei

RAMs des Typs 7C199 (32k x 8) oder pincompatible Typen aufnehmen. Die

Zugriffszeit sollte 12ns sein. Die Pinbelegung der Sockel auf der Ramcard sind

in Bild 34 aufgefuhrt. Bei einem Einbau von 32k x 8 RAMs muß der Adreßmul-

tiplexer in den Ramcontroller-FPGAs naturlich an den erweiterten Adreßraum

anpaßt werden.

VCCWEA13A3A2A1OEA0CED7D6D5D4D3

A14A4A5A6A7A8A9A10A11A12D0D1D2GND

1234567891011121314

2827262524232221201918171615

NC

CE2

A5A6A7A8A9A10A11A12A13A14

A4

Pinbelegung RAMCARD 7B1857B185 7C1997C199

Bild 34 Pinbelegungen der DIL-Sockel der Ramcard

77

An

han

gD

Tech

nisch

eA

ng

aben

Ram

cardI

8 7 6 5 4 3 2 1

A

B

C

D

12345678

D

C

B

A

Date: February 19, 1993 Sheet 1 of 1

Size Document Number REV

A3 A

Title

RAMCARD 8k x 24 (32k x 24)

Tobias Blickle

Lehrstuhl fuer Mikroelektronik

Universitaet des Saarlandes

1

2

JP1JUMPER

1

2

JP3JUMPER

VCC

1

2

JP2JUMPER

1

2

JP4JUMPER

BOE

A0A2A3A5A7A9A11A13

1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 4647 4849 50

CN1

Platinenstecker 2x25

BANK0

RAMWEA1A4A6A8A10A12A14

A0

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

A11

A12

A13

A0

A1

A2

A3

A4

A5

A6

A14

A0

21

A1

23

A2

24

A3

25

A4

2

A5

3

A6

4

A7

5

A8

6

A9

7

A10

8

A11

9

A12

10

A13

26

A14

1

WE

27

OE

22

CE

20

D0

11

D1

12

D2

13

D3

15

D4

16

D5

17

D6

18

D7

19

U17C199

A0

21

A1

23

A2

24

A3

25

A4

2

A5

3

A6

4

A7

5

A8

6

A9

7

A10

8

A11

9

A12

10

A13

26

A14

1

WE

27

OE

22

CE

20

D0

11

D1

12

D2

13

D3

15

D4

16

D5

17

D6

18

D7

19

U27C199

A0

A7

A8

A9

A10

A11

A12

A13

A14

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

A11

A12

A13

A14

BANK2

A0

21

A1

23

A2

24

A3

25

A4

2

A5

3

A6

4

A7

5

A8

6

A9

7

A10

8

A11

9

A12

10

A13

26

A14

1

WE

27

OE

22

CE

20

D0

11

D1

12

D2

13

D3

15

D4

16

D5

17

D6

18

D7

19

U37C199

D2D4D6D8D10D12D14D16D18D20D22

BANK1BANK3

D3D5D7D9D11D13D15D17D19D21D23

GND

D1 D0

D17

D18

D19

D20

D21

D22

D23

D15

D16

D8

D9

D10

D11

D12

D13

D14

D0

D1

D2

D3

D4

D5

D6

D7

VCC

GND

1

2C1100n

1

2C2100n

1

2C3100n

Bild

35

Sch

altbild

der

Ram

cardI

78

Anhang E Technische Angaben Program&Readback Buffer

Anhang E Technische AngabenProgram&Readback Buffer

Der Program&Readback-Bus (PRBUS) darf immer nur an hochstens ein

FPGA gleichzeig angeschlossen sein. Deshalb besitzt jedes FPGA einen Pro-

gram&Readback Treiber, der die entsprechenden Anschlusse des FPGAs erst dann

zum PRBUS durchschaltet, wenn ein Adressierungssignal (SELECT) dies erlaubt.

Im nicht selektierten Zustand sorgt ein Widerstandsnetzwerk fur den richtigen

logischen Pegel an den Eingangen des FPGAs.

Den Schaltplan zeigt Bild 36 . Das DONE-Signal wird nicht uber Treiber

geschaltet, sondern fuhrt direkt zu allen FPGAs, da dadurch ein synchrones Um-

schalten aller FPGAs vom Programmiermodus in den Ablaufmodus gewahrleistet

wird.

Zu Meß- und Testzwecken sind einige Signale auf den Meßstecker JM gefuhrt

(genauers siehe Meßsteckerbelegung in Anhang G).

Der Plan enthalt keine feste Nummerierung der Bauelement, da sie unter-

schliedlich fur Ramcontroller und Rechenfeld ausfallt, bzw. das Rechenfeld diese

Schaltung neun mal enthalt.

79

An

han

gE

Tech

nisch

eA

ng

aben

Pro

gram

&R

eadb

ackB

uffer

8 7 6 5 4 3 2 1

A

B

C

D

12345678

D

C

B

A

Date: February 19, 1993 Sheet of 1

Size Document Number REV

A4

Title

PRGRBK - Program & Readback Buffer

Tobias Blickle

Lehrstuhl fuer Mikroelektronik

Universitaet des Saarlandes

1 2 3 4 5 6 7 8 9

RN?8 x 4k7

Messpunkte

13579

2468

10

JM?

CON10A

i\n\i\t\out

GND

VCC

rclkincclkin

rtrigin

dininp\r\o\g\in

A1

2

A2

3

A3

4

A4

5

A5

6

A6

7

A7

8

A8

9

G

19

DIR

1

B1

18

B2

17

B3

16

B4

15

B5

14

B6

13

B7

12

B8

11

U?74F245

ripoutrdataout

GNDi\n\i\t\in

ripinrdatain

s\e\l\

D?LED

R?470

rtrigoutrclkoutcclkoutp\r\o\g\outdinout

VCC

Bild

36

Sch

altbild

des

Pro

gram

&R

eadback

Buffer

80

Anhang F Technische Angaben Interface-Adapter

Anhang F Technische AngabenInterface-Adapter

Der Interface-Adapter in Fadel-Technik realisiert. Das Layout der Platine

zeigt Bild 38. Die Belegung des Jumper-Blocks fur die Signalzuordung im

GPBUS ist in Bild 37 zu sehen. Die Schaltplane des Interface-Adapters sind

in Bild 39, 40, 41 und 42 gezeigt.

JP25

JP24

JP23

JP22

JP18

JP19

JP20

JP21

JP3

JP4

JP5

JP6

JP16

JP15

JP14

JP13

JP7

JP8

JP12

JP9

JP10

JP11

JP2

JP1

Bild 37 Lage der GPBUS Jumper im Jumperfeld

81

Anhang F Technische Angaben Interface-Adapter

CN

2 In

terf

ace

Writ

e C

ontr

olC

N1

Inte

rfac

e R

ead

Con

trol

CN

3 R

eche

nfel

d

CN

4 IF

BU

S h

oriz

onta

l

CN5 IFBUS vertikal

JM4

JM3

JM1

JM2

U3 U2

JumperfeldGPSWITCH

J1

U1

Bild 38 Layout der Interface-Adapter-Platine

82

Anhang F Technische Angaben Interface-Adapter

Bild 39 Schaltbild des Interface-Adapters

83

An

han

gF

Tech

nisch

eA

ng

aben

Interface-A

dap

ter

8 7 6 5 4 3 2 1

A

B

C

D

12345678

D

C

B

A

Date: February 19, 1993 Sheet 2 of 4

Size Document Number REV

A4 A

Title

IFADAPMP - Messpunkte am Interface-Adapter

Tobias Blickle

Lehrstuhl fuer Mikroelektronik

Universitaet des Saarlandes

VCC

PR1PR2

PR3PR8

CCLKDONEDINPROG

XCHECKER

123456789

JM1

CON9

VCC

1 23 45 67 89 1011 1213 1415 1617 1819 2021 2223 2425 26

JM4

HEADER 13X2

CLKaCLKbIFCLKREAD1_CLKcCLKd

CLKBUS6CLKBUS7CLKBUS8CLKBUS9CLKBUS10CLKBUS11

CLKBUS[0..11]CLKBUS[0..11]

GND

PR0 INITGSR

PR[0..8]

GSR

PR[0..8]

RTRIGRDATA

PR7PR6

PR4PR5

123456789

JM2

CON9

CLKBUS0CLKBUS1CLKBUS2CLKBUS3CLKBUS4CLKBUS5

ComCLK_1ComCLK_2BOE_hBOE_vRAMWE_hRAMWE_v

GND

FADR712345678910

JM3

CON10

FADR0FADR1FADR2FADR3FADR4FADR5FADR6

FADR[0..7]FADR[0..7]

GND

Bild

40

Meß

punkte

des

Interface-A

dap

ters

84

An

han

gF

Tech

nisch

eA

ng

aben

Interface-A

dap

ter

8 7 6 5 4 3 2 1

A

B

C

D

12345678

D

C

B

A

Date: March 5, 1993 Sheet 4 of 4

Size Document Number REV

A4 A

Title

CLKDIST - Clockverteilung Interface-Adapter

Tobias Blickle

Lehrstuhl fuer Mikroelektronik

Universitaet des Saarlandes

BSCLKOUT 8

U1

QOSC

VCC

R9180

VCC

R810k

GTBUF

VCCR11

180R12

180

R18

220R19

220

VCCGND

R10220

CLKBUS[0..11]CLKBUS[0..11]

1 2 3 4 5 6 7 8 9

RN28 x 10k

R20

220R21

220

R13

180R14

180R15

180R16

180

R22

220R23

220

A1 2

A2 3

A3 4

A4 5

A5 6

A6 7

A7 8

A8 9

G 19

DIR 1

B118

B217

B316

B415

B514

B613

B712

B811

U2

74F245

ComClk_1ComClk_2

CLKaCLKb

CLKBUS0CLKBUS1CLKBUS2CLKBUS3CLKBUS4CLKBUS5CLKBUS6CLKBUS7

BOE_hBOE_vRAMWE_hRAMWE_v

1 2 3 4 5 6 7 8 9

RN18 x 10k

VCC

R610k

GND

R24

220

ComCLK_out

BOE_out

R17

180

CLKa_out

CLKb_out

CLKc_out

RAMWE_outVCC

A1 2

A2 3

A3 4

A4 5

A5 6

A6 7

A7 8

A8 9

G 19

DIR 1

B118

B217

B316

B415

B514

B613

B712

B811

U3

74F245

IFCLK CLKBUS8CLKBUS9

CLKc CLKBUS10READ1_

CLKd CLKBUS11CLKd_out

VCC

R710k

GND

Bild

41

Teilsch

altbild

Tak

tsignalv

erteilung

85

An

han

gF

Tech

nisch

eA

ng

aben

Interface-A

dap

ter

8 7 6 5 4 3 2 1

A

B

C

D

12345678

D

C

B

A

Date: February 19, 1993 Sheet 3 of 4

Size Document Number REV

A4 A

Title

GPSWITCH - General Purpose Signal Verteilung

Tobias Blickle

Lehrstuhl fuer Mikroelektronik

Universitaet des Saarlandes

GPin6

GPin7

GPin4

GPin5

GPin2

GPin3

GPin0

GPin1

GPin[0..7]

JP1JUMPER

JP2JUMPER

HP0 HP1

JP3JUMPER

JP4JUMPER

HP2 HP3

JP5JUMPER

JP6JUMPER

GP4 GP5

JP7JUMPER

JP8JUMPER

GP6 GP7 GP8 GP9

JP11JUMPER

JP9JUMPER

JP10JUMPER

JP12JUMPER

JP13JUMPER

JP14JUMPER

JP15JUMPER

JP16JUMPER

GPout0

GPout1

GPout2

GPout3

GPout4

GPout5

GPout6

GPout7

GPout[0..7]GPout[0..7]

HP2

HP3

HP0

HP1

HP[0..3]

GP[0..9]GP[0..9]

JP17JUMPER

JP18JUMPER

GP0 GP1

JP19JUMPER

JP20JUMPER

GP2 GP3

CLKBUS5

CLKBUS8

CLKBUS9

CLKBUS0

CLKBUS1

CLKBUS2

CLKBUS3

CLKBUS4

JP21JUMPER

JP22JUMPER

CLKBUS10

CLKBUS11

JP23JUMPER

JP24JUMPER

CLKBUS6

CLKBUS7

CLKBUS[0..11]

Bild

42

Sch

altbild

der

Gen

eral-Purp

ose-B

us-V

erteilung

86

Anhang F Technische Angaben Interface-Adapter

Interface-Adapter-Platine

VG 64 Leiste mannlich

CN 1 Interfaceanschluß

A1 GND GND C1

A2 IFIF9 IFIF8 C2

A3 IFIF7 IFIF6 C3

A4 IFIF5 IFIF4 C4

A5 IFIF3 FADR7 C5

A6 FADR6 FADR5 C6

A7 FADR4 FADR3 C7

A8 FADR2 FADR1 C8

A9 FADR0 READ1_ (IF Signal) C9

A10 GPin7 GPin6 C10

A11 GPin5 GPin4 C11

A12 GPin3 GPin2 C12

A13 GPin1 GPin0 C13

A14 READ0 READ1 C14

A15 READ2 READ3 C15

A16 READ4 READ5 C16

A17 READ6 READ7 C17

A18 READ8 READ9 C18

A19 READ10 READ11 C19

A20 READ12 READ13 C20

A21 READ14 READ15 C21

A22 READ16 READ17 C22

A23 READ18 READ19 C23

A24 READ20 READ21 C24

A25 READ22 READ23 C25

A26 IFIF2 IFIF1 C26

A27 ComCLK(_1) IFIF0 C27

A28 IFCLK (RF_)GTS C28

A29 DONE (PR8) (RF_)GSR C29

A30 PROG (PR2) CCLK (PR3) C30

A31 INIT (PR0) DIN (PR1) C31

A32 GND GND C32

Tabelle 9 Pinbelegung Interface-Adapter CN1

87

Anhang F Technische Angaben Interface-Adapter

Interface-Adapter-Platine

VG 64 Leiste mannlich

CN 2 Interfaceanschluß

A1 GND GND C1

A2 IFIF9 IFIF8 C2

A3 IFIF7 IFIF6 C3

A4 IFIF5 IFIF4 C4

A5 IFIF3 IFIF2 C5

A6 IFIF1 IFIF0 C6

A7 N.C. N.C. C7

A8 RTRIG (PR7) RDATA (PR6) C8

A9 RCLK (PR5) RIP (PR4) C9

A10 GPout7 GPout6 C10

A11 GPout5 GPout4 C11

A12 GPout3 GPout2 C12

A13 GPout1 GPout0 C13

A14 WRITE0 WRITE1 C14

A15 WRITE2 WRITE3 C15

A16 WRITE4 WRITE5 C16

A17 WRITE6 WRITE7 C17

A18 WRITE8 WRITE9 C18

A19 WRITE10 WRITE11 C19

A20 WRITE12 WRITE13 C20

A21 WRITE14 WRITE15 C21

A22 WRITE16 WRITE17 C22

A23 WRITE18 WRITE19 C23

A24 WRITE20 WRITE21 C24

A25 WRITE22 WRITE23 C25

A26 N.C CLKd_out C26

A27 ComCLK(_1) CLKc_out C27

A28 IFCLK CLKb_out C28

A29 BSCLK CLKa_out C29

A30 RAMWE_out BOE_out C30

A31 ComCLK_out GTBUF C31

A32 GND GND C32

Tabelle 10 Pinbelegung Interface-Adapter CN2

88

Anhang F Technische Angaben Interface-Adapter

Interface-Adapter-Platine

40pol Flachbandkabelanschluß

CN3 Rechenfeld-Anschluß

Belegung wie CN1 Rechenfeld (Tabelle 4)

Tabelle 11 Pinbelegung Interface-Adapter CN3

Interface-Adapter-Platine

60pol Flachbandkabelanschluß

CN4 Ramcontroller-Anschluß (IFBUS horizontal)

Belegung wie CN2 Ramcontroller (Tabelle 7)

Tabelle 12 Pinbelegung Interface-Adapter CN4

Interface-Adapter-Platine

60pol Flachbandkabelanschluß

CN5 Ramcontroller-Anschluß (IFBUS vertikal)

Belegung wie CN2 Ramcontroller (Tabelle 7)

Tabelle 13 Pinbelegung Interface-Adapter CN5

89

Anhang G Meßstecker

Anhang G Meßstecker

Meßstecker Typ A

Program&Readback Signale

1 DIN

2 PROG

3 CCLK

4 RCLK

5 RTRIG

6 RDATA

7 RIP

8 INIT

9 GND

10 GND

Tabelle 14 Pinbelegung Meßstecker Typ A

Meßstecker Typ B

Datenbus

1 DATA0 DATA1 2

3 DATA2 DATA3 4

5 DATA4 DATA5 6

7 DATA6 DATA7 8

9 DATA8 DATA9 10

11 DATA10 DATA11 12

13 DATA12 DATA13 14

15 DATA14 DATA15 16

17 DATA16 DATA17 18

19 DATA18 DATA19 20

21 DATA20 DATA21 22

23 DATA22 DATA23 24

25 GND GND 26

Tabelle 15 Pinbelegung Meßstecker Typ B

90