Hardware-Projekte

Prof. Jürgen Plate

Digitaltechnik

Einführung

Dieser kurze Abriß der Digitaltechnik erhebt keinen Anspruch auf Vollständigkeit, sondern will ein paar grundlegende Kenntnisse auffrischen und dem Praktiker ein paar Tipps geben. Wer schon irgendwann Kontakt mit der Digitaltechnik hatte wird sich schnell wieder an die hier nicht behandelten Themengebiete erinnern, z. B. an Schaltungsminimierung, Hazards, Glitches, Race-Conditions und vieles mehr. Wer noch nie mit Digitaltechnik zu tun hatte, kommt nicht um das Studium von Sekundärliteratur herum.

Wer ohne Lötkolben schon einmal etwas üben will, findet unter folgenden Webadressen einen passenden kostenlosen Simulator:

Beginnen wir mit ein paar Grundlagen:

Im Unterschied zu analogen oder linearen Schaltungen sind logische Schaltungen zur Übertragung zweier bestimmter Signalzustände vorgesehen: "High" (H) oder logisch "EINS" (1) und "LOW" (L) oder logisch "NULL" (0). Die den beiden Zuständen zugeordneten Signalpegel sind vom Typ der verwendeten Schaltung abhängig. Wie wir noch feststellen werden, hängen sie (leider) von der Art der kommerziell erhältlichen Logik-Schaltkreise verschiedener Familien ab. Die Zuordnung der logischen Zustände ist im Prinzip willkürlich, in der Regel ist die "positivere" Spannung oder "HIGH" dem Logikzustand "EINS" und die "negativere" Spannung oder "LOW" dem Logikzustand "NULL" zugewiesen, d.h. wir verwenden positive Logik.

Grundfunktionen

Die Grundverknüpfungen NICHT, UND, ODER sind die logischen Grundoperationen (Grundfunktionen). Sie sind als Axiome definiert und werden postuliert (nicht beweisbar). Die Postulate für Konjunktion und Disjunktion zeigen Ähnlichkeit. Vertauscht man in den Postulaten von UND die Werte 0 und 1, erhält man die Postulate von ODER, und umgekehrt. Die Disjunktion bezogen auf den Wert 1 kann als Konjunktion auf den Wert 0 aufgefaßt werden und umgekehrt. Es gibt also eine Dualität von Konjunktion und Disjunktion. Daraus ergibt sich, daß die Übergänge 0 nach 1 und 1 nach 0 durch die Negation darstellbar sind und somit die Funktion ODER durch UND und NICHT nachgebildet werden kann. Erstaunlicherweise sind also nur zwei Grundfunktionen für die Darstellung aller digitaler Schaltungen ausreichend (natürlich wird es einfacher, wenn man weitere "Grundfunktionen" hinzunimmt). In diesem Text werden wegen der zur Verfügung stehenden Type die Ersatzdarstellungen für die logischen Grundfunktionen verwendet:

GrundfunktionZeichenBeispiel
Negation (NICHT) ~ !y = ~x1
Konjunktion (UND)* &y = x1 * x2
Disjunktion (ODER+y = x1 + x2

Da in Gleichungen i. a. mehrere Grundfunktionen vorkommen, gibt es auch in der Boole'schen Algebra Vorrangregeln für die Reihenfolge der Durchführung der einzelnen Operationen. Die Negation besitzt die höchste Präferenz, danach folgt die Konjunktion und schließlich die Disjunktion. Zum Beispiel:

     y = a + ~b * c   mit a=1, b=0, c=0
     y = 1 + ~0 * 0 
       = 1 +  1 * 0
       = 1 +  0
       = 1
Durch Klammerung kann die Präferenzreihenfolge verändert werden; Klammerausdrücke werden zuerst ausgewertet. Zum Beispiel:
     y = (a + ~b) * c   mit a=1, b=0, c=0
     y = (1 + ~0) * 0 
       = (1 +  1) * 0
       =    1     * 0
       = 0
Aus den logischen Grundfunktionen lassen sich beliebige Schaltfunktionen zusammensetzen. Bauen wir doch gleich einmal eine einfache Schaltung, einen digitalen Umschalter. Seine Funktion ist einfach: Wenn der Eingang "G" (Gate) der Schaltung 0 ist, soll der Eingang "A" auf den Ausgang "Q" durchgeschaltet werden, wenn G den Wert 1 besitzt, der Eingang "B". Die Wahrheitstabelle lautet demnach:

G A B Q
0 0 X 0
0 1 X 1
1 X 0 0
1 X 1 1

Die Schaltfunktion dazu:

Q = (~G * A) + (G * B)
Und die Blockschaltung:

Ein zweites Beispiel ist schon etwas komplexer. Es soll eine zweistellige Dualzahl decodiert werden; es ist ein 1-aus-4-Decoder zu bauen. Für jeden Wert der Zahl (00, 01, 10, 11) soll genau ein Ausgang einen 1-Pegel führen, alle anderen Ausgänge sind 0. Die Wahrheitstabelle:

A B Q1 Q2 Q3 Q4
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1

Dazu gibt es vier Schaltfunktionen:

Q1 = ~A * ~B
Q2 = ~A *  B
Q3 =  A * ~B
Q4 =  A *  B
Die Blockschaltung ist natürlich auch aufwendiger als die erste:

Theoreme der Schaltalgebra

Zweck der Theoreme ist die Umformen von Ausdrücken der Schaltalgebra zur optimalen technischen Realisierung der Logikschaltungen. Sie lassen sich aus den obigen Postulaten für die Grundschaltungen herleiten. Ein Beweis kann jederzeit durch vollständiges Einsetzen der Werte 0 und 1, durch Nachprüfen mit Wahrheitstabellen oder Ableiten aus bewiesenen Theoremen geführt werden. Bis auf zwei (doppelte Negation und Satz von Shannon) gibt es zu jedem Theorem eine duale Variante. Die Theoreme sind umkehrbar eindeutig, was eine Anwendung in beiden Richtungen gestattet. Die Theoreme gelten auch ohne Einschränkung, d. h. für jede Variable kann eine Schaltfunktion (in Klammern) stehen.

1x + 0 = x x * 1 = x
2x + 1 = 1 x * 0 = 0
3 Idempotenz-Gesetzx + x = x x * x = x
4x + ~x = 1 x * ~x = 0
5 doppelte Negation~ ~x = x
6 Kommutativ-Gesetz x1 + x2 = x2 + x1 x1 * x2 = x2 * x1
7 Assioziativ-Gesetz x1 + (x2 + x3) = (x1 + x2) + x3 x1 * (x2 * x3) = (x1 * x2) * x3
8 Distributiv-Gesetz x1 * (x2 + x3) = (x1 * x2) + (x1 * x3) x1 + (x2 * x3) = (x1 + x2) * (x1 + x3)
9 Absorptionsgesetz x1 + (x1 * x2) = x1 x1 * (x1 + x2) = x1
10 x1 + (~x1 * x2) = x1 + x2 x1 * (~x1 + x2) = x1 * x2
11 Expansiosgesetz x1 = (x1 * x2) + (x1 * ~x2) x1 = (x1 + x2) * (x1 + ~x2)
12 Theoreme von de Morgan ~(x1 + x2 + x3 + ... + xn) = ~x1 * ~x2 * ~x3 * ... * ~xn ~(x1 * x2 * x3 * ... * xn) = ~x1 + ~x2 + ~x3 + ... + ~xn
13 Shannonsches Inversionstheorem ~F(x1,x2,x3,...,xn, +, *) = F(~x1,~x2,~x3,...,~xn, *, +)

Die Distributivgesetze werden vor allem in der umgekehrten Reihenfolge zum Ausklammern von Variablen oder Ausdrücken verwendet, um Schaltfunktionen zu vereinfachen.

Die de Morgan-Theoreme sind in der Praxis sehr bedeutsam, denn sie drücken die Dualität zwischen Konjunktion und Disjunktion aus. Die Disjunktion kann dementsprechend mitttels Konjunktion und Negation realisiert werden und umgekehrt. Damit reichen, wie oben schon erwähnt, zwei Grundoperationen aus, um alle Schaltfunktionen darzustellen. Andere Schreibweise (für 2 Variable):

x1 + x2 = ~(~x1 * ~x2)
x1 * x2 = ~(~x1 + ~x2)

Das Shannonsches Inversionstheorem erlaubt das Invertieren einer Schaltfunktion. Dazu ein Beispiel. Gesucht wird die Inversion der Schaltfunktion

y = (x1 * (~x2 + (x3 * x4))) + (x2 * ~x4)
Es ergibt sich auf konventiounellem Weg der Umformung:
~y = ~(x1 * (~x2 + (x3 * x4))) * ~(x2 * ~x4) =
   = (~x1 + ~(~x2 + (x3 * x4))) * (~x2 + x4) =
   = (~x1 + (x2 * ~(x3 * x4))) * (~x2 + x4) =
   = (~x1 + (x2 * (~x3 + ~x4))) * (~x2 + x4)
Vergleicht man die Ausdrücke für y und ~y, zeigt sich, daß alle Variablen invertiert sind und alle Disjunktionen durch Konjunktionen ersetzt wurden und umgekehrt. Dies ist eine allgemeingültige Regel für das Invertieren einer Schaltfunktion, eben das Shannonsches Inversionstheorem.
Achtung: Die ursprüngliche Rangfolge der Operationen muß beibehalten werden. Daher sind immer alle Ausdrücke in Klammern zu setzen, auch dort, wo diese zunächst nicht erforderlich wären. Zum Beispiel:
 y =  x1  + (x2 * ~x3) + (~x2 +  x3)
~y = ~x1 * (~x2 +  x3) * ( x2 * ~x3)
Bisher sind als Grundfunktionen mit zwei Variablen die Verknüpfungen UND und ODER bekannt. Zusammen mit der Funktion NICHT für eine Binärvariable sind alle Schaltfunktionen darstellbar. Die Auswahl dieser Grundfunktionen ist zwar willkürlich, aber wohlüberlegt. Andere Verknüpfungen sind teilweise sogar weniger aufwendig. Auch die zuvor behandelten Theoreme lassen sich für andere Grundfunktionen aufstellen. Es stellt sich also die Frage, welche weiteren Schaltfunktionen in der Praxis sinvoll sind. Es bleibt in der Regel bei folgenden Erweiterungen:

NANDNegierte UND-Verknüpfung
NORNegierte ODER-Verknüpfung
ÄQUIVALENZFunktion hat der Wert 1, wenn beide Eingänge gleich sind (auf beliebige Anzahl Eingänge erweiterbar)
ANTIVALENZ
Exklusiv-Oder, (E)XOR
Die Funktion hat den Wert 1, wenn beide Eingänge ungleich sind (auf beliebige Anzahl Eingänge erweiterbar - nur ein Eingang darf 1 sein). Negation der Äquivalenz-Funktion.
INHIBITIONDie Funktion hat den Wert 1, wenn ein Eingang 0 UND der andere Eingang 1 ist. Daher gibt es zwei Inhibitionsfunktionen.

Die Grundfunktionen NICHT, UND, ODER lassen sich durch die neuen Funktionen NAND und NOR, aber auch INHIBITION und IMPLIKATION darstellen. Die letzen beiden spielen in der Praxis jedoch keine so große Rolle. Die Realisierung mit NAND und NOR ist jedoch häufig anzutreffen. Hier werden auch von den Herstellern digitaler Schaltungen zahlreiche Gattertypen angeboten. Im Folgenden wird die Realisierung der drei Grundfunktionen durch NAND und NOR gezeigt.

Funktion Realisierung mit NAND Realisierung mit NOR
NICHT y = ~x = ~(x * x) = ~(x * 1) y = ~x = ~(x * x) = ~(x + 0)
UND y = x1 * x2 = ~ ~(x1 * x2)

y = x1 * x2 = ~(~x1 + ~x2)

ODER y = x1 + x2 = ~(~x1 * ~x2)

y = x1 + x2 = ~ ~(x1 + x2)

Normalformen von Schaltfunktionen

Bisher kennen wir drei Möglichkeiten für die Beschreibung eines Schaltnetzes: Ausgangspunkt ist in der Regel die Wahrheitstabelle (Problemdefinition), von der aus man zur Funktionsgleichung und zur Blockschaltung gelangt. Es wird nun ein einheitlicher Weg gesucht, wie man von der Wahrheitstabelle zur Funktionsgleichung gelangt, die Normalform. Eine Funktionsgleichung in Normalform kann dann möglicherweise noch vereinfacht werden. Es gibt zwei Normalformen, die mittels der bekannten Theoreme ineinander übergeführt werden können: Um zur disjunktiven Normalform zu gelangen werden alle Zeilenkombinationen der Wahrheitstabelle herausgegriffen, bei der die Ausgangsvariable den Wert 1 annimmt. Die Eingangsvariablen jeder Zeile werden in Eigenform (falls der Wert 1 ist) oder negierter Form (falls der Wert 0 ist) konjunktiv verknüpft. Die sich so ergebenden Vollkonjunktionen oder Minterme werden disjunktiv verknüpft. Zum Beispiel:
x1  x2  x3   y     Minterme
 0   0   0   0
 0   0   1   1 → (~x1 * ~x2 *  x3)
 0   1   0   1 → (~x1 *  x2 * ~x3)
 0   1   1   0
 1   0   0   1 → (x1 * ~x2 * ~x3)
 1   0   1   1 → (x1 * ~x2 *  x3)
 1   1   0   1 → (x1 *  x2 * ~x3) 
 1   1   1   0

y = (~x1 * ~x2 * x3) + (~x1 * x2 * ~x3) + (x1 * ~x2 * ~x3) +
    + (x1 * ~x2 * x3) + (x1 * x2 * ~x3) 
Um zur konjunktiven Normalform zu gelangen werden alle Zeilenkombinationen der Wahrheitstabelle herausgegriffen, bei der die Ausgangsvariable den Wert 0 annimmt (Maxterme bzw. Volldisjunktionen). Beispiel:
x1  x2  x3   y     Maxterme
 0   0   0   0 → (x1 + x2 + x3)
 0   0   1   1
 0   1   0   1
 0   1   1   0 → (x1 + ~x2 + ~x3)
 1   0   0   1
 1   0   1   1
 1   1   0   1
 1   1   1   0 → (~x1 + ~x2 + ~x3)

y = (x1 + x2 + x3) * (x1 + ~x2 + ~x3) * (~x1 + ~x2 + ~x3) 
Alternativ stellt man zuerst die disjunktive Normalform für ~y auf. Beispiel:
x1  x2  x3   y     Minterme
 0   0   0   0 → (~x1 * ~x2 * ~x3)
 0   0   1   1
 0   1   0   1
 0   1   1   0 → (~x1 * x2 * x3)
 1   0   0   1
 1   0   1   1
 1   1   0   1
 1   1   1   0 → (x1 * x2 * x3)

~y = (~x1 * ~x2 * ~x3) + (~x1 * x2 * x3) + (x1 * x2 * x3) 
Nach Negation beider Seiten erhält man mit dem Theorem von de Morgan:
y = (x1 + x2 + x3) * (x1 + ~x2 + ~x3) * (~x1 + ~x2 + ~x3) 
Disjunktive und konjunktive Normalform sind vollständig gleichwertig. Die DNF ist aus der Wahrheitstabelle leichter ablesbar und i. A. Basis für die anschließende Vereinfachung. Man kann aber auch den Ansatz wählen, daß man abhängig vom Wert der Ausgangsvariablen DNF oder KNF wählt: Die Normalformen belegen auch die folgende, in der Praxis sehr wichtige Aussage:

Jede Schaltfunktion läßt sich immer durch eine zweistufige Schaltung realisieren.

Als etwas komplexers Beispiel soll eine Binärzahl (8-2-4-1-Code) in die Anzeige für Würfelaugen umgesetzt werden. Die Würfelaugen werden nach folgendem Schema belegt:

Die Wahrheitstabelle ergibt sich dann zu:

W x3 x2 x1 a b c d e f g
1 0 0 0 0 0 0 1 0 0 0
2 0 0 1 0 1 0 0 0 1 0
3 0 1 0 0 1 0 1 0 1 0
4 0 1 1 1 1 0 0 0 1 1
5 1 0 0 1 1 0 1 0 1 1
6 1 0 1 1 1 1 0 1 1 1

Die Gleichungen für die 7 Variablen lauten dann:

a = (~x3 * x2 * x1) + (x3 * ~x2 * ~x1) + (x3 * ~x2 * x1)
b = ~(~x3 * ~x2 * ~x1)
c = (x3 * ~x2 * x1)
d = (~x3 * ~x2 * ~x1) + (~x3 * x2 * ~x1) + (x3 * ~x2 * ~x1)
e = c
f = b
g = a
Nach Vereinfachung mit den Theoremen ergibt sich:
a = (x1 * x2) + x3
b = (x3 + x2 + x1)
c = (x3 * ~x2 * x1)
d = ~x1
e = c
f = b
g = a
Was dann zur folgenden Schaltung führt:

Schaltnetze und Schaltwerke

Bisher wurden nur Schaltfunktionen mit einer Ausgangsvariablen behandelt. Man kann die bisher behandelten Prinzipien auf Binärschaltungen mit mehreren Ausgangsvariablen erweitern. Das führt dann zu sogenannten Schaltnetzen. Dies sind Digitalschaltungen, bei denen der Zustand der Ausgänge zu jedem Zeitpunkt nur vom Zustand der Eingänge zu diesem Zeitpunkt abhängt. Die Vorgeschichte spielt keine Rolle. Es sind keine Rückkopplungen oder Speicher vorhanden.

Soll die Vorgeschichte, d.h. der Zustand der Ausgänge zu einem früheren Zeitpunkt eine Rolle spielen, ist eine Erweiterung um Speicherelemente notwendig. Schaltwerke sind Digitalschaltungen, bei denen der Zustand der Ausgänge zu jedem Zeitpunkt vom Zustand der Eingänge zu diesem Zeitpunkt und endlich vielen vorausgegangenen Zuständen abhängt. Der Zustand von endlich vielen vorhergegangenen Zeitpunkten führt zu inneren Zuständen, welche die Schaltung einnimmt.

Als Speicherelemente werden in der Regel Flipflops verwendet (siehe später).

An dieser Stelle soll als Beispiel für ein Schaltnetz ein Addierer für zwei Dualzahlen behandelt werden, der unter anderem den Kern des Rechenwerks bildet. Das Ergebnis der Addition ist nicht einstellig, denn wenn beide Summanden den Wert 1 haben, wird eine zweite Stelle benötigt. Es ergeben sich also zwei Ausgangsvariablen, ein Summenbit und ein Übertragsbit:

x1x2SummeÜbertrag
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Aus dieser Wahrheitstabelle ist nun das Schaltnetz zu entwickeln. Es lassen sich für Summe (S) und Übertrag (Ü) zwei Schaltfunktionen aufstellen:

S = (~x1 * x2) + (x1 * ~x2) = (x1 + x2) * ~(x1 * x2)
Ü = (x1 * x2)
Die Funktionsgleichung für S kann durch Verwendung von Ü vereinfacht werden:
S = (x1 + x2) * ~Ü
Es ergibt sich dann folgende einfache Schaltung:

Will man mehrstellige Dualzahlen addieren, muß das Addierschaltnetz bei jeder Stelle auch den Übertrag der vorhergehenden Stelle berücksichtigen, es kommt also eine Eingangsvariable hinzu. Der erste Gedanke wäre sicher, ein entsprechendes Schaltnetz zu entwerfen. Man kann aber auch zu S den Übertrag der vorhergehenden Stelle addieren, indem man einen zweiten Halbaddierer verwendet (die beiden Übertragsausgänge werden ODER-verknüpft):

Nun hat man einen Volladdierer für zwei Dualstellen. Zum Aufbau mehrstelliger Addierwerke wird lediglich der Übertrags-Ausgang einer Stelle mit dem Übertragseingang der nächsten verbunden.

Schaltkreisfamilien

TTL (Transistor-Transistor-Logik)

Die TTL-Schaltkreisfamilie entwickelte sich bereits sehr früh und gilt seit fast 30 Jahren als die bedeutendste Schaltkreisfamilie. Aus den Standard-TTL-Bausteinen entwickelten sich über die Jahre andere Typen:

JahrBaureiheBezeichnung
1963Standard-TTL 74xx
1967Low-Power74Lxx
1967High-Power74Hxx
1969Schottky74Sxx
1971Low-Power-Schottky74LSxx
1978Fast74Fxx
1980Advanced Low-Power-Schottky74ALSxx
1981Advanced Schottky74ASxx

"Transistor-Transistor-Logik" besagt, daß die Signal-Ein- und -Auskopplung über Transistoren erfolgt. Die TTL-Baureihen gliedern sich in mehrere, historisch gewachsene Reihen. Während zunächst die sogenannten Standard-TTL-Schaltkreise mit der Bezeichnung 74xxx den Markt dominierten, kamen später Reihen mit sehr schnellen Schaltzeiten wie die High-Speed-Reihe 74Sxxx oder aber verringerter Leistungsaufnahme wie die 74Lxxx-Reihe sowie Kombinationen aus beiden Reihen (74LSxxx) hinzu. Letztere dominiert heute TTL-Anwendungen. Kennzeichnend für die Grundschaltung von TTL-Gattern ist derMultiemitter-Eingang, der mehrere Eingänge rückwirkungsfrei miteinander verkoppelt und der sogenannte Totem-Pole-Ausgang, der aus einer Treiberstufe mit zwei im Gegentakt arbeitenden Ausgangstransistoren besteht.

Diese Schaltungsmerkmale sind in allen Schaltkreisen der Standard-TTL-Reihen zu finden, unabhängig davon, wie komplex deren Innenleben auch ist. Lediglich bei den High-Speed-Baureihen mit dem S in der Typenbezeichnung finden wir statt der Multiemittertransistoren Schottky-Diodeneingänge, da deren Schaltzeiten wesentlich kürzer sind als die von Transistoren.

Auch ausgangsseitig gibt es Unterschiede. Der Standard-Ausgang ist durch den Gegentaktausgang gekennzeichnet. Er kann sowohl TTL-Eingänge ansteuern als auch systemfremde Lasten, wie z. B. einen Transistor oder eine LED über einen Vorwiderstand. Die Transistoren werden als Schalter betrieben, und zwar so, daß sie nicht gleichzeitig leiten oder sperren. Daher ist je nach Schaltzustand immer nur einer der beiden Transistoren leitend und schaltet den Ausgang entweder nach Masse (Ausgangspegel "0") oder zur Betriebsspannung (Ausgangspegel "1") durch.

Eine weitere wichtige Rolle spielt der Tristate-Ausgang. Sein Name sagt alles. Im Gegensatz zum einfachen Gegentakt-Ausgang, der den Ausgang entweder sperrt oder durchschaltet, ist es hier über eine besondere Steuerung, die extern oder intern innerhalb der Schaltkreislogik ausgelöst werden kann, zusätzlich möglich, den Ausgang durch gleichzeitige Sperrung beider Ausgangstransistoren den Ausgang hochohmig zu machen. Der Vorteil dieser Schaltungsversion ist die Möglichkeit, mehrere Schaltkreisausgänge z. B. an einer gemeinsamen Busleitung betreiben, d.h., parallelschalten zu können. Wichtig ist beim Tristate-Ausgang, daß niemals zugleich zwei oder mehr Ausgänge aktiviert sein dürfen.

Die dritte wichtige Ausgangsschaltungsversion ist der Open-Collector-Ausgang (OC). Hier weist hier der Ausgangstransistor einen offenen Kollektor auf, der im leitenden Zustand nach Masse schaltet (0-Pegel) und im gesperrten Zustand hochohmig (offen) wird. Dieser Effekt wird zum einen für das Treiben höherer Lasten eingesetzt, zum anderen sind hier je nach Typ des Ausgangstransistors höhere Ausgangsspannungen als die Betriebsspannung des Schaltkreissystems möglich.

Aber auch Multiplexbetrieb und Parallelschaltung von Ausgängen ist so möglich. Und gerade letztere Möglichkeit wird gern in der Praxis angewendet, um eine zusätzliche logische Verknüpfung zu realisieren. So kann man z. B. mehrere NAND-Gatter so ausgangsseitig zusammenschalten, daß eine zusätzliche AND-Funktion ensteht. Je nach Art der sich ergebenden Verknüpfung nennt man das "WIRED-AND" bzw. "WIRED-OR".

Die TTL-Familie deckt heute nahezu alle denkbaren Anwendungen mit Schaltkreisen niedrigen und mittleren Integrationsgrades ab und ist mit nahezu 1000 Typen am Markt vertreten. Sie zeichnet sich aus durch:

Der recht hohe Ausgangsstrom führt aber auch zu einem hohen Ruhestrom. Der relativ hohe Strombedarf der TTL-Schaltkreise erzwang große Chipflächen, um die entstehende Verlustwärme abzuführen. Damit war dem Integrationsgrad der TTL-Technik bei gleicher Chipfläche eine "natürliche" Grenze gesetzt.Die folgende Tabelle zeigt Gatterlaufzeiten und Verlustleistungen bei TTL-Gattern.

TTL-Familie Abk. Laufzeit [ns] Leistung [mW]
Low Power TTL L 33 1
Standard TTL - 10 10
Low Power Schottky LS 9 2
High Power H 6 22.5
Advanced Low Power Schottky ALS 4 1
Schottky S 3 20
Fast Schottky F 2 4
Advanced Schottky AS 1.5 22

Die wichtigsten Daten von TTL-Schaltkreisen aus Anwendersicht sind

Der "fan out" eines Gatters gibt an, wieviele Eingänge maximal von einem Gatterausgang angesteuet werden können. Bei Standatd-TTL ergibt er sich zu

-IQ0/-II0 = 16 mA/1,6 mA = 10

Der Bereich des 0-Pegels erstreckt sich beim TTL-Eingang von 0 bis 0.8 V, der des 1-Pegels von 2 bis 5 V. Das heißt, im Spannungsbereich des 0-Pegels erkennt jedes TTL-Gatter an seinem Eingang eine logische 0, ab 2 V dann eine logische 1. Der Spannungsbereich zwischen 0.8 V und 2 V ist eine verbotene Zone. Ein Signal, das in diesem Bereich längere Zeit anliegt, kann das Gatter zum Schwingen anregen. Zumindest ist eine Fehlfunktion programmiert. Ansteuerimpulse müssen diesen Bereich möglichst schnell durchlaufen.

Ausgangsseitig liegen die Pegel für "1" zwischen 2.4 V und 5 V sowie die 0-Pegel zwischen 0 und 0.4 V. Insgesamt ergibt sich für die TT0-Pegel und den Störabstand:

Eingangsströme und fan out:

TTL-Familie IIL [mA] IIH [µA] fan out
Low Power TTL -0.18 10 20
Standard TTL -1.6 40 10
Low Power Schottky -0.4 20 20
High Power -2.0 50 10
Advanced Low Power Schottky -0.2 20 20
Schottky -2.0 50 10
Fast Schottky -1.2 40 25
Advanced Schottky -1.0 20 40

MOS (Metall-Oxid-Silizium)

Die MOS-Technik hat Vorteile gegenüber TTL: der Aufbau aus hochohmigen Feldeffektransistoren, die nahezu leistungslos ansteuerbar sind und so nur sehr geringe Verlustleistungen aufweisen. Diese steigen erst mit wachsender Betriebsfrequenz. Dazu kommt der einfache und damit platzsparende Aufbau ohne weitere Schaltungselemente wie Dioden und Widerstände sowie Fortfall von Isolierschichten und die dadurch mögliche hohe Integration. Nachteilig waren anfangs die relativ hohen Schaltzeiten, (durch die hohen Kapazitäten innerhalb der MOS-Schaltungen, die erst später mit Einführung der CMOS-Technik verringert wurden), sowie die zunächst relativ geringen Ausgangsströme.

Erst mit der Fortentwicklung der MOS-Technologie hin zu CMOS (Complementary MOS) durchbrach man die technologischen Schranken, so daß moderne CMOS-Reihen heute in Schaltzeit und Ausgangslaststrom die TTL-Schaltkreise vielfach direkt ersetzen können. Weiterhin können CMOS-Schaltkreise auch mit höheren Spannungen betrieben werden, wenn ein großer Störabstand erforderlich ist. Aber auch bei 5 V Versorgungsspannung sind die Störabstände größer als bei TTL, wie ein Blick auf das folgende Bild zeigt.

CMOS bedeutet im Wesentlichen, daß zwei Metalloxid-Feldeffekttransistoren (jeweils ein N- und ein P-Kanal-FET) in Serie zwischen Masse und Betriebsspannung liegen (Komplementärtechnik). Die Eingänge beider Transistoren sind miteinander verbunden. Diese Transistoren können im Idealfall die Gleichspannung völlig sperren, sind also ggf. extrem hochohmig. Je nach Eingangspotential leitet entweder der obere oder untere Transistor - also völlig spannungsgesteuert und damit nahezu leistungslos (zumindest im statischen Betrieb).

CMOS unterscheidet sich von TTL, wie gesagt, auch durch einen erweiterten Betriebsspannungsbereich. Er reicht von 3 V bis 15 V. So kann CMOS sowohl in TTL-Schaltungen als auch in analoge Schaltungen eingebunden werden, die mit höheren Spannungen arbeiten. Wie das Bild zeigt, erkennt ein CMOS-Gatter bei 5 V Versorgungsspannung am Eingang einen 0-Pegel zwischen 0 V und 1.5 V und einen 1-Pegel zwischen 3.5 V und 5 V. Am Ausgang sind es entsprechend 0 V bis 0.05 V für "0" und 4.95 V bis 5 V für "1". Daraus resultiert ein Störspannungsabstand von 1.45 V. Bei 10 V Betriebsspannung vergrößert er sich beispielsweise auf 2.95 V.

Um den leicht unsymmetrischen Betrieb der CMOS-Ausgangsstufe zu kompensieren, sind ihr stets noch zwei Inverterstufen nachgeschaltet, die als Ausgangspuffer dienen und für ein symmetrisches Ausgangssignal sorgen. Für CMOS-Schaltkreise werden ausschließlich MOS-Feldeffekttransistoren verwendet, die als spannungsgesteuerte Schalter arbeiten. Grundbaustein aller CMOS-Gatter ist eine aus zwei komplementären MOSFET bestehende Stufe, wie man sie im folgenden Bild sehen kann. Dies ist die einfachste Form des Inverters.

Es wirken ein n-Kanal-MOSFET und ein p-Kanal-MOSFET zusammen. Bei 1-Pegel am Eingang E ist der untere MOSFET leitend, der obere gesperrt und der Ausgang A mit Masse verbunden; A führt somit 0-Pegel. Wird der Eingang E an 0-Pegel gelegt, so ist nun der untere MOSFET gesperrt und der obere leitend, Ausgang A somit mit +5 V verbunden und der Ausgangspegel ist logisch 1. In jedem der beiden Zustände ist immer einer der beiden Transistoren gesperrt, ein Ruhestrom ist näherungsweise Null. Es fließen lediglich noch Isolations- und Sperrschichtleckströme, die nur wenige Nanoampere betragen. Lediglich im Moment des Umschaltens (Pegelwechsel) werden kurzzeitig beide MOSFETS leitend; hieraus resultiert im Umschaltmoment eine sehr kurze Stromaufnahme von wenigen Milliampere. Zu beachten ist jedoch die bei digitalen CMOS-Schaltungen die kapazitive Belastung des Ausgangs. Hier wirken die Eingangskapazitäten der nachgeschalteten Gattereingänge (Gatekapazitäten) sowie Leitungskapazitäten. Diese Kapazitäten müssen im Umschaltmoment schnell umgeladen werden. Die mittlere Speisestromaufnahme des CMOS-Gatters is somit von der Umschaltfrequenz abhängig, sie steigt mit der Frequenz. Wird dem Ausgang ein ständiger Strom entnommen oder zugeführt, so wirkt der Kanalwiderstand des jeweils leitenden Transistors. Sein Wert liegt zwischen 400 und 1000 Ohm (Mittelwert etwa 600 Ohm). Aus diesem Grund ist die mögliche Stromentnahme aus CMOS-Ausgängen (etwa zum Ansteuern von Transistoren usw.) auf etwa 0.1 mA begrenzt, wenn die logischen Pegel eingehalten werden müssen.

Zu erwähnen ist eine Weiterentwicklung dieser Standard-CMOS-Technik, die zu einer praktisch idealen Übergangskennlinie führt und neben anderen Vorteilen auch höhere Integrationsgrade ermöglicht, die LOCMOS-Technik. Sie arbeitet mit einem speziellen Oxydationsverfahren (Local Oxydation of Silicon CMOS). Die Vorteile liegen vor allem in steileren Impulsflanken, geringeren Verzögerungszeiten in den Gattern und - bei gegebener Impulsfrequenz - geringeren Verlustleistungen. Merkmal aller LOCMOS-ICs ist eine zusätzliche Ausgangspufferstufe für jeden Ausgang. Das folgende Bild zeigt die erweiterte Schaltung eines NOR-Gatters in LOCMOS-Technik. Im punktierten Feld ist die dem normalen NOR-Gatter nachgesetzte Ausgangsstufe erkennbar. Sie besteht aus zwei in Serie geschalteten Invertern, die durch ihre Verstärkerwirkung die Übertragungskennlinie wesentlich versteilern.

Die Eingänge von CMOS-Gattern sind, wie bei allen MOSFETs, sehr empfindlich gegen statische Aufladungen und Überspannungen und deshalb bei allen CMOS-Typen mit integrierten Gateschutzdioden weitgehend geschützt. Je nach Typ und Hersteller sind alle oder nur einige der gezeigten Bauelemente integriert. Diese Schutzbeschaltung ist an jedem CMOS-Eingang vorhanden.

Im allgemeinen ist bei Standard-B-CMOS-Typen die Eingangsbeschaltung wie in der Abbildung vorhanden (sie wurde in den vorangegangenen Abbildungen zur besseren Übersicht fortgelassen und ist dort vor jedem Eingang E vorhanden). Die Dioden am Eingang leiten Eingangsüberspannungen negativer Polarität nach Masse, solche positiver Polarität, wenn sie den logischen 1-Pegel (+Us) übersteigt, nach +Us ab, wobei Vorwiderstand strombegrenzend für die Dioden wirkt. Zu beachten ist die ganz linke Diode, für die keine Strombegrenzung besteht! Sofern der Eingang mit »systemfremden« Quellen (Spannungen fremder Herkunft, die größer als Us werden können, zeitweise offene Eingänge u. ä.) beschaltet wird, muss ein äußerer Vorwiderstand den Strom begrenzen. Zu beachten ist im praktischen Einsatz vor allem auch, daß V1 leitend wird, wenn +Us abgeschaltet wird und die Eingangsspannung noch anliegt!

Bei der Eingangsbeschaltung besteht ein entscheidender Unterschied zwischen TTL und CMOS: Während offene TTL-Eingänge stets 1-Pegel annehmen (und man deshalb unbenutzte TTL-Eingänge offen lassen kann - sofern die Umgebung störungsfrei genug ist), stellt sich bei offengelassenen CMOS-Eingängen eine Spannung in der Nähe der Schwellenspannung (Potential etwa in Mitte der Übergangskennlinie) ein. Es kommt damit zu undefinierten Schaltzuständen und ständiger Ruhestromaufnahme der CMOS-ICs und Schwingneigung. Aus diesem Grund müssen unbenutzte CMOS-Eingänge stets beschaltet werden! Man löst dies am einfachsten, indem man die funktionell gleich benutzten Eingänge parallel legt, oder es werden unbenutzte Eingänge je nach ihrer Funktion stets mit Masse (0-Pegel) oder direkt mit +Us (1-Pegel) verbunden.

Jede CMOS-Struktur besitzt einen parasitären Thyristor. Davon "merkt" die Schaltung gewöhnlich nichts, jedenfalls solange die Eingangsspannungen den Wert der Betriebsspannung nicht über- und den Massepegel nicht unterschreiten. In diesen beiden Fällen kann jedoch dieser Thyristor zünden. Das bedeutet, es herrscht zwischen der Betriebsspannung und Masse Kurzschluß. Das IC verabschiedet sich in die ewigen Elektronenjagdgründe. Man nennt dieses Verhalten "Latch-Up-Effekt". Die Latch-Up-Thyristoren sind Nebeneffekte beim CMOS-Herstellungsprozeß und können durch nichts verhindert werden.

TTL und CMOS koppeln

Vergleicht man die Pegeldiagramme von TTL und CMOS, so wird man feststellen, daß man einen TTL-Eingang sogar direkt an einen CMOS-Ausgang anschließen kann, denn dessen 0.05 V für "0" und auch die 4.95 V für "1" liegen innerhalb der entsprechenden TTL-Bereiche.

Umgekehrt gilt dies jedoch nicht, denn der TTL-1-Pegel beginnt bei 2.4 V, während CMOS erst bei 3.5 V eine 1 erkennt. Der 2.4-V-TTL-1-Pegel liegt im verbotenen Bereich für CMOS. Also muß man sich einen Trick einfallen lassen. Man verwendet für diese Verbindung einen Pull-Up-Widerstand (4.7 kOhm bei 5 V) am Eingang des CMOS-Gatters vor, der das Potential am CMOS-Eingang sicher auf 1-Pegel zieht.

Ganz sicher geht man, indem man ein IC der 74HCT-Reihe verwendet, das nicht nur pin- und funktionskompatibel mit TTL ist,sondern auch den Pull-Up-Widerstand überflüssig macht. Die Reihen 74HCxxx und 74HCTxxx sind übrigens pin- und funktionskompatibel mit den entsprechenden TTL-Typen. Folgerichtig finden wir hier auch Typen mit offenem Drain-Anschluss als Äquivalent zum Open Collector bei TTL und auch Typen mit Tristate-Ausgang.

Spannungsversorgung

Sowohl bei TTL als auch bei CMOS treten bei Schaltvorgängen Spitzen in der Stromaufnahme auf. Diese Lastspitzen sind steilflankig und bewegen sich zeitlich im Nanosekundenbereich. Bei diesem Verhältnissen stellen die Versorgungsleitungen zum einzelnen Gatter oder sonstigen Baustein bereits nenneswerte Induktivitäten dar - mit dem Resultat, daß die Versorgung des ICs kurzzeitig einbricht (Dip). Nach einigen Nanosekunden erfolgt dann ein Überschwingen in der Gegenrichtung (Spike). Beides kann zu Störungen im Ablauf des Schaltnetzes oder Schaltwerks führen. Daher muß jedes IC mit einem Abblock-Kondensator versehen werden (20 - 100 nF), der durch möglichst kurze Leitungen oder Leiterbahnen mit den beiden Versorgungsanschlüssen (+Ucc und Masse) verbunden ist. Es kann auch nicht schaden, für die gesamte Schaltung einen Elko mit 47 - 100 Mikrofarad vorzusehen.

Flipflops

Nachdem Sie die wichtigsten Schaltkreisfamilien und deren Verhalten kennengelernt haben, soll eine neue Art des Verhaltens von digitalen Schaltgliedern behandelt werden. Der Zustand am Ausgang eines Schaltnetzes ändert sich sofort, wenn sich der Zustand am Eingang ändert, unabhängig von etwa früher vorhandenen anderen Zuständen am Eingang.Es gibt aber ungezählte Anwendungen, die es notwendig machen, sich einen Zustand über eine gewisse Zeit zu merken (die schon besprochenen Schaltwerke).

Bei der Einführung des Schaltwerks im vorhergehenden Kapitel wurde die Notwendigkeit von Speicherelementen erkannt. Diese Speicherelemente werden in der Digitaltechnik durch Baugruppen realisiert, die zwei stabile Ausgangszustände kennen → bistabile Kippstufen → Flipflops. Sie sollen ihren Ausgangszustand von "1" auf "0" oder von "0" auf "1" nur dann ändern, wenn eine bestimmte Eingangs-Signalkombination auftritt. Diese Information bleibt erhalten, bis sie d urch eine bestimmte andere Eingangskombination wieder umgeschaltet wird. Das Flipflop ist also ein digitaler Speicher, dessen beide stabilen Zustände von außen einstellbar sind. Flipflops eignen sich zum Schalten, Zählen, Speichern und Teilen von Frequenzen. Es gibt unterschiedliche Arten von Flipflops, die alle aus einen Basisflipflop und einen Schaltetz zur Ansteuerung bestehen.

Basisflipflop

Kernpunkt der Flipflop-Schaltung ist die Rückführung des Ausgangssignals auf einen Eingang. Doch die alleinige Rückführung (linkes Bild) erlaubt zwar das Setzen des Ausgangs auf "1" (Speichern), nicht jedoch wieder das Rücksetzen des Ausgangs auf "0". Dazu wird zwischen Ausgang und Rückführung ein UND-Gatter als Tor geschaltet, mit dem sich die Rückkopplung unterbrechen läßt (rechtes Bild). Damit hat man einen Setzeingang und einen Rücksetzeingang.

Durch Anwenden des Theorems von de Morgan können statt des ODER- und des UND-Gatters zwei NOR-Gatter verwendet werden. Durch Umzeichen erhält man die typische Darstellung eines Setz-/Rücksetz-Flipflops:

Das RS-Flipflop (Rücksetz-/Setz-FF) bildet das einfachste Basis-Flipflop. Nach dem gleichen Schema kann man auch mit NAND-Gattern ein RS-FF aufbauen, das gegenüber dem RS-FF mit NOR-Gattern invertierte Eingangssignale aufweist. Für das SR-FF werden die Eingänge mit "S" (Setzen) und "R" (Rücksetzen) sowie der Ausgang mit "Q" bezeichnet. Es gilt dann:

S R QSchaltzeichen
1 1 Speichern
0 1 1, Setzen
1 0 0, Rücksetzen
0 0 Verboten

Probleme des RS-FF sind:

In der Praxis führen beide Probleme zu kurzzeitigen "illegalen" Zuständen eines Schaltwerks, da jedes Gatter in der Realität mit einer Signal-Durchlaufzeit behaftet ist. Unterschiedliche Schaltnetze an den Eingängen des FF können dazu führen, daß ungewollte Zustände durch die unterschiedlichen Laufzeiten auftreten. Es besteht somit ein Bedarf für taktgesteuerte Flipflops, die zu einem definierten Zeitpunkt umschalten.

Das SR-FF eingnet sich u.a. vorzüglich zur Entprellung von Kontakten. Schalter oder Taster "prellen", d. h. der Schalter schließt nicht auf einmal, sondern durch mechanische Bewegungen der Konstruktion öffnet und schliesst der Schalter mehrmal in kurzen Abständen. Im Bild ist dies die mit "Eingang" bezeichnete Kurve. Gewünscht ist das darunter gezeichnete Verhalten.

Dazu wird ein NAND-FF eingesetzt (active Low). Ein Umschalt-Taster legt jeweils einen der Eingänge auf "0" und erzeugt damit eine Reihe von Setz- oder Rücksetzimpulse. Das Kontaktprellen des Taster hat eine Reihe von Setz- bzw. Rücksetzimpulse zur Folge. Am Ausgang des FF erscheint der gewünschte saubere Impuls.

Beispiel: Codeschloß (Anwendung von RS-FF)
Der Ausgang A soll nur aktiviert werden, wenn die Taster T1 - T4 in der richtigen Reihenfolge gedrückt werden. Jeder andere Taster setzt das System zurück. Prinzip: Das RS-FF (n) kann nur dann gesetzt werden, wenn das RS-FF (n-1) bereits gesetzt ist.

  S  = Q    * T 
   n    n-1    n

Die Sicherheit des Schlosses läßt sich verbessern, indem auch dann ein Reset erfolgt, wenn die Reihenfolge von T1 - T4 nicht eingehalten wird. Wie hoch ist der zusätzliche Aufwand?

Beispiel: Motorsteuerung
Durch zwei Taster (T1 und T2) soll ein Motor auf Rechtslauf bzw. Linkslauf geschaltet werden. Ein dritter Taster (T3) dient zum Anhalten des Motors. Um Schäden am Getriebe zu vermeiden, soll eine digitale Verknüpfung verhindern, daß von Rechts- uns Linkslauf umgeschaltet werden soll, während der Motor läuft. Es gilt also:

  Setzeingang rechts = T1 * ¬Ql
  Setzeingang links = T2 * ¬Qr

Das Basisflipflop übernimmt eine anliegende Eingangsinformation sofort und speichert sie, d.h. sie wirkt sich unmittelbar aus. Solche Flipflops bezeichnet man als "nicht taktgesteuerte Flipflops. Zu den nicht taktgesteuerten Flipflops gehört auch das bereits ausführlich behandelte RS-Flipflop.

Taktgesteuerte Flipflops

Manche Anwendungen verlangen, daß ein Flipflop nur zu einem bestimmten Zeitpunkt auf den Eingangszustand reagiert. Diese Forderung hat zur Entwicklung der taktgesteuerten Flipflops geführt. Dabei bestimmt ein zusätzlicher Eingang C (Clock) den Zeitpunkt der Datenübernahme. Eine synchrone Arbeitsweise des RS-FF wird auch erst durch Erweiterung um einen Takteingang erreicht. Die taktgesteuerten Flipflops kann man unterscheiden in: Die Zeitpunkte Qn und Qn+1 sind nun eindeutig durch das Taktsignal definiert. Die Eingänge R und S bereiten den Folgezustand des FF vor, bestimmen ihn aber nicht unmittelbar, man nennt sie daher auch oft "Vorbereitungseingänge". Das folgenden Bild zeigt einen Überblick der verschiedenen Arten von Flipflops in übersichtlicher Form. Die erste Verzweigung unterscheidet zwischen "nicht taktgesteuerten" und "taktgesteuerten" Flipflops.

Takt(zustand)gesteuertes RS-FF

Die Realisierung erfolgt durch UND-Verknüpfung der Eingänge R und S mit dem Takteingang:

CSRQSchaltzeichen
000Q-1 (speichern)
001Q-1 (speichern)
010Q-1 (speichern)
011Q-1 (speichern)
100Q-1 (speichern)
1010 (Rücksetzen)
1101 (Setzen)
111Verboten!

Durch einen zusätzlichen Takt-Eingang wird dem FF die Arbeits- und Ruhezeit zugeteilt. Dadurch übernimmt das FF als Speicherelement die Information nur zu einem bestimmten Zeitpunkt, wobei diese dann bis zur nächsten Änderung an den Ausgängen stabil anliegt. Der Takt bestimmt auch, wann die an den Eingängen anliegende Information das FF beeinflußt.

D-Flipflop (Latch)

Das D-FF kann als taktzustandsgesteuerte Sonderform des RS-FF aufgefaßt werden, bei der der "Verbotene" Zustand nicht mehr auftreten kann. Der R-Eingang hat immer den invertierten Wert des S-Eingangs, der Zustand S = R = 1 kann somit nicht auftreten.

Der Zustand "Speichern" (S = R = 0) kann nun natürlich auch nicht mehr auftreten, der Takteingang bestimmt nun alleine, wann die Information am D-Eingang übernommen wird. Die Wahrheitstabelle verkürzt sich für die Bedingungen: S = D und R = ~D zu:

DQn+1Schaltzeichen
00
11

Das D-FF ermöglicht z.B. Verzögerungen um eine Taktperiode. Durch "Parallelschalten" mehrerer D-FFs mit gemeinsamer Taktleitung kann man einen Speicher für Binärworte beliebiger Wortbreite realisieren, einen solchen Speicher nennt man dann Register.

Taktflankengesteuerte Flipflops Taktzustandsgesteuerte FFs übernehmen die Eingangsinformation solange der Takteingang = 1 ist, auch wenn sich während dieser Zeit der Eingangszustand ändert. Das ist nicht für alle Anwendungen wünschenswert. Dazu ein Beispiel:

Gesucht wird eine FF-Schaltung, bei der das FF beim Eintreffen des Taktimpulses zwischen 1 und 0 hin und her wechselt (Teilen des Taktes durch 2, "Toggle"-FF). Wenn Q = 1 ist soll nach dem Taktimpuls Q = 0 sein und umgekehrt. Ein Realisierungsversuch mit D-FF:

Diese Lösung führt jedoch nicht immer zum Ziel, da bei aktivem C der Eingang sofort auf den Ausgang geschaltet wird und so auch mehrfache Wechsel sofort weitergegeben werden, das führt möglicherweise zu ungewollte Schwingungen. Man könnte sich zunächst behelfen, indem man die "aktife" Taktphase möglichst kurz macht. Durch die folgende Schaltung wird aus einem 0-1-Wechsel ein kurzer Nadelimpuls erzeugt, der nur die Dauer einer Gatterlaufzeit (wenige Nanosekunden) hat.

Der Nachteil wird dadurch aber nur teilweise behoben. Ganz beseitigt werden kann er durch eine zweite Art von Flipflops mit Taktflanken-Steuerung. Der Takt ist nun kein statischer Pegel mehr, sondern eine dynamische Flanke. Die Info liegt dafür etwas "verzögert" am Ausgang an. Die Realisierung erfolgt durch Sperren der Eingänge nach Veränderung des Ausgangs. Es gibt flankengesteuerte RS- und D-Flipflops, das in der Praxis häufigste flankengesteuerte FF ist jedoch das JK-FF.

Das (ein)flankengesteuerte RS-Flipflop übernimmt die Eingangsdaten je nach Typ bei der positiven oder negativen Flanke des Taktsignals. In der internen Verschaltung des Bausteins erreicht man die Flankentriggerung im allgemeinen dadurch, daß die Eingänge nach dem Wirken gesperrt werden.

Für die folgenden Betrachtungen ist ein Blick auf einen Taktimpuls nötig. Er setzt sich zusammen aus einer steigenden (positiven) Flanke, einer Zeit in der ein 1-Pegel angenommen wird und einer fallenden (negativen) Flanke:

Bis auf den abgeänderten Takteingang entspricht das einflankengesteuerte RS-Flipflop direkt dem taktzustandsgesteuerten RS-Flipflop. Reagiert der Baustein auf die negative Taktflanke, ist im Schaltzeichen vor dem Takteingang eine Negation eingezeichnet.

Das von der Funktion her bereits bekannte D-Flipflop übernimmt bei Flankensteuerung das Datenbit bei einer Flanke des Taktsignals. Bis auf den abgeänderten Takteingang entspricht es dem taktzustandsgesteuerten D-Flipflop. Oft wird ein Flipflop benötigt, das bei jedem Impuls in den anderen stabilen Zustand kippt, also ein Frequenzteiler durch 2 (Toggle-Flipflop). Dies läßt sich realisieren, indem man bei einem flankengesteuerten D-Flipflop den Ausgang Q auf den D-Eingang zurückkoppelt. So wird bei jeder Taktflanke das Inverse des vorherigen Zustands eingespeichert.

Einflankengesteuertes JK-Flipflop

JKQn+1Schaltzeichen
LLQn
HLH
LHL
HH~Qn

Das JK-Flipflop ist ein Universal-Flipflop und kombiniert die Eigenschaften des RS-Flipflops mit denen des T-Flipflops. Es besitzt die beiden Vorbereitungseingänge "J" und "K", durch deren Beschaltung wir das Verhalten bestimmen können. Im Normalfall verhält sich das JK-Flipflop wie ein RS-Flipflop, d. h. 1-Pegel am Eingang J bedeutet Setzen, 1-Pegel an K bedeutet Zurücksetzen und J und K auf 0-Pegel bedeutet Speichern. Setz man J und K auf "1", führt dies zum Kippen in den anderen stabilen Zustand. Schaltet man also den J- und den K-Eingang eines JK-Flipflops auf 1-Pegel, so verhält es sich wie ein T-Flipflop.

Zweiflankengesteuertes JK-Flipflop

Das zweiflankengesteuerte JK-Flipflop, auch "Master-Slave-JK-FLipflop" genannt, ist die gebräuchlichste Form der zweiflankengesteuerten Flipflops. Der "Master" ist ein RS-Flipflop, der "Slave" ein RS-Flipflop, da die Ausgänge des Masters ja sowieso nie gleichzeitig H-Pegel führen können. Der Unterschied zum einflankengesteuerten JK-Flipflop liegt darin, daß mit der steigenden Taktflanke die Eingangsinformation in den Master übernommen wird und das Ausgangssignal erst nach der negativen Taktflanke erscheint. Das folgende Bild zeigt das Schaltsymbol und schematisch die Realisierung:

tn tn+1
JKQ
00Qn-1
010
101
11~Qn-1

Beispiele

Schieberegister

Durch Hintereinanderschalten mehrerer JK-FFs kann man erreichen, daß die Information am Eingang des ersten Registers bei jedem Taktimpuls an das folgende Register weitergegeben wird und so durch das aus diesen FFs gebildete Register hindurchgeschoben wird. Alternativ lassen sich D-Flipflops verwenden.



3-Bit-Dualzähler (asynchron)

Beim JK-FF gibt es eine Eingangskombination (J = K = 1), bei der das FF bei jedem Taktimpuls seinen Zustand wechselt (kippen, toggle). Jede Stufe des FF halbiert also den Takt. Es ergibt sich folgende Wahrheitstabelle für die Ausgänge:

Taktimpuls Q1 Q2 Q3
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1
8 0 0 0
....

Genauer: Taktimpuls 0 zeigt den Anfangszustand, der Rest der Tabelle den Zustand der Ausgänge nach dem jeweiligen Taktimpuls.

Da eine Vielzahl von Zählern angeboten wird, ist ein diskreter Aufbau aus Flipflops nur selten nötig.

Änderungsdetektor

Der folgende synchrone Änderungsdetektor liefert einen taktsynchronen Ausgangsimpuls, wenn sich der Eingang ändert. Das Verhalten der Schaltung wird durch das Impulsdiagramm verdeutlicht.

Logikprüfstift

Der Prüfstift zeigt nicht nur 1- und 0-Pegel an, sondern auch Impulse. Die 0- und 1-Anzeige ist wohl jedem klar. Je nach Eingangspegel leichtet einer der beiden LEDs. Das D-Flipflop ist als Toggle-Flipflop geschaltet und wechselt seinen Ausgangszustand bei jedem Signalwechsel am Eingang. Bei einem statischen Eingangssignal leuchtet somit eine der oberen beiden LEDs ("0" oder "1") und eine der beiden unteren LEDs (egal welche). Bei einem Rechtecksignal am Eingang toggelt das D-Flipflop ständig und beide gelben LEDs leuchten etwa halbhell. Natürlich leuchten auch die rote und grüne LED. An deren Helligkeint kann man sogar grob auf das Tastverhältnis schließen.

Bei höherer Integration wird die Schaltung eines Bausteins nicht mehr explizit angegeben, sondern der Baustein als Blockschaltung dargestellt, wie im folgenden Beispiel.

Beispiel: 7-Segment-Anzeige

Diese werden so genannt, weil sie aus sieben einzelnen Leuchtdioden (Segmenten) bestehen, die in einem Bauteil vereint sind. Mit diesen sieben Segmenten kann man alle Zahlen zwischen 0 und 9 darstellen. 7-Segment-Anzeigen gibt es mit gemeinsamer Anode oder mit gemeinsamer Kathode. Elektrisch gesehen handelt es sich bei den Segmenten um ganz normale LEDs. Die einzelnen Segmente werden durch Buchstaben gekennzeichnet.

Die Decodierung BCD-zu-7-Segment-Code erfolgt über ein Schaltnetz im Baustein 7447, der auch die Treiberstufen für die LEDs integriert hat. Er schaltet die Segmente gegen Masse, benötigt also eine 7-Segment-Anzeige mit gemeinsamer Anode. Für jede LED ist noch ein Vorwiderstand erforderlich. Über den Anschluß LT werden alle Segmente eingeschaltet (Lamp Test). Die Anschlüsse RBI (Ripple Blanking Input) und RBO (Ripple Blanking Output) erlauben das Dunkelschalten führender Nullen. Dazu wird jeweils der RBI-Eingang eines Bausteins mit dem RBO-Ausgang des Decoders der vorhergehenden Stelle verbunden.

Die folgende Erweiterung demonstriert den Anschluß eines Zählers an den Decoder. Bei jeder Taktflanke wurd um 1 weitergezählt.



Takterzeugung, astabile Schaltungen

Normalerweise wird darauf geachtet, daß eine Digitalschaltung nicht ins Schwingen gerät, wenn man jedoch einen Takt braucht, beispielsweise für einen Zähler ist es genau umgekehrt. Astabile Schaltungen werden gezielt ins Schwingen versetzen. Das kann man recht einfach erreichen, wenn man den Ausgang eines Inverters mit seinem Eingang verbindet:

Angenommen der Inverter-Eingang ist 0, nach kurzer Zeit (Laufzeit des Inverters, wenige Nanosekunden) wird der Ausgang 1. Durch die Rückkopplung auf den Eingang wechselt der Ausgang wieder nach 0, usw. Am Ausgang entsteht ein Rechtecktakt, dessen Frequenz von der Gatterlaufzeit abhängt. Die Schaltung verhält sich also astabil.

Will man die Frequenz beeinflussen, könnte man zwischen Eingang und Ausgang weitere Inverter einfügen. Die Gesamtzahl der Inverter muß dabei natürlich ungerade sein. Dann vermindert sich der Takt wegen der nun höheren Laufzeit. Diese Lösung ist jedoch wenig praktikabel. Die Erhöhung der Laufzeit erfolgt vielmehr durch Einfügung eines RC-Gliedes in den Rückkopplungszweig des Inverters. Alternativ kann man auch jedes NAND- oder NOR-Gatter verwenden. Die Periodendauer der erzeugten Schwingung hängt von der Zeitkonstante des eingefügten RC-Gliedes und den Schaltschwellen (die vom eingesetzten Schaltkreissystem abhängen) ab. Dies gilt prinzipiell für alle astabilen Schaltungen, wenn auch mit unterschiedlichem Aufwand. Die Minimalvariante besteht nur aus einem sprziellen Gatter, einem sogenannten "Schmitt-Trigger", und einem frequenzbestimmenden RC-Glied. Ein Schmitt-Trigger zeichnet sich gegenüber einem normalen Gatter dadurch aus, daß ein Eingangssignal eine beliebig langsame Anstiegszeit haben darf. Bei normalen Logischaltungen wird ja ein möglichst rechteckförmiges Verhalten der Signale gefordert. Überschreitet beim Schmitt-Trigger das Eingangssignal eine bestimmte Schwelle, schaltet sein Ausgang schlagartig auf 1. Umgekehrt geschieht dasselbe, bei Unterschreiten einer Spannungsschwelle wechselt der Schmitt-Trigger-Ausgang wieder auf 0. Die beiden Schaltschwellen sind nicht identisch, so liegt beispielswesie die "Einschaltschwelle" beim CMOS-Baustein 4093 bei 2,6 V (5 V Versorgungsspannung), die "Ausschaltschwelle" jedoch bei 2 V. Der Baustein hat also eine Hysterese von 0,6 V. Mit einem Schmitt-Trigger und einem RC-Glied kann ein Taktgenerator aufgebaut werden.

Beim Einschalten ist der Kondensator entladen, der Gattereingang also auf 0-Pegel. Der Ausgang des NAND-Gatters hat demnach 1-Pegel. Über den Widerstand wird der Kondensator geladen. Sobald die Spannungsschwelle des Schmitt-Triggers überschritten wird, wechselt der Ausgang auf 0. Nun wird der Kondensator über den Widerstand entladen, bis die untere Triggerschwelle erreicht wird; der Ausgang wird wieder 1. Das wiederholt sich nun immer wieder. Da nach dem Einschalten der KOndensator von 0 aus geladen wird, danach aber die Kondensatorspannung nur zwischen den Triggerschwellen hin und her wechselt, dauert die erste Taktphase länger. Wegen der unterschiedlichen Triggerschwellen ist das Tastverhältnis auch nicht 1:1. Die Periodendauer des erzeugten Rechtecksignals beträgt etwa

t = F * R * C

mit F= 1,1 ... 2,0 - je nach eingesetzter IC-Technologie (bei TTL mit 7413 beträgt der Faktor beispielsweise 1,1, der Wert von R sollte 300 Ohm betragen).

Diese Grundschaltung lässt sich bis 1 MHz einsetzen und ist damit schon recht leistungsfähig. Allerdings ist die Frequenz auch stark von den Bauteiltoleranzen und der Betriebsspannung abhängig, weshalb man bei höheren Anforderungen an die Genauigkeit zum Quarzoszillator greift. Außerdem sollte man beachten:

Nachteilig ist manchmal das unterschiedliche Tastverhältnis. Lösen läßt sich das Problem z.B. durch Wahl der doppelten Oszillatorfrequenz und ein T-Flipflop zur Signalsymetrierung. Eine andere Möglichkeit ist die Wahl unterschiedlicher Widerstände für die Ladung und Entladung des Kondensators:

In der linken Schaltung werden zwei Widerstände für Ladung und Entladung verwendet, die Dioden entkoppeln die Widerstände. Bei der rechten Schaltung ist das Tastverhältnis in weiten Grenzen einstellbar.

Aber auch mit normalen Gattern lassen sich Oszillatoren realisieren. Die folgende Schaltung hat eine Periodendauer von etwa 2 * R * C. Dabei darf der Widerstand zwischen 300 und 1800 Ohm gewählt werden. Der Kondensator kann sich zwischen 10 Pikofarad und 10 Mikrofarad bewegen.

Besonders mit CMOS-Invertern oder -Gattern läßt sich folgende Variante realisieren. Dabei kann R2 bis zu mehreren hundert Kiloohm betragen. R1 sollte ungefähr 10 * R2 betragen. Bei R1 = 1 MOhm, R2 = 150 kOhm und C= 1 nF beträgt die Frequenz etwa 1,5 kHz.

Ein Quarzoszillator erfordert einen etwas höheren Aufwand, bietet aber sehr stabile Ausgangssequenzen. Auch hier genügt zur Schwingungserzeugung ein rückgekoppeltes Gatter, das zweite Gatter dient nur zur Entkopplung und zur Flankenversteilerung der Ausgangsimpulse. Das frequenzbestimmende Element ist ein frequenzstabiler Quarz. Das Ganze kann durch einen kleinen Trimmer noch leicht in der Frequenz beeinflußt (gezogen) werden. Solche Grundschaltungen liegen z. B. Frequenzzählern oder Uhren zugrunde.

Für TTL-Schaltkreise sieht die Grundschaltung etwas anders aus. Hier ist der Gegenkopplungswiderstand relativ klein, so daß der Baustein eigentlich schon im verbotenen Bereich zwischen 0 und 1 arbeitet - und dadurch sehr leicht schwingt. Die obere Grenze für die Quarzfrequenz liegt etwa bei 16 MHz. Bei Quarten mit niedriger Freqenz kann es vorkommen, daß der Oszillator auf einer Oberwelle schwingt. Dann hilft ein Dämpfungswiderstand von 5 ... 10 MOhm parallel zum Quarz.

CMOS-Oszillator-Baustein CD 4060

Es handelt sich um einen Oszillator mit 14 nachgeschalteten binären Teilerstufen, von denen 10 Ausgänge herausgeführt sind (Q1, Q2, Q3 und Q11 fehlen). Die Ausgänge liefern Rechtecksignale, welche die Oszillatorfrequenz fo jeweils um den Faktor 2n herunterteilen. Somit liefert Qn ein Rechtecksignal, das der um 2n geteilten Oszillatorfrequenz entspricht. Beispielsweise ist an Q4 die durch 24 = 16 geteilte Oszillatorfrequenz verfügbar und an Q12 fo/4096. Der Baustein bietet den Vorteil, recht lange Periodendauern erzeugen zu können. Die Taktfrequenz selbst steht nicht zur Verfügung, weil die Oszillatoranschlüsse nicht belastet werden dürfen.

Für den Oszillator gelten dieselben Angaben wie sie schon oben für CMOS-Oszillatoren beschrieben wurden. Der Oszillator kann für weniger kritische Anwendungen mit einem RC-Glied beschaltet werden. Die frequenzbestimmenden Bauteile R1 und C1 werden dabei an die Pins 9 und 10 angeschlossen, während R2 die Rückkopplung auf das interne CMOS-Gatter herstellt. In dieser Betriebsart sind Frequenzen bis zu einigen 100 kHz möglich. Die Periodendauer berechnet sich ungefähr zu

t = 2,2 * R1 * C1

Für R2 sollte man den zehnfachen Wert von R1 wählen.

Bei der Quarzbeschaltung sind Oszillatorfrequenzen bis über 10 MHz möglich. Hierbei bleibt der Pin 9 frei und von den Anschlüssen 10 und 11 liegt jeweils eine kleine Lastkapazität gegen Masse, um das Anschwingverhalten zu verbessern. Diese Kapazitäten sollen zusammen etwa so groß sein wie die Eigenkapazität des Quarzes. Wenn man für beide jeweils 10 pF einsetzt, sollte es unter normalen Bedingungen keinerlei Probleme geben. Gegebenenfalls muß parallel zum Quarz noch ein hochohmiger Widerstand (10...20 MOhm) liegen (Bedämpfung von Oberwellen).

Monostabile Kippstufe (Monoflop)

Bei einem Monoflop führt ein Pegelwechsel oder eine Flanke am Eingang ("triggern") zu einem Wechsel des Ausgangspegels (die Schaltung "kippt"). Nach Ablauf einer gewissen Zeitspanne wechselt der Ausgang wieder in den ursprünglichen Zustand und verbleibt so bis zum nächsten Triggern. Die Dauer der metastabilen Zeit wird in der Regel durch ein RC-Glied bestimmt. Die folgende Schaltung zeigt die Realisierung mit TTL-NOR-Gattern. Der Kippvorgang wird durch einen 0-1-Wechsel am Eingang von G1 ausgelöst. Im Ruhezustand liegt der Ausgang von G1 auf 1-Pegel. Der Eingangsstrom vo G2 erzeugt am Widerstand einen Spannungsabfall, der einem 1-Pegel entspricht. Der Ausgang von G2 ist somit 0 und damit auch der zweite Eingang von G1. Der Kondensator ist entladen.

Ein Sprung von 0 auf 1 am Eingang E löst den Kippvorgang aus. Der Ausgang von G1 springt auf 0, der Ladestrom des Kondensators zieht den Eingang von G2 auf 0 und damit den Ausgang von G2 auf 1. Dieser Zustand bleibt, bis der Ladestrom soweit abklingt, daß der Spannungsabfall am Widerstand wieder einen 1-Pegel erzeugt. Die Rückführung sorgt dafür, daß der Ladevorgang auch fortgesetzt wird, wenn der Eingang E schon wieder auf 0-Potential liegt. Dieser Eingangsimpuls muß auf jeden Fall kürzer sein, als die Kippzeit des Monoflops. Letztere beträgt etwa R * C.

Der Wert des Widerstands sollte zwischen 4300 und 4700 Ohm liegen. Die Erholzeit der Schaltung entspricht der meetastabilen Zeit des Monoflops.

Serienmäßige TTL-Monoflops arbeiten etwas komplizierter, hier liegt das RC-Glied an Komparatoren, welche ein RS-Flipflop setzen bzw. wieder rücksetzen. Der Monoflop-Baustein 74121 besitzt zudem noch einen Schmitt-Trigger-Eingang, der die Auslösung des Monoflops auch mit langsam ansteigenden Signalen erlaubt. Für das RC-Glied stellt er noch einen internen Widerstand von 2 kOhm bereit, so daß oft nur noch der Kondensator benötigt wird.

Eingangs-Interface-Schaltungen

Um TTL- oder CMOS-Schaltungen mit "dem Rest der Welt" zu verbinden, sind oft Anpassungen notwendig. So kann es sein, daß Signalquellen mit höheren Signalamplitunden angeschlossen werden sollen, aber auch solche mit zu kleiner Amplitude. Für letztere wird ein Verstärker nachgeschaltet, dessen Ausgang gegebenenfalls wieder auf die Gatter-Spannungen begrenzt werden muß. Bei zu hohen Eingangsspannungen wird diese durch eine sogenannte "Klemmschaltung" begrenzt. Dies kann beispielsweise durch einen strombegenzenden Widerstand und ein Diodenpaar geschehen. Die Größe des Widerstandes richtet sich nach der Höhe der Eingangsspannung, der Strom durch die Dioden sollte 20 mA nicht überschreiten.

Die Eingangsspannung wird auf den Bereich -0,6 V ... Ucc + 0,6 V begrenzt (Bei 0,6 V Dioden-Druchlaßspannung). Alternativ kann statt der beiden Dioden eine begrenzende Z-Diode 4,7 V eingesetzt werden (z.B. ZPD 4,7):

Falls eine derartige Klemmung nicht möglich ist, kann durch Verwendung eines Transistors der Spannungspegel neu festgelegt werden. Diese Schaltung hat gleichzeitig den Vorteil, daß geringe Eingangsströme genügend verstärkt werden können. In der folgenden Schaltung für ein positives Eingangssignal ist zu berücksichtigen, daß der Transistor das Eingangssignal invertiert.

Bei einem negagativen Eingangssignal kann man den Transistor in Basisschaltung betreiben, hier erfolgt keine Invertierung des Eingangssignals. Der Eingangswiderstand ist so zu bemessen, das ein Strom von ca. 4 mA bei durchgeschaltetem Transistor in den Gattereingang fließen kann.

Ausgangs-Interface-Schaltungen

Am Ausgang eines TTL- oder CMOS-Schaltkreisens kann man gerade mal eine LED (über einen Vorwidertand) anschließen. Will man Verbraucher mit höherer Stromaufnahme oder höherem Spannungsbedarf (Relais, Lampen, etc.) anschließen, wird zweckmäßigerweise ein Verstärkertransistor eingesetzt. Dabei ist auch wichtig, daß die relativ hohen Verbraucherströme die Logikschaltungen nicht stören dürfen. Deshalb ist es oft günstig für Logik und Verbraucher getrennte Stromversorgungen vorzusehen, deren Masseleitungen nur an einem einzigen Punkt verbunden werden. Die Angabe der Transistortypen ist nicht bindend, statt des Kleinsignal-NPN-Transistors BC 108 lassen sich auch ähnliche Typen einsetzen, z.B. BC 107, BC 547, usw. Ebenso läßt sich der PNP-Transistor BC 177 durch andere Typen, z.B. BC 557, ersetzen.

Wird ein Standard-TTL-Ausgang mit einem Transistor verbunden ist es nicht nötig, den für die Logik nötigen 1-Pegel einzuhalten. Die Basis des Transistors kann direkt mit der Logik verbunden werden (Schaltung A). Bei induktiven Lasten (z.B. Relais) ist eine Freilaufdiode vorzusehen, die den Transistor vor Induktionsspitzen beim Abschalten der Last schützt (punktierte Leitungen). Für den Transistor ist ein Basisstrom von ca. 9 mA gewährleistet. Ein zusätzlicher Widerstand zwischen Gatterausgang und Ucc bewirkt für den Transistor einen höheren Basisstrom als der TTL-Ausgang liefern kann. Damit sind auch größere Lasten schaltbar (Schaltung B). Dieser Widerstand ist auch bei Open-Collector-Gatterausgängen nötig. Der Minimalwert für den Widerstand ist 330 Ohm (16 mA Low-Strom aus dem Gatter).

Braucht man höhere Lastströme, kann man eine Darlingtonschaltung aus zwei Transistoren verwenden. Anstelle der beiden Transistoren kann auch ein Darlingtontyp verwendet werden, z.B. BC 517 (Schaltung C). Ist die Versorgungsspannung des Verbrauchers negativ, verwendet man zweckmäßigerweise einen PNP-Transistor. Der 2,2-kOhm-Widerstand hält den Transistor gesperrt, wenn der Logikpegel = 1 ist (Schaltung D).

Beispiel: Festplatten-Lauflicht

Normalerweise blinkt nur eine LED bei jedem Plattenzugriff. Will man dieses langweilige Blinkern etwas aufpeppen, eignet sich dieses Lauflicht. Verwendet wird ein CMOS-Dezimalzähler mit Dual-zu-Dezimal-Decoder, d.h bei jedem Takt wird der nächste der Ausgänge 0 ... 9 aktiviert. Bei kontinuierlichem Takt ergibt sich also ein Lauflicht-Effekt. Der Takt wird aus dem Festplattenzugriff abgeleitet, indem die ursprüngliche Festplatten-LED angezapft wird (die interne Schaltung des Boards ist gepunktet gezeichnet). Je nach Auslastung der Festplatte ist das Lauflicht dann mehr oder weniger schnell. Die Schaltung wird mit 5 V versorgt und kann daher z.B. aus einem freien Plattenversorgungskabel oder aus dem Gameport des PCs gespeist werden. Der Eingang der Schaltung wird an der Kathode der Festplatten-LED angeschlossen. Sollte der geschaltete Pol der Festplatten-LED die Anode sein, muß der PNP-Transistir durch einen NPN-Typ ausgetauscht werden (z.B. BC548C), Kollektor und Emitter sind dann gegenüber der Schaltung vertauscht einzulöten!

Anstelle der bipolaren Transistoren lassen sich auch Feldeffekttransistoren, genauer MOS-Leistungstransistoren, einsetzen. Da hier keine Strom- sondern eine Spannungssteuerung stattfindet lassen sich direkt recht hohe Lasten schalten. Nachteilig ist, daß ein bipolarer Transistor bei ca 0,6 V Basisspannung schaltet, ein FET aber erst bei einigen Volt. Bei der Ansteuerung durch ein CMOS-Gatter (Schaltung A) ist das kein Problem, insbesondere wenn die CMOS-Schaltung mit höheren Spannungen betrieben wird. Bei der Ansteuerung des MOS-FET durch einen TTL-Ausgang ist wieder ein Pull-Up-Widerstand nötig (Schaltung B). Die letzte Schaltung C zeigt, daß durch Einsatz eines P-Kanal-MOS-FET der Verbraucher auch gegen + Ucc geschaltet werden kann.

Als FET kommen N-MOS-Typen wie BD522 (1,5 A), VN46AF, VN66AF, VN88AF (2 A) oder P-MOS-Typen wie BD512 in Frage, aber auch Leistungs-FETs wie BUZ71.

Sind viele Ausgänge anzusteuern, benötigt eine Schaltung mit diskreten Transistoren recht viel Platz und der Aufbau kostet viel Zeit. Auch die Möglichkeit von Fehlern (kalte Lötstellen usw.) erhöt sich. Ebenso steigen die Kosten für Platine, Bauteile und Zusammenbau. Wenn die Ausgangsstöme moderat sind (max. 500 mA), bietet der integrierte Treiberbaustein ULN2803 acht komplette bipolare Treiber mit Darlington-Transistoren. Sogar die Freilaufdiode für den Anschluß von Kleinrelais ist integriert. Die Eingänge der acht Treiberstufen sind TTL-kompatibel.