TTL-Ampel - Funktionsweise

Die Ampel hat vier Phasen: rot, rot-gelb, grün, gelb. Wir müssen also vier Zustände unterscheiden, d.h. unser Zustandsautomat braucht mindestens zwei Bit "Gedächtnis". Aus den beiden D-Flip-Flops können wir einen Zähler aufbauen, der binär betrachtet von 00 bis 11 zählt. Dann kann mittels der vier NAND-Gatter eine logische Schaltung gebaut werden, die aus diesen vier Bitmustern die passenden Signale zur Ansteuerung der drei LEDs ableitet.

Die D-Flip-Flops des 74LS74 werden durch positive Flanken getriggert. Das bedeutet, daß beim Auftreten einer steigenden Flanke (Spannungsverlauf) am CLK-Eingang der am D-Eingang anliegende Pegel in das Flip-Flop übernommen und am Q-Ausgang abgebildet wird. Der Ausgang Q hat dabei den invertierten Pegel von Q. Für unsere Zwecke wird der Ausgang Q auf den Eingang D zurückgekoppelt, sodaß sich der Zustand des Flip-Flops bei jeder steigenden Taktflanke umkehrt. Das zweite Flip-Flop wird genauso beschaltet, wobei der Takt-Eingang mit dem Ausgang Q des ersten Flip-Flops verbunden wird.

Schaltbild 01

Die Eingänge PRE (preset) und CLR (clear) können unbeschaltet bleiben, weil bei LS-TTL-Bausteinen unbeschaltete Eingänge einen definierten High-Pegel haben. Das gilt für Bausteine der 74HC-Familie (CMOS) beispielsweise nicht. Wer sich besser damit fühlt darf die Eingänge natürlich auch auf VCC legen. Wenn man nun die Ausgänge Q1 (linkes Flip-Flop) und Q2 (rechtes Flip-Flop) betrachtet, erhält man die folgende Sequenz:

Takt 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Q1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
Q2 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0

Die gelben Felder zeigen die steigenden Flanken des jeweiligen Ausgangs an, die fett gedruckten Ziffern entsprechen den Zuständen die für die Ampel genutzt werden können (die Taktquelle selbst soll nicht weiter belastet werden). Wie man leicht erkennt halbiert sich der Takt mit jedem Flip-Flop: der ursprüngliche Takt hat auf die gezeigte Länge 8 steigende Flanken, an Q1 lassen sich noch 4 Flanken erkennen, während Q2 nur noch zwei Flanken aufweist. Wenn wir Q2 als erste und Q1 als zweite Binärziffer nehmen erhalten wir die Bit-Sequenzen 11, 10, 01, 00 die als Dezimalzahl interpretiert 3, 2, 1, 0 ergeben. Wir haben also einen Binärzähler, der rückwärts zählt. Das Phänomen des Rückwärtszählens kommt durch das Weiterschalten bei steigenden Flanken. Damit wandert bei der ersten 1 diese gleich bis zum letzten Flip-Flop durch, während die fallenden Flanken erstmal zu keiner Reaktion führen. Die gleiche Schaltung mit einem D-Flip-Flop, das bei fallenden Flanken schalten würde, hätte einen Vorwärtszähler zur Folge.

Als nächstes müssen aus diesen Zuständen die Ampel-Phasen gebildet werden. Dazu muß gesagt werden, daß wir eine negative Logik brauchen, d.h. bei uns wird eine LED leuchten wenn der entsprechende Ausgang auf 0 steht. Diese Notwendigkeit beruht auf der Tatsache, daß TTL-Gatter bessere Stromsenken als Stromquellen sind. Anders ausgedrückt: sie können kräftig nach Masse ziehen, sind aber miserable Treiber (brechen also bei geringem Strom schon in ihrer Spannung ein). Zwar funktioniert es auch meistens, aus einem Ausgang der auf High steht eine LED zu versorgen, jedoch betreibt man damit die Bauteile außerhalb der spezifizierten Bereiche. Um diese negative Logik zu realisieren schalten wir die LEDs mit Vorwiderstand an der Anode nach VCC und verbinden die Kathode mit dem jeweiligen TTL-Ausgang. Damit fließt dann Strom, wenn dieser auf Masse liegt, die LED leuchtet.

Doch nun zur booleschen Algebra. Wir haben zunächst folgende Tabelle:

Q2Q1RotGelbGrün
11X
10XX
01X
00X

Wie man sieht könnte man die gelbe LED direkt aus Q1 versorgen. Das wollen wir jedoch nicht tun, denn dieser Ausgang soll noch den Takt für das zweite Flip-Flop bilden, und ggf. ein paar der NAND-Gatter aus dem 74LS00 steuern. Wie wir sehen werden reichen die vier NAND-Gatter aus, wenn wir uns zusätzlich die Q-Ausgänge der Flip-Flops zu Nutze machen, die ja wie bereits gesagt immer den invertierten Wert der Q-Ausgänge haben.

Zunächst einmal stellen wir die Formeln ganz "geradeaus" auf, wie man es auf einen Blick sehen kann. Dabei werden die Zeichen der booleschen Algebra verwendet: ∧ stellt die AND-Verknüpfung dar, ∨ die OR-Verknüpfung und ¬ das NOT. Da wir NAND-Gatter verwenden werden wir OR nicht brauchen (verwirrt hier erstmal nur) und uns auf NOT und AND beschränken.

Rot = Q2
Gelb = ¬ Q1
Grün = Q1 ∧ ¬ Q2

Jetzt denken wir noch einmal an die negative Logik, die LEDs leuchten wenn der Ausdruck 0 ergibt. Dann gilt:

Rot = ¬ Q2
Gelb = Q1
Grün = ¬ (Q1 ∧ ¬ Q2)

Wir wollten allerdings die Ausgänge der Flip-Flops nicht direkt belasten, d.h. die Formel für Gelb muß noch einmal umgeschrieben werden. Weiterhin ergibt sich die Einsparmöglichkeit für ein NOT in der Formel für Grün, wenn auch hier der invertierte Ausgang des Flip-Flops genutzt wird:

Rot = ¬ Q2
Gelb = ¬ Q1
Grün = ¬ (Q1 ∧ Q2)

Man kann ein NOT darstellen, indem man entweder beide Eingänge des NAND auf den gleichen Wert setzt, oder einen Eingang fest auf High legt. Daraus ergibt sich folgende Realisierung unter Verwendung von NAND-Gattern:

Rot = NAND(Q2, 1)
Gelb = NAND(Q1, 1)
Grün = NAND(Q1, Q2)

Wenn jetzt der Taktgeber, die Flip-Flops und die Dekodier-Logik zusammengesetzt werden, entsteht folgender Schaltplan:

Schaltbild 02