Configurable Logic Board – CLB

Configurable Logic Board – CLB
Fachgebiet Digitaltechnik
Prof. Dr.-Ing. Peter Zipf
Configurable Logic Board – CLB
Bedienungsanleitung
1 Einführung
Zur Realisierung von Digitalschaltungen stehen heutzutage viele verschiedene Technologien
zur Verfügung. Dabei unterscheidet man im Wesentlichen zwei Klassen.
Die eine Klasse beinhaltet den (vollständig) anwendungsspezifischen Aufbau der gewünschten
Schaltung. Dies kann z. B. diskret mittels einzelner Logikgatter oder auch (hoch)integriert in
einem Mikrochip geschehen.
Daneben gibt es die große Klasse konfigurierbarer bzw. programmierbarer Logikbausteine (eng.
PLD = Programmable Logic Device). In dieser Klasse sind (grundlegende) Logik-Funktionen
schon vorkonfiguriert vorhanden – dafür können sie vom Benutzer, je nach gewünschtem
Zweck, anders zusammengestellt bzw. arrangiert (konfiguriert) werden. Dadurch entsteht der
Vorteil, dass für eine neue bzw. andere Schaltung nicht eine neue Hardware produziert werden
muss. Vielmehr kann durch Umkonfiguration der vorliegenden Hardware diese neue Schaltung
realisiert werden.
Ohne an dieser Stelle genauer auf die Beschaffenheit von PLDs einzugehen, beinhalten solche
Logik-Strukturen einzelne Logikzellen, welche Schaltungsteile enthalten, mit denen sich beliebige boolesche Funktionen berechnen lassen (kombinatorische Logik). Des weiteren enthalten
diese Zellen zumeist speichernde Elemente um die vorher berechneten Werte zwischenspeichern zu können. Dies kann genutzt werden um z. B. sequentielle (getaktete) Logik zu erzeugen.
Daneben enthalten sie konfigurierbare Ein- bzw. Ausgaben sowie Rückkopplungen um z. B.
zuvor berechnete Werte im nächsten Takt weiterverwenden zu können. Aus der Kombination
dieser vier Grundelemente, sowie der Kombination der einzelnen Zellen lassen sich so fast
beliebige digitale Schaltungen entwickeln.
Natürlich verfügen moderne PLDs in einem einzigen Chip über eine Vielzahl solcher Logikzellen, die zudem im Detail komplexer aufgebaut sind als es dieser kurze Abriss zeigen kann.
Dies erhöht aber im Wesentlichen nur die Freiheitsgrade bzw. die Größe der realisierbaren
Schaltung.
1
In der Veranstaltung »Digitale Logik« sollen Sie begleitend zu Vorlesung und Übung die
Möglichkeit bekommen, einfache Schaltungen schnell selbst aufzubauen und ausprobieren
zu können. Dazu dient das vorliegende »Configurable Logic Board« (CLB). Es verfolgt die
Grundprinzipien eines PLDs. In gewisser Hinsicht könnte man es als einen diskreten Aufbau
einer Logikzelle aus einem »Programmable Array Logic« (PAL) beschreiben.
Die vorliegende Bedienungsanleitung will Ihnen das CLB Schritt für Schritt näher bringen.
Obwohl in den einzelnen Kapiteln eine kurze Einführung in die theoretischen Grundlagen
gegeben wird, wird hier der in der Veranstaltung »Digitale Logik« vermittelte Lehrinhalt vorausgesetzt. Lassen Sie sich also nicht entmutigen, wenn Sie beim ersten Lesen dieser Anleitung
nur »Bahnhof« verstehen – alles wird im laufenden Semester erarbeitet.
2 Das CLB – Eine Übersicht
Wie in der Einführung bereits erwähnt ist das CLB einer Logikzelle eines PLDs ähnlich.
Insbesondere verfügt es über die folgend aufgelisteten Funktionsblöcke. Diese sind auch in
Abbildung 1 dargestellt.
Abbildung 1: Übersicht über das CLB.
a) zwei unabhängige UND/ODER-Matrizen, mit denen beliebige boolesche Funktionen
mit bis zu vier Variablen realisiert werden können,
2
b) zwei zuschaltbare Bit-Speicher (Flipflops),
c) zwei Wahlmöglichkeiten zur Rückkopplung von Signalen,
d) eine Ausgangslogik, mit der die beiden zuvor realisierten Funktionen verknüpft bzw.
ausgegeben werden können,
e) einen Systemtakt, wahlweise ca. 1 Hz oder manuell mittels Tastendruck,
f) einen Dip-Schalter zur Belegung der vier Variablen mit konkreten Werten,
g) vier Ein- bzw. Ausgangsverbinder zur Verteilung von Werten an weitere CLBs,
h) LEDs zur Anzeige der Eingabe, Funktionswerte und Ausgabe,
i) eine USB-Buchse zur Stromversorgung nebst Sicherung.
3 Die Funktionsweise des CLB
Die Konfiguration des CLBs wird durch Jumper vorgenommen. Abbildung 2 zeigt eine schematische Darstellung des Schaltbildes, in der die Jumper und ihre Möglichkeiten aufgezeigt
sind.
Man erkennt links deutlich die zwei UND/ODER-Matrizen. Durch die Jumper lässt sich
jeder Konjunktionsterm aus den Literalen (A, B, C, D), deren Negation sowie logisch ’1’
(Jumper gezogen) aufbauen. Durch eine Veroderung dieser Konjunktionsterme lassen sich
so die booleschen Funktionen F1 und F2 in disjunktiver Normalform (DNF) aufbauen (vgl.
Kapitel 4).
Die beiden Funktionen F1 und F2 können anschließend entweder je in ein Flipflop gespeichert
oder – um diese herumgeleitet – direkt auf die Ausgangslogik gelegt werden. Dies wird durch
die Jumper nach den Flipflops (async./sync.) erreicht. Das Ergebnis sind die Funktionen F10
bzw. F20 . Der Takt beider Flipflops kann auf drei Arten generiert werden. Entweder mittels
internem Oszillator (auto), durch Tastendruck (man.) oder extern (ext. clock) beispielsweise
durch ein anderes CLB.
Zwei weitere UND/ODER-Matrizen bildet die Ausgänge des CLBs. Mit deren Hilfe können die
beiden Funktionen F10 und F20 wie zuvor die Literale in beliebiger Weise miteinander kombiniert
werden. Das Ergebnis sind die beiden Funktionen X und Y. Des weiteren ist es möglich eine
oder beide Funktionen F10 bzw. F20 rückzukoppeln und sie als Schaltungseingang zu verwenden
(vgl. Kapitel 5 und 6). In diesem Fall werden diese anstatt der Literale C und D verwendet. Dies
wird durch die beiden Jumper an den entsprechenden Literalen erreicht.
So ist es möglich die drei wichtigen Schaltungsarten für bis zu vier Variablen zu realisieren:
rein kombinatorische Logik (ohne Flipflops, ohne Rückkopplung), asynchrone Schaltwerke
(ohne Flipflops, mit Rückkopplung) sowie synchrone Schaltwerke (mit Flipflops, mit bzw.
ohne Rückkopplung).
3
A
B
1
C
1
D
1
1
&
&
&
&
&
>
_1
F1
D
Q
async. F1'
sync
1
&
&
&
&
&
&
int. clock
ext. clock
man.
auto
&
&
&
&
&
>
_1
F2
D
Q
async. F2'
sync
&
&
&
Abbildung 2: Schematisches Schaltbild des CLBs.
4
1
&
>
_1
X
>
_1
y
3.1 Schnittstellen
Die Spannungsversorgung des CLBs erfolgt über die USB-Schnittstelle eines Computers. Alternativ kann auch ein 5 V DC/500 mA Steckernetzteil mit USB-Ausgang verwendet werden.
Werden mehrere CLBs kaskadiert betrieben, so muss i. d. R. nur ein Board mit Spannung
versorgt werden.
Das CLB verfügt über vier Schnittstellen zu weiteren CLBs. Alle Schnittstellen verfügen sowohl
über Ein- als auch Ausgänge. Mit den Steckern (oben und links) können Funktionswerte
sowie der Takt anderer CLBs empfangen und die Ausgänge X und Y ausgegeben werden. Mit
den Buchsen (rechts und unten) können Funktionswerte sowie der Takt ausgegeben und die
Ausgänge X und Y eines anderen CLBs empfangen werden. Dabei sind die zwei Literaleingänge
sowie der Dipschalter miteinander verodert. Wiederum kann über Jumper die Zuordnung
festgelegt werden. Details finden Sie hierzu in Kapitel 7.
Wichtige Hinweise:
Für defekte USB-Ports kann keine Haftung übernommen werden! Im Zweifel versorgen
Sie das CLB mittels externem Netzteil.
Bitte achten Sie beim Kaskadieren von CLBs darauf, dass Sie diese nicht »gedreht«,
d. h. rechts/oben bzw. links/unten anschließen. Ein Kurzschluss mit defekter Sicherung
wäre die Folge!
4 Kombinatorische Logik
4.1 Theoretische Vorüberlegungen
Mithilfe der booleschen Algebra lassen sich logische Beziehungen und Aussagen mathematisch
beschreiben. Damit bildet die boolesche Algebra die Grundlage für die Realisierung jedweder
logischen Zusammenhänge und der daraus folgenden informationstechnischen Anwendungen.
In der Vorlesung »Digitale Logik« wird gezeigt, dass ein kleiner Satz an Basisoperationen
(sogenannte Basissysteme) ausreicht, um beliebige boolesche Funktionen mit beliebig vielen
Variablen eindeutig auszudrücken. So ein Basissystem bilden die Operatoren UND, ODER und
NICHT. Eine in diesem Basissystem beschriebene boolesche Funktion kann sehr einfach in eine
Schaltung umgeformt werden, die den Wert der Funktion berechnet. Sind dabei die Ausgänge
der Schaltung nur von den Eingängen abhängig, d. h. die Schaltung besitzt keine Informationsspeicher und ist zyklenfrei, so wird eine solche Schaltung als kombinatorische Schaltung oder
Schaltnetz bezeichnet. Solche Schaltnetze sind in der Digitaltechnik von großer Wichtigkeit,
lassen sich doch sehr viele Probleme »rein kombinatorisch« beschreiben. Beispielhaft seien hier
Addierer oder Decoder genannt.
Eine Repräsentation einer booleschen Funktion ist in der sogenannten »Disjunktiven Normalform« (DNF) gegeben. Sie besteht aus einer ODER-Verknüpfung von Konjunktionstermen.
5
Diese Terme wiederum sind UND-Verknüpfungen der einzelnen Literale bzw. deren Negation.
Zur Ermittlung der benötigten kombinatorischen Logik dienen vor allem Wahrheitstabellen. Um die Anzahl der zu realisierenden Konjunktionsterme zu minimieren, lassen sich die
algebraischen Beziehungen sowie vorallem die zweistufige Logikminimierung mittels KarnaughVeitch-Diagramme verwenden.
4.2 Realisierung kombinatorischer Logik auf dem CLB
Wie in Kapitel 3 beschrieben, werden boolesche Funktionen für bis zu vier Variablen als DNF
auf dem CLB realisiert. Liegt eine solche, minimierte Funktion vor, so ist die Umsetzung auf
das CLB sehr einfach.
Funktionen konfigurieren
Mit jeder Jumper-Reihe der Funktionen F1 bzw. F2 lässt sich ein Konjunktionsterm realisieren.
Insgesamt stehen in jeder Funktion acht Terme zur Verfügung, so dass alle Funktionen in vier
Variablen realisierbar sind.
Um einen Konjunktionsterm zu realisieren setzen Sie die Jumper entsprechend der gewünschten
Belegung (Literal bzw. dessen Negation). Kommt ein Literal nicht in dem gewählten Term
vor, so kann der Jumper dafür weggelassen werden. Die Belegung dafür ist dann logisch ’1’,
d. h. dieser Teil des Terms hat keinen Einfluss auf die UND-Verknüpfung (vgl. T10 auf der
Formelsammlung).
Hat die zu realisierende Funktion weniger als acht Konjunktionsterme, so müssen die verbleibenden Jumper-Reihen mit bereits realisierten Termen belegt werden (vgl. T3 auf der
Formelsammlung). Tipp: Am einfachsten dupliziert man den letzten Term, bis die Reihen
gefüllt sind. Würden die Jumper-Reihen leergelassen, so würden diese die ODER-Verknüpfung
dominieren (vgl. T2 auf der Formelsammlung).
Informationsspeicher konfigurieren
Da für rein kombinatorische Schaltungen keine Informationsspeicher benötigt werden, stellen
Sie die vier Jumper SYNC SEL auf ASYNC (alle Jumper nach rechts).
Ausgangsfunktionen konfigurieren
Die Ausgangsfunktionen X und Y werden analog den Funktionen F1 bzw. F2 aufgebaut. Dazu
sind die Jumper OUTPUT FN entsprechend zu setzen. Dabei ist zu beachten, dass im Unterschied
zu den Funktionen die Jumper um 90 °gedreht sind, d. h. die Ausgangsfunktionen ergeben sich
spaltenweise!
6
Rückkopplungen konfigurieren
Da rein kombinatorische Schaltungen keine Zyklen besitzen, d. h. rückkopplungsfrei sind,
stellen Sie die beiden Jumper INPUT SEL auf die entsprechenden Eingänge C und D (Jumper
nach links).
Schnittstellen konfigurieren
Ist die gewünschte Funktionalität auf nur einem CLB realisiert, werden die Steckverbindungen
nicht benötigt. Folglich können die Jumper-Blöcke bei den Steckern (links und oben) leergelassen werden. Soll die Funktionalität auf mehreren CLBs realisiert werden, lässt sich mit diesen
Blöcken auswählen, welche Variablen von welcher Seite übernommen, welche Ausgangsfunktionen wo ausgegeben und welche Variablen vom Board selbst erzeugt werden sollen. Da die
Eingänge miteinander verodert sind, müssen die Dip-Schalter der Eingänge, die von einem
anderen CLB stammen, auf logisch ’0’ stehen.
4.3 Gleichungen
Algebraisch lassen sich die oben beschriebenen Funktionen F1 , F2 , X und Y wie folgt beschreiben:
F1 = m11 + m12 + m13 + m14 + m15 + m16 + m17 + m18
F2 = m21 + m22 + m23 + m24 + m25 + m26 + m27 + m28
mit
mi j = ai j · bi j · ci j · di j
ai j ∈ {A, A, 1},
bi j ∈ {B, B , 1},
ci j ∈ {C , C , 1},
di j ∈ {D, D , 1}
X = f11 + f12
Y = f21 + f22
mit
fi j = f1,i j · f2,i j
f1,i j ∈ {F1 , F1 , 1},
f2,i j ∈ {F2 , F2 , 1}
7
4.4 Beispiel XOR
Als abschließendes Beispiel sollen die Funktionen X = F1 = A ⊕ B ⊕ C ⊕ D sowie Y = F2 =
A ⊕ B ⊕ C ⊕ D realisiert werden.
Aus den Wahrheitstabellen bzw. den booleschen Gleichungen ergeben sich dafür folgende
DNF:
F1 = AB C D + AB C D + ABC D + ABC D + AB C D + AB C D + ABC D + ABC D
F2 = AB C D + AB C D + ABC D + ABC D + AB C D + AB C D + ABC D + ABC D
Die zugehörigen KV-Diagramme haben folgendes Aussehen:
B
F1
D
0
C
A
B
F2
2
10
8
0
1
0
1
1
3
11
9
1
0
1
0
5
7
15
13
0
1
0
1
1
4
0
0
6
14
12
C
1
0
D
A
2
10
8
1
0
1
0
1
3
11
9
0
1
0
1
5
7
15
13
1
0
1
0
4
6
14
12
0
1
0
1
Für die erste Jumper-Reihe von F1 (Term m11 ) ergibt sich mit dem ersten Konjunktionsterm
folgende Jumper-Belegung: rechts (A), rechts (B ), rechts (C ), links (D). Analog hierzu können
die anderen Terme aufgebaut werden. Die vollständige Belegung ist in Abbildung 3 dargestellt.
Da keine Informationsspeicher benötigt werden, werden die Jumper SYNC SEL alle nach rechts
(asynchron) gestellt. Dadurch ergibt sich F10 = F1 bzw. F20 = F2 .
Da keine Rückkopplungen vorhanden sind, werden die Jumper INPUT SEL nach links (Variablen C und D) gestellt.
Die Funktionen X und Y ergeben sich aus
X = F10 + F10 = F10 = F1
Y = F20 + F20 = F20 = F2
Dementsprechend sind die Jumper OUTPUT FN jeweils auf oben (F10 bzw. F20 ) zu setzten.
8
Abbildung 3: Jumper-Belegung des CLBs für das XOR-Beispiel.
5 Asynchrone Schaltwerke
5.1 Theoretische Vorüberlegungen
Hängt in einer Schaltung der Ausgang nicht nur von den Eingängen ab (vgl. Kapitel 4), sondern
im allgemeinen Fall von den bisherigen Eingangszuständen, so spricht man von sequentiellen
Schaltungen, zustandsbehafteten Schaltungen oder auch Schaltwerken. Bei einem Schaltwerk
ist daher für jede Eingangskombination mehr als eine Ausgangskombination möglich, denn
die Ausgangsvariablen sind zusätzlich noch von den inneren Zustandsvariablen (gespeicherte
Information = Gedächtnis) abhängig. In der einfachsten Form bestehen Schaltwerke aus
Schaltnetzen, bei denen Ausgangsgrößen auf die Eingänge rückgekoppelt sind. Hier ist der
Informationsspeicher implizit durch die Rückführung ausgeführt. Deswegen spricht man auch
von asynchronen (ungetakteten) Schaltwerken.
Zum Entwurf (asynchroner) Schaltwerke bedient man sich den Entwurfsverfahren für Automaten wie Zustandsdiagramme, Zustandsübergangstabellen sowie -gleichungen. Wobei im
asynchronen Entwurf darauf zu achten ist, dass sich zur Vermeidung von Races nur jeweils eine
Zustandsvariable ändert (Gray-Codierung). Zur Reduktion der Zustände lassen sich Verfahren
der Zustandsminimierung einsetzen. Ist die Schaltung gegeben, so kann zur Berechnung der
Übergangsgleichungen die aus der Vorlesung bekannte Methode der »Asynchronen Schaltwerksanalyse« genutzt werden.
9
5.2 Realisierung asynchroner Schaltwerke auf dem CLB
Der Übergang von einem kombinatorischen Schaltnetz zu einem asynchronen Schaltwerk ist
nicht groß und wird lediglich durch die Verwendung von bis zu zwei Rückkopplungen der
Funktionsausgänge F10 bzw. F20 an den Eingang (statt der Literale C und D) erreicht.
Funktionen konfigurieren
Zur Realisierung der Übergangsfunktionen werden diese – analog zur rein kombinatorischen
Schaltung – wiederrum als DNF ausgeführt. Dabei ist zu beachten, dass nun – entsprechend der
Anzahl an Rückkopplungen – weniger Eingangsvariablen zur Verfügung stehen. Der Eingang
C steht hierbei für die Rückkopplung von F10 und/oder der Eingang D für die Rückkopplung
von F20 . Hierbei stellen F10 bzw. F20 die aktuellen Zustände sowie F1 bzw. F2 die Folgezustände
dar.
Rückkopplungen konfigurieren
Über die beiden Jumper INPUT SEL kann ausgewählt werden, welche Funktion rückgekoppelt
werden soll. Die restlichen Einstellungen sind analog zu 4.2.
5.3 Beispiel RS-Latch
Es soll das aus der Vorlesung bekannte RS-Latch aufgebaut werden. Die Übergangsfunktion
hierzu lautet: Q v+1 = S R + R Q v (vgl. Übersicht Logikgatter/Flipflops)
Diese Übergangsfunktion soll in F1 realisiert werden, wobei A = S und B = R sein soll. Folglich
lautet die Übergangsfunktion:
F1 = AB + B F10
Die Funktion F2 bzw. die Variable d wird hier nicht verwendet.
Gemäß obiger DNF ergibt sich die erste Jumper-Reihe für den Term B F10 folgende Belegung:
leer (’1’), rechts (B ), links (F10 ), leer (’1’). Für den anderen Term ist die Belegung: links (A),
rechts (B ), leer (’1’), leer (’1’). Da hier nur zwei Terme benötigt werden, wird der letzte Term
dupliziert, bis F1 vollständig konfiguriert ist.
Da es sich um ein asynchrones Schaltwerk handelt, werden die Jumper SYNC SEL alle nach
rechts (asynchron) gestellt.
Es ist eine Rückkopplung für F1 vorhanden. Daher wird der linke Jumper INPUT SEL nach
rechts (F1 ) gestellt. Der rechte Jumper hat keinen Einfluss auf die Schaltung (da weder F2 belegt,
d. h. F2 =’1’, noch die Variable D in F1 vorkommt.
Die Funktion X ergibt sich zu
X = F10 + F10 = F10
10
Dementsprechend sind die Jumper OUTPUT FN jeweils auf oben (F10 ) zu setzten. Die vollständige
Belegung ist in Abbildung 4 dargestellt.
Abbildung 4: Jumper-Belegung des CLBs für das RS-Latch-Beispiel.
6 Synchrone Schaltwerke (Automaten)
6.1 Theoretische Vorüberlegungen
Ein synchrones Schaltwerk entsteht aus einem asynchronen Schaltwerk, in dem in die Rückkopplungen Pufferspeicher (Flipflops) eingebaut werden, die von einem Takt gesteuert werden.
Mit diesen Speichern wird der geschlossene Kreis entkoppelt, der durch die Rückkopplung
entsteht. Synchrone Schaltwerke haben u. a. den Vorteil, dass sie leichter zu entwerfen sind als
asynchrone. Zudem sind sie robuster, da u. a. keine Races auftreten können.
Jedes Schaltwerk lässt sich, unabhängig von einer asynchronen oder synchronen Realisierung,
prinzipiell in einen ausschließlich verknüpfenden Teil (kombinatorisches Schaltnetz) und
einem ausschließlich speichernden (verzögernden) Teil aufteilen. Eine weitere Unterteilung des
Schaltnetzes in Übergangs- und Ausgangsschaltnetz führt auf die Unterscheidung von Mealyund Moore-Automat. Diese sind letztlich in ihrem Logikverhalten äquivalent, lassen sich also
gegenseitig ineinander umformen. (Im zeitlichen Verhalten bleiben »geringe« Unterschiede, der
Mealy-Automat reagiert auf Eingangssignale schneller.)
11
Strenggenommen muss an dieser Stelle zwischen synchronen Schaltwerken mit und ohne
Rückkopplung unterschieden werden. Da aber ohne Rückkopplung das Schaltwerk im Prinzip
eine rein kombinatorische Schaltung mit Wertezwischenspeicherung darstellt, soll dieser Fall
hier zunächst unbeachtet bleiben. (Eine Realisierung zu dieser Konfiguration wird im Beispiel
des Kapitels 7 gegeben.)
Zum Entwurf synchroner Schaltwerke lässt sich wiederum das schon in Kapitel 5 angesprochene
Entwurfsverfahren für Automaten verwenden.
6.2 Realisierung synchroner Schaltwerke auf dem CLB
Auf einem CLB lässt sich ein Moore-Automat mit bis zu zwei Zustandsvariablen, sowie ein
Mealy-Automat mit einer Zustandsvariablen realisieren. Zur Beschreibung größerer Schaltwerke muss dieses über mehrere CLBs aufgeteilt werden. Der wesentliche Unterschied zur
Realisierung in Kapitel 5 besteht darin, dass nun explizit die taktflankengesteuerten D-Flipflops
verwendet werden und so der vormals geschlossene Kreis entkoppelt wird (siehe oben).
Funktionen konfigurieren
Wie schon in den beiden vorangegangenen Kapiteln werden auch hier wieder die Zustandsübergangsfunktionen F1 und F2 als DNF realisiert. Wird nur eine Zustandvariable verwendet, so
kann eine der beiden Funktionen dazu genutzt werden eine Ausgangsfunktion zu definieren,
die sowohl von der Zustandsvariablen als auch von den Eingängen direkt abhängt.
Informationsspeicher konfigurieren
Für ein synchrones Schaltwerk sind die taktflankengesteuerten D-Flipflops erforderlich. Daher
sind im Standardfall die Jumper SYNC SEL auf SYNC (alle Jumper nach links) zu stellen.
Bei einer Mealy-Realisierung, bei der die Ausgangsfunktion nicht in ein Flipflop gepuffert
werden soll, müssen die Jumper für die Ausgangsfunktion hingegen auf ASYNC stehen um das
Flipflop zu umgehen.
Generell ist es möglich die Funktionen F1 , F1 sowie F2 , F2 in Bezug auf ihre Synchronizität
getrennt zu behandeln. Dies wird durch die jeweils zwei Jumper pro Funktion erreicht. In der
Regel gibt es jedoch nur drei geeignete Konfigurationen: alles asynchron, alles synchron und
eines synchron, das andere asynchron.
Takt konfigurieren
Um das synchrone Schaltwerk mittel des internen Taktgenerators zu betreiben stellen Sie den
Jumper CLK SEL auf INT (intern) sowie den Jumper MAN|AUTO auf AUTO (automatisch). Soll die
Taktgenerierung mittels des Tasters S1 erfolgen, so stellen Sie diesen Jumper hingegen auf MAN
(manuell).
12
Ist das Synchrone Schaltwerk auf mehreren CLBs realisiert, so darf zur Erhaltung der Taktsynchronizität nur ein CLB den Takt generieren. Alle anderen beziehen ihren Takt von dort. Dies
wird durch dem Jumper CLK SEL auf EXT (extern) erreicht.
Ausgangsfunktionen konfigurieren
Da in einen Moore-Automaten die Ausgangsfunktion nur von den Zuständen (F10 , F20 ) abhängig
ist, lässt sich dieser Automatentyp wie bereits zuvor als DNF aus diesen, ihrer Negation sowie
logisch ’1’ beschreiben.
In einer Mealy-Realisierung dient eine der beiden Funktionen F1 oder F2 als Ausgangsfunktion.
Die Jumper OUTPUT FN sind entsprechend zu setzten, so dass diese an die gewünschten Ausgänge
X und/oder Y weitergeleitet wird.
Rückkopplungen konfigurieren
Entsprechend der Anzahl der Zustandsvariablen sind die Jumper INPUT SEL auf Rückkopplung
( Jumper nach rechts) einzustellen.
Schnittstellen konfigurieren
Mit einem CLB lassen sich wie oben erwähnt nur kleine Zustandsautomaten realisieren. Daher
werden zur Realisierung größerer Automaten die Schnittstellen benötigt.
Eine Schwierigkeit beim Entwurf über mehrere CLBs ergibt sich jedoch durch die internen
Abhängigkeiten in einem Automaten, da im allgemeinen Fall jede Teilfunktion von allen Zuständen und von allen Eingängen abhängig ist. Mit einem CLB ist es allerdings nicht möglich
die Belegung von Eingangsvariablen (mittels Dip-Schalter) direkt an ein anderes CLB weiterzuleiten. Dies kann nur über den Umweg das eine Funktion definiert wird, die diese Variable
repräsentiert, geschehen. Es wird also bei der Realisierung von Automaten auf mehreren CLBs
darauf ankommen den Automaten in (Teil)Funktionen zu untergliedern, die nach Möglichkeit
nur von den Funktionen X und Y eines anderen CLBs sowie den eigenen Werten abhängig
sind.
6.3 Beispiel Wechselblinker
Es soll ein Moore-Automat realisiert werden, der die beiden LEDs für X und Y im Wechsel
blinken lässt.
Das Zustandsdiagramm dafür kann wie folgt beschrieben werden:
Notation:
−−
01
01
10
10
−−
F10 F20
AB
XY
13
Aus der Zustandsübergangs- bzw. Ausgangstabelle und anschließender KV-Minimierung ergeben sich als eine mögliche Realisierung folgende Zustandsübergangs- und Ausgangsfunktionen:
F1 = F10 ,
F2 = F10 ,
X = F10 ,
Y = F20
Die Funktionen F1 und F2 lassen sich in gewohnter Weise abbilden. Es ergibt sich bei F1 für alle
Konjunktionsterme folgende Belegung: leer (’1’), leer (’1’), rechts (F10 ), leer (’1’). Entsprechend
lautet die Belegung für F2 : leer (’1’), leer (’1’), links (F10 ), leer (’1’).
Die Ausgangsfunktion Y hat für alle Konfunktionsterme die Belegung: leer (’1’), oben (F20 ). Die
Funktion X entsprechend: oben (F10 ), leer (’1’).
Um die Zustandvariablen F10 und F20 auf die Übergangsfunktionen rückzukoppeln werden die
beiden Jumper INPUT SEL nach rechts gestellt.
Um die taktsynchronen Flipflops zu verwenden werden alle Jumper SYNC SEL nach links auf
SYNC gestellt.
Um den internen Takt zu konfigurieren werden die Jumper CLK SEL auf INT (intern) sowie
MAN|AUTO auf AUTO (automatisch) gestellt.
Die vollständige Belegung ist in Abbildung 5 dargestellt.
Abbildung 5: Jumper-Belegung des CLBs für das Wechselblinker-Beispiel.
14
Zum Selbermachen: Lässt sich dieses Beispiel auch mit nur einer Zustandsvariablen realisieren?
7 CLBs kaskadieren
Wie in dieser Anleitung schon öfters angeschnitten, lassen sind die CLBs kaskadieren, um größere Funktionen abzubilden. Abbildung 6 zeigt die dafür zur Verfügung stehenden Verbindungen
anhand eines vereinfachten Blockschaltbildes kaskadierter CLBs.
A B C D X Y
A
B
C
D
X
Y
A B C D X Y
X
Y
A
B
X Y C D
A
B
C
D
X
Y
X
Y
A
B
X Y C D
A B C D X Y
A
B
C
D
X
Y
X
Y
A
B
X Y C D
Abbildung 6: Blockschaltbild kasakdierter CLBs.
Man erkennt, dass die Ausgänge X und Y als Eingänge für ein weiteres CLB dienen können.
In horizontaler Richtung werden diese Funktionswerte als Belegung für die Literale A und B
interpretiert, in vertikaler Richtung geben Sie die Belegung für C und D vor.
Die Belegung wird über die beiden Jumper-Blöcke an den Steckern bestimmt. Wird z. B. am
linken Stecker ein Jumper bei A gesetzt, so bedeutet dies, dass der Funktionswert von X eines
anderen CLBs anstelle des internen Literals A übernommen wird. Dabei sind beide Eingänge
miteinander verodert, so dass der Dip-Schalter für das Literal A eine ’0’ liefern muss.
7.1 Realisierung kombinatorischer Logik über mehrere CLBs
Soll kombinatorische Logik, die von mehr als vier Variablen abhängig ist, auf den CLBs realisiert werden, so ist dies durch Kofaktorenzerlegung nach dem Booleschen Entwicklungssatz
(vgl. Formelsammlung) möglich. Dabei wird die Funktion soweit entwickelt, dass die einzelnen Kofaktoren von max. vier Variablen abhängig sind. Je ein CLB realisiert dann die
verschiedenen Kofaktoren, während ein oder mehrere weitere CLBs die aus diesen Kofaktoren
zusammengesetzte Funktion(en) realisiert.
15
Soll beispielsweise eine Funktion f (a, b , c, d , e) mit fünf Variablen realisiert werden, so währe nach dem Booleschen Entwicklungssatz diese Funktion für eine Entwicklung nach e
f (a, b , c, d , e) = e · fe (a, b , c, d ) + e · fe (a, b , c, d ). Ein CLB könnte dann X1 = fe sowie Y1 = fe
realisieren, während ein anders X2 = e · X1 + e Y1 realisiert.
Die Eingabewerte verteilen sich dann über mehrere CLBs.
7.2 Realisierung von Automaten über mehrere CLBs
Die Realisierung von Automaten (ob synchron oder asynchron) ist ungleich schwieriger, aber
nicht grundsätzlich unmöglich. Hier ist es nötig eine Partitionierung zu finden, welche möglichst unabhängige Teile jeweils auf einen CLB realisiert. Auch hier kann sicher der Boolesche
Entwicklungssatz helfen, um z. B. große Übergangs- oder Ausgangsfunktionen aufzuspalten.
Aber auch die strikte Trennung von Übergangsnetz, Zustandsspeicherung und Ausgangsnetz
auf jeweils einem CLB kann helfen. Allerdings kann u. U. die gleichzeitige Belegung der Eingangsvariablen sowohl im Übergangs- als auch im Ausgangsnetz hier etwas problematisch
werden. Evtl. kann es auch helfen den Automaten in mehrere Subautomaten aufzuteilen,
welche dann entsprechend sich gegenseitig bedingen.
7.3 Beispiel Lauflicht
Es soll ein Lauflicht mittels Schieberegistern über mehrere CLBs realisiert werden. Dies soll
durch einen über mehrere Boards geschlossenen Kreis erreicht werden. Das Blockschaltbild des
Lauflichtes ist in Abbildung 7 dargestellt.
D
D
Q
X
A
D
&
D
Q
D
F2
D
Q
F1
Q
C
Y
B
CLB mitte
D
Q
F2
F2
B
CLB links
X A
F1
F1
A
Q
Y
CLB rechts
Abbildung 7: Blockschaltbild des Lauflichtes.
Daten werden in die eine Richtung über X, in die andere über Y ausgegeben. Die CLBs werden
in horizontaler Richtung angeordnet. Dazu zerfällt der Entwurf in drei unabhängige Teile:
16
a) ein Board, welches Daten erzeugt und diese wie auch von B ankommende Daten wieder
auf X ausgibt,
b) weitere Boards, welche die in A ankommende Daten an X , sowie in B ankommende
Daten an Y ausgeben,
c) sowie ein Board, welches in A ankommende Daten nach Y ausgibt.
Im ersten Board diene A zum Rücksetzen, B zum Setzen von ’1’en. Von den mittleren CLBs
können beliebig viele hintereinander geschaltet werden, um ein beliebig langes Lauflicht zu
erzeugen. Nach dem Einschalten muss das Schieberegister zunächst mit ’1’en (durch Setzen von
B) oder ’0’en (durch Setzen von A) gefüllt werden.
Aus dem Blockschaltbild lassen sich die folgenden Gleichungen zur Realisierung des Lauflichtes
ablesen:
F2 = AB,
CLB links:
CLB mitte:
F1 = A,
CLB rechts:
F1 = D = F2 ,
X = F10 ,
F1 = A,
F2 = B,
F2 = C = F1 ,
X = F10
Y = F20
Y = F10
Die Funktionen F1 , F2 , X und Y werden wiederum gemäß obiger Gleichungen konfiguriert.
In allen Boards liegt ein synchrones Design sowie Rückkopplungen vor. Daher werden die
Jumper SYNC SEL nach SYNC (links) sowie INPUT SEL nach rechts gestellt.
Board a) erzeugt den Takt. Darum wird hier der Jumper CLK SEL auf INT (oben) sowie
MAN|AUTO auf AUTO (rechts) gestellt.
Board b) und c) nehmen Daten und Takt entgegen und leiten Daten weiter. Daher werden die
Jumper A und Y jeweils am linken Stecker sowie CLK SEL auf EXT (unten) gesetzt.
Die vollständigen Belegungen sind in den Abbildung 8, 9 und 10 dargestellt.
17
Abbildung 8: Jumper-Belegung des linken CLBs für das Lauflicht.
Abbildung 9: Jumper-Belegung der mittleren CLBs für das Lauflicht.
18
Abbildung 10: Jumper-Belegung des rechten CLBs für das Lauflicht.
19
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement