Teil IV: Schaltwerke; Sequentielle Schaltungen; Lineare Schaltkreise
Teil IV: Schaltwerke; Sequentielle Schaltungen; Lineare Schaltkreise
Teil IV: Schaltwerke; Sequentielle Schaltungen; Lineare Schaltkreise
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Teil</strong> <strong>IV</strong><br />
<strong>Schaltwerke</strong><br />
1
<strong>Teil</strong> <strong>IV</strong>.1<br />
Flip–Flops<br />
2
Bistabile Kippstufe<br />
• Ziel: Speichere Ausgabe einer Schaltung.<br />
• Ansatz: Leite Ausgabe wieder als Eingabe in die Schaltung.<br />
x<br />
t<br />
&<br />
Q<br />
Q = x + P<br />
t + t<br />
t<br />
t<br />
y<br />
t<br />
&<br />
P<br />
P = y + Q<br />
t + t<br />
t<br />
t<br />
• Ergebnis: Sei ∆t die Laufzeit des Signals:<br />
• Wenn das P –Gatter zuerst schaltet:<br />
Q t+∆t = x t + P t+∆t , P t+∆t = y t + Q t<br />
• Wenn das Q–Gatter zuerst schaltet:<br />
Q t+∆t = x t + P t , P t+∆t = y t + Q t+∆t<br />
3
Verhalten in mehreren Stufen<br />
• P -Gatter schaltet zuerst:<br />
x t y t P t+∆t = y t Q t Q t+∆t = x t P t+∆t P t+2∆t = y t Q t+∆t Q t+2∆t = x t P t+2∆t<br />
0 0 1 1 1 1<br />
0 1 Q t 1 0 1<br />
1 0 1 0 1 0<br />
1 1 Q t Q t Q t Q t<br />
• Q-Gatter schaltet zuerst:<br />
x t y t Q t+∆t = x t P t P t+∆t = y t Q t+∆t Q t+2∆t = x t P t+∆t P t+2∆t = y t Q t+2∆t<br />
0 0 1 1 1 1<br />
0 1 1 0 1 0<br />
1 0 P t 1 0 1<br />
1 1 P t P t P t P t<br />
• Verhalten:<br />
• Ausgabe schwingt nach 2 Takten ein.<br />
• Eingabe (0, 0) führt immer zu Ausgabe P = Q = 1<br />
• Eingaben (0, 1) und (1, 0) führen zu P = Q<br />
(0, 1) setzt Q (set), (1, 0) löscht Q (reset).<br />
• Für Eingabe (1, 1) gilt nur dann P t+∆ = Q t+∆ , wenn P t = Q t ,<br />
daher muß Eingabe (0, 0) ausgeschlossen werden.<br />
In diesem Fall gilt (1, 1) hält Q (hold).<br />
4
RS–Flip–Flop<br />
• Takt: C wird periodisch zwischen 0 und 1 geschaltet, bei 1 Aktion,<br />
bei 0 keine Aktion. Zwei Schritte (C t = 1, C t+∆t = 0) entsprechen<br />
einem Takt.<br />
• Set: S setzt den Ausgang Q auf 1.<br />
• Reset: R setzt den Ausgang Q auf 0.<br />
• Schaltung: mittels vorgeschaltetem NAND Gatter:<br />
S<br />
&<br />
&<br />
Q<br />
S<br />
Q<br />
C<br />
C<br />
&<br />
&<br />
Q<br />
R<br />
R<br />
Q<br />
5
RS–Flip–Flop (cont.)<br />
• Es gilt:<br />
x = SC<br />
y = RC<br />
• Verhalten:<br />
Q t+2∆t = x t + P t+∆t<br />
= x t + y t Q t<br />
= SC + RCQ t<br />
= SC + ( R + C ) Q t<br />
= SC + ( )<br />
RQ t + CQ t<br />
= C · (S + RQ t ) + CQ t .<br />
• Für C = 1: Q t+2∆t = Q n+1 = S + (R · Q n ), S · R = 0<br />
• Für C = 0: Q t+2∆t = Q n+1 = Q n 6
Wahrheitstabelle für RS–Flip–Flop<br />
R S Q n+1 Q n+1 Aktion<br />
0 0 Q n Q n lesen<br />
0 1 1 0 setzen<br />
1 0 0 1 löschen<br />
1 1 1 1 nicht erlaubt<br />
7
JK–Flip–Flop<br />
• Problem: Verhindere, dass S · R = S = R = 1<br />
• Lösung: Zwei neue Eingänge J, K und Rückkopplung von Ausgang<br />
Q.<br />
• Schaltung:<br />
R n+1 = K · Q n<br />
S n+1 = J · Q n<br />
Q n+1 = S n+1 + (R n+1 · Q n )<br />
= J · Q n + (K · Q n · Q n )<br />
= J · Q n + ((K + Q n ) · Q n )<br />
= J · Q n + K · Q n<br />
8
Wahrheitstabelle für JK–Flip–Flop<br />
J K Q n Q n+1 S R Aktion<br />
0 0 0 0 0 − lesen<br />
0 0 1 1 − 0 lesen<br />
0 1 0 0 0 − löschen<br />
0 1 1 0 0 1 löschen<br />
1 0 0 1 1 0 setzen<br />
1 0 1 1 − 0 setzen<br />
1 1 0 1 1 0 invertieren<br />
1 1 1 0 0 1 invertieren<br />
R = S = 1 ist erfolgreich verhindert.<br />
9
Spezialfall D–Flip–Flop<br />
• Delay–Flip–Flop: Wie RS–Flip–Flop mit S = D, R = D; dadurch<br />
wird die verbotene Eingabe (1, 1) ausgeschlossen.<br />
• Wahrheitstabelle:<br />
D Q n+1 Aktion<br />
0 0 Speichere die Eingabe 0<br />
1 1 Speichere die Eingabe 1<br />
10
<strong>Teil</strong> <strong>IV</strong>.2<br />
<strong>Sequentielle</strong> <strong>Schaltungen</strong><br />
11
Beispiel: Register<br />
• Parallele Eingänge: x 0 , x 1 , x 2 , x 3<br />
• Serieller Eingang: x s<br />
• Parallele Ausgänge: y 0 , y 1 , y 2 , y 3<br />
• Takt T<br />
• Schalter E: serielles Lesen (= 0), paralleles Lesen (= 1)<br />
• Schalter A: durchschalten der Ausgänge (= 1), oder konstante Belegung mit<br />
1 (= 0)<br />
12
<strong>Sequentielle</strong> Maschine<br />
Mealy–Automat M = (E, S, Z, δ, γ, s 0 )<br />
• Eingabealphabet: E ⊆ B n e<br />
• Ausgabealphabet: Z ⊆ B n a<br />
• Menge von Zuständen: S ⊆ B n z<br />
• Startzustand: s 0 ∈ S<br />
• Übergangsfunktion: δ : E × S → S<br />
• Ausgabefunktion γ : E × S → Z<br />
13
Beispiel: JK–Flip–Flop<br />
• Wahrheitstabelle:<br />
S = Q n E = J, K δ(s, e) = Q n+1 γ(s, e) = Q n<br />
0 00 0 0<br />
0 01 0 0<br />
0 10 1 0<br />
0 11 1 0<br />
1 00 1 1<br />
1 01 0 1<br />
1 10 1 1<br />
1 11 0 1<br />
• Automat:<br />
14
Beispiel: 2-Bit Register (I)<br />
• Schaltung:<br />
15
Beispiel: 2-Bit Register (II)<br />
• Automat:<br />
16
Beispiel: 1–Bit Addition<br />
Ziel: Serielle Addition von zwei (beliebig langen) Bitströmen<br />
• Eingabealphabet: E = {00, 01, 10, 11}<br />
• Ausgabealphabet: Summe Z = {0, 1}<br />
• Zustände: Übertrag S = {0, 1}<br />
• Startzustand: s 0 = 0 (kein Übertrag)<br />
• Übergangsfunktion: siehe Übertrag in Volladdierer<br />
• Ausgabefunktion: siehe Summe in Volladdierer<br />
17
Beispiel: 1–Bit Addition (cont.)<br />
• Automat<br />
• Wahrheitstabelle<br />
c xy δ(c, x, y) γ(c, x, y)<br />
0 00 0 0<br />
0 01 0 1<br />
0 10 0 1<br />
0 11 1 0<br />
1 00 0 1<br />
1 01 1 0<br />
1 10 1 0<br />
1 11 1 1<br />
18
Realisierung mit JK–Flip–Flop<br />
• Übertrag: δ : E × S → S<br />
δ(c, x, y) = cxy + cxy + cxy + cxy<br />
= cxy + cx + cy<br />
= cxy + c(x + y)<br />
• Für JK–Flip–Flop gilt:<br />
Q n+1 = J · Q n + K · Q n<br />
Substitution: Q n+1 = δ(c, x, y) , Q n = c<br />
J = xy , K = x + y<br />
• Summe: γ(c, x, y) = c ⊕ x ⊕ y<br />
• Schaltung:<br />
19
Beispiel: Modulo 6 Zähler<br />
• Eingabealphabet: E = {0, 1}<br />
• Ausgabealphabet: Summe Z = {000, 001, 010, 011, 100, 101}<br />
• Zustände: S = Z<br />
• Startzustand: s 0 = 000<br />
• Übergangsfunktion:<br />
δ(S, 1) = (S + 1) mod 6<br />
δ(S, 0) = (S − 1) mod 6<br />
• Ausgabefunktion:<br />
γ(S, E) = S<br />
20
Automat für Modulo 6 Zähler<br />
• Automat:<br />
• Übergangstabelle:<br />
e q 0 q 1 q 2 δ 0 δ 1 δ 2<br />
0 0 0 0 0 0 1<br />
0 0 0 1 0 1 0<br />
0 0 1 0 0 1 1<br />
0 0 1 1 1 0 0<br />
0 1 0 0 1 0 1<br />
0 1 0 1 0 0 0<br />
1 0 0 0 1 0 1<br />
1 0 0 1 0 0 0<br />
1 0 1 0 0 0 1<br />
1 0 1 1 0 1 0<br />
1 1 0 0 0 1 1<br />
1 1 0 1 1 0 0<br />
21
Realisierung mit RS–Flip–Flops<br />
• Wahrheitstabelle für RS–Flip-Flops:<br />
Q Q ′ R S<br />
0 0 ∗ 0<br />
0 1 0 1<br />
1 0 1 0<br />
1 1 0 ∗<br />
• Eingesetzt in Übergangstabelle:<br />
e q 0 q 1 q 2 q<br />
0 ′ q<br />
1 ′ q<br />
2 ′ R 0 S 0 R 1 S 1 R 2 S 2<br />
0 0 0 0 0 0 1 ∗ 0 ∗ 0 0 1<br />
0 0 0 1 0 1 0 ∗ 0 0 1 1 0<br />
0 0 1 0 0 1 1 ∗ 0 0 ∗ 0 1<br />
0 0 1 1 1 0 0 0 1 1 0 1 0<br />
0 1 0 0 1 0 1 0 ∗ ∗ 0 0 1<br />
0 1 0 1 0 0 0 1 0 ∗ 0 1 0<br />
1 0 0 0 1 0 1 0 1 ∗ 0 0 1<br />
1 0 0 1 0 0 0 ∗ 0 ∗ 0 1 0<br />
1 0 1 0 0 0 1 ∗ 0 1 0 0 1<br />
1 0 1 1 0 1 0 ∗ 0 0 ∗ 1 0<br />
1 1 0 0 0 1 1 1 0 0 1 0 1<br />
1 1 0 1 1 0 0 0 ∗ ∗ 0 1 0<br />
22
Realisierung mit RS–Flip–Flops (cont.)<br />
• Ansteuergleichungen: mittels Karnaugh-Verfahren unter Ausnutzung<br />
der don’t cares (*).<br />
R 0 = eq 0 q 2 + eq 0 q 2 = q 0 · (e ⊕ q 2 )<br />
S 0 = e q 0 q 1 q 2 + eq 0 q 1 q 2<br />
R 1 = eq 1 q 2 + eq 1 q 2 = q 1 · (e ⊕ q 2 )<br />
S 1 = e q 0 q 1 q 2 + eq 0 q 2<br />
R 2 = q 2<br />
S 2 = q 2<br />
23
Realisierung mit RS–Flip–Flops (cont.)<br />
• Schaltung:<br />
q 0 q 1 q 2<br />
S S S<br />
FF 0 FF 1 FF 2<br />
T T T<br />
R R R<br />
e<br />
Takt<br />
1<br />
&<br />
&<br />
&<br />
&<br />
<br />
<br />
<br />
&<br />
&<br />
24
<strong>Teil</strong> <strong>IV</strong>.3<br />
<strong>Lineare</strong> <strong>Schaltkreise</strong><br />
25
Bausteine<br />
a) Addierer<br />
b) Skalarmultiplizierer<br />
c) Delay<br />
26
Anwendung: Codierung<br />
• Gegeben:<br />
Polynome a(x) = a 0 + a 1 x + . . . + a k−1 x k−1<br />
Ein festes Codierungspolynom h(x) = h 0 + h 1 x + . . . h n−k x n−k<br />
• Berechne:<br />
Codierung: a(x) ∗ h(x) = f(x) = f 0 + f 1 x + . . . + f n−1 x n−1<br />
Decodierung: f(x)/h(x) = a(x)<br />
• Schaltung für Multiplikation:<br />
27
Wie funktionierts?<br />
Polynomkoeffizienten werden mit dem höchsten a k−1 beginnend der<br />
Reihe nach eingegeben. Die Delays sind mit Nullen vorbelegt.<br />
• Schritt 1:<br />
O = f n−1 = a k−1 · h n−k<br />
d 0 = a k−1<br />
• Schritt 2:<br />
O = f n−2 = a k−2 · h n−k + d 1 · h n−k−1 = a k−2 · h n−k + a k−1 · h n−k−1<br />
d 0 = a k−2 , d 1 = a k−1<br />
• Schritt k:<br />
O = f n−k = a 0 · h n−k + a 1 · h n−k−1 + . . . a k−1 · h n−2k+1<br />
d 0 = a 0 , . . . , d n−k−1 = a k−1<br />
• Schritt k + 1: a i = 0 für i ≥ k<br />
O = f n−k−1 = a 0 · h n−k−1 + . . . a k−2 · h n−2k+1<br />
d 0 = 0, . . . , d n−k−1 = a k−2<br />
• Schritt n − k:<br />
O = f 0 = a 0 · h 0<br />
28
Beispiel für E = {0, 1}<br />
• Codierungspolynom:<br />
h(x) = 1 ⊕ x 3 ⊕ x 4 ⊕ x 5<br />
• Wg. E = B:<br />
Skalarmultiplikation entfällt, Addition: modulo 2 (xor)<br />
• Schaltung:<br />
29
Spiegelschaltung für Division<br />
• Schritt 1 bis n − k − 1:<br />
O = 0<br />
• Schritt n − k:<br />
O = f n−1 · h −1<br />
n−k = a k−1<br />
• Schritt n − k + 1:<br />
O = (f n−2 − f n−1 h n−k−1 h −1 )h −1<br />
n−k = a k−2.<br />
30
Beispiel für E = {0, 1}<br />
• Codierungsplynom:<br />
h(x) = 1 ⊕ x ⊕ x 4<br />
• Wg. E = B gilt:<br />
h i = −h i , h n−k = 1<br />
• Schaltung:<br />
31