Die Komponenten des von Neumann Rechners: elektrotechnische Grundlagen

Der Abschnitt behandelt die fĂŒr den von Neumann-Rechner, insbesondere den Prozessor, relevanten elektrotechnischen Grundlagen: EinfĂŒhrung in die Digitaltechnik, Transistoren, Schaltnetze und Schaltwerke.
Noch keine Stimmen abgegeben
Noch keine Kommentare

Einordnung des Artikels

Elektrotechnische Grundlagen

Aufgaben

Die folgenden Aufgaben sollen einen Eindruck vermitteln, welche Themen in dem theoretisch anmutenden Kapitel besprochen werden und welche Probleme sich damit lösen lassen.

1. Erkennen von Übertragungsfehlern:

Eine dreistellige Dualzahl soll ĂŒbertragen werden; zusĂ€tzlich wird das fĂŒhrende Bit als Kontroll-Bit eingesetzt und immer so gesetzt, dass insgesamt eine gerade Anzahl von Einsen ĂŒbertragen wird. Nach der Übertragung soll festgestellt werden, ob das Kontroll-Bit richtig gesetzt ist (1 = true, 0 = false).

  • Geben Sie die logische Tabelle dieser Funktion an!
  • Entwerfen Sie die zugehörige Schaltung!

2. Auslösen von Warnsignalen:

4 TemperaturmessfĂŒhler sollen nach bestimmten Regeln einen Alarm auslösen können; Dazu wird fĂŒr jeden FĂŒhler ein Schwellenwert festgelegt. Über zwei Steuerleitungen (s1 s0) können die Zahlen 0, 1, 2, 3 als Dualzahl ĂŒbertragen werden. Das durch die Steuerleitungen ĂŒbertragene Signal legt die Regeln fest, wann ein Alarm ausgelöst wird:

  • Zeigen die Steuerleitungen 00, wird kein Alarm ausgelöst (egal, was die TemperaturfĂŒhler anzeigen).
  • Zeigen die Steuerleitungen 1, 2 beziehungsweise 3 (als Dualzahl) wird Alarm ausgelöst, wenn 1, 2 beziehungsweise 3 TemperaturfĂŒhler den Schwellenwert ĂŒberschreiten.

Geben Sie hierfĂŒr die logische Tabelle und die Realisierung als Schaltung an!

3. Multiplikation ganzer Zahlen:

Zwei vierstellige Dualzahlen sollen multipliziert werden.

Entwerfen Sie eine Schaltung, die dies ausfĂŒhren kann!

4. Taschenrechner fĂŒr ganze Zahlen:

Dem Taschenrechner sollen zwei vierstellige Dualzahlen eingegeben werden können. Durch Steuerleitungen soll eine der Rechenoperationen

  • Addition
  • Subtraktion
  • Multiplikation
  • Division mit Rest

ausgefĂŒhrt werden.

Entwerfen Sie eine Schaltung, die dies ausfĂŒhren kann!

Digitaltechnik, Schaltnetze und Schaltwerke

Untersucht man Schaltungen mit kontinuierlichen ZustĂ€nden fĂŒr Spannungen und Ströme, spricht man von Analogtechnik. Als Beispiel diene ein Ohmscher Widerstand R, an den eine Spannung U angelegt wird, die in einem Intervall, etwa von 0 V bis 5 V, variieren kann. Der Strom durch den Widerstand I = U/R variiert dann ebenfalls in einem Intervall. Beide GrĂ¶ĂŸen U und I können kontinuierliche Werte annehmen.

Der Begriff Digitaltechnik soll von Analogtechnik abgrenzen und bedeutet, dass nur zwei diskrete ZustĂ€nde betrachtet werden, die als H (high) und L (low) oder 1 und 0 bezeichnet werden. Sie können auch als Wahrheitswerte interpretiert werden: 1 = true, 0 = false. Da es technisch extrem schwierig ist, einen exakten Spannungswert (oder Stromwert) einzustellen, wird je ein Intervall auf die ZustĂ€nde 0 und 1 abgebildet; etwa eine Spannung zwischen 0 V und 0,4 V auf den Zustand 0 und eine Spannung zwischen 2,4 V und 2,9 V auf den Zustand 1. (Eine andere Realisierung wĂ€re: 0 - 1,5 V entspricht 0 und 3,5 - 5 V entspricht 1, diese Realisierung ist in Abbildung 2 dargestellt.) Spannungen, die nicht in den Intervallen liegen, fĂŒhren zu einem undefinierten Zustand — beim regulĂ€ren Betrieb der betrachteten Schaltungen dĂŒrfen sie nicht vorkommen. Arbeiten Schaltungen mit identischen Spannungspegeln, sind sie beliebig miteinander kombinierbar — man spricht dann von Logikfamilien.

Abbildung 2: Die ZustÀnde high und low als Spannungsintervalle.Abbildung 2: Die ZustÀnde high und low als Spannungsintervalle.

Die Begriffe Schaltnetz und Schaltwerk werden in der Umgangssprache kaum voneinander getrennt; in der Digitaltechnik sind sie scharf voneinander abgegrenzt: Man spricht von Schaltnetzen, wenn nur Schaltungen verwendet werden, bei denen die Eingabewerte eindeutig den Ausgabewert (oder die Ausgabewerte) bestimmen. Man spricht auch von kombinatorischer Logik (Combinational Circuits). Die bereits betrachteten logischen Schaltungen fallen unter diese Kategorie.

Wird zusÀtzlich mindestens ein Bauteil in die Schaltung aufgenommen, das einen oder mehrere Werte speichern kann, spricht man von einem Schaltwerk oder einer sequentiellen Schaltung (Sequential Circuits); der Ausgabewert hÀngt jetzt von den Eingabewerten und dem gespeicherten Wert ab. Die einfachsten Speicher sind Flip-Flops, die spÀter erklÀrt werden.

Transistoren

Einteilung der Transistoren

Bei den logischen Schaltungen wurden die Eingabewerte durch Schalterstellungen reprĂ€sentiert. Diese Schalter sind natĂŒrlich nicht — wie dort gezeichnet — als mechanische Schalter realisiert sondern durch Transistoren. Bei den ersten Computern wurden Röhren eingesetzt, die eine nahezu identische Kennlinie besitzen wie Transistoren (siehe weiter unten); allerdings haben sie deutlich höhere thermische Leistungen und schalten sehr viel langsamer. An der Kennlinie kann man erkennen, dass sowohl Röhren als auch Transistoren als VerstĂ€rker oder als Schalter einsetzbar sind.

Ein Transistor besteht immer aus zwei Halbleiter-Grenzschichten. Der Name Transistor ist ein Kunstwort aus transfer resistor, was etwa bedeuten soll, dass der die VerĂ€nderung des Widerstandes an einer Grenzschicht zur anderen Grenzschicht ĂŒbertragen wird, kurz kann man auf deutsch auch steuerbarer Widerstand sagen.

Man unterscheidet bipolare Transistoren und unipolare Transistoren. Bei bipolaren Transistoren sind sowohl positive als auch negative LadungstrÀger am Ladungstransport beteiligt, beim unipolaren Transistor immer nur eine Ladungsart (also entweder die negativen Elektronen oder die positiven Löcher).

Abbildung 3: Einteilung von Transistoren in unipolare und bipolare Transistoren sowie deren weitere Unterteilung. Bei den bipolaren Transistoren wird zusÀtzlich angegeben, wie die dotierten Schichten angeordnet sind: npn- oder pnp-Transistor. Die unipolaren Transistoren werden im Text nÀher erlÀutert.Abbildung 3: Einteilung von Transistoren in unipolare und bipolare Transistoren sowie deren weitere Unterteilung. Bei den bipolaren Transistoren wird zusÀtzlich angegeben, wie die dotierten Schichten angeordnet sind: npn- oder pnp-Transistor. Die unipolaren Transistoren werden im Text nÀher erlÀutert.

Die bipolaren Transistoren werden durch einen Strom gesteuert (Basisstrom IB). Die unipolaren Transistoren werden durch eine Spannung gesteuert; da dies gleichbedeutend ist mit einem elektrischen Feld, nennt man sie auch Feldeffekt-Transistoren (FET).

Bei den Bipolar-Transistoren muss man unterscheiden, in welcher Reihenfolge die Halbleiterschichten angeordnet sind: sie heißen npn- und pnp-Transistor (siehe Abbildung 4 und 5).

Die unipolaren Transistoren (oder Feldeffekt-Transistoren) werden ebenfalls in 2 Gruppen eingeteilt: man spricht von Sperrschicht-FET (JFET, J = junction) oder Isolierschicht-FET (IG-FET, IG = isoliertes Gate). Da die Isolierschicht heute fast immer aus Siliziumdioxid ist, werden sie auch als MOS-FET bezeichnet (MOS = metal oxide semiconductor).

FĂŒr den Einsatz im Computer als Schalter eignen sich vor allem die Feldeffekt-Transistoren. Dies liegt daran, dass sie ĂŒber die Spannung gesteuert werden und einen nahezu unendlich hohen Eingangswiderstand besitzen. Daher ist der Stromfluss fast gleich null und es wird fast keine Leistung umgesetzt. FĂŒr jeden Prozessor besteht das Problem, dass WĂ€rme abgefĂŒhrt werden muss; durch den Einsatz von Feldeffekt-Transistoren wird zumindest die WĂ€rmeentwicklung in den Schaltern minimiert.

Bipolar-Transistoren

Der Aufbau eines Bipolartransistors ist in den Abbildungen 4 (npn-Transistor) und 5 (pnp-Transistor) zu sehen. Die AnschlĂŒsse werden bezeichnet:

  • B = Basis
  • E = Emitter
  • C = Kollektor

Abbildung 4: Der npn-Transistor. Links: Der Aufbau mit den drei dotierten Halbleiterschichten und den Bezeichnungen B = Basis, E = Emitter, C = Kollektor. Mitte: Das Schaltzeichen fĂŒr den npn-Transistor. Rechts: Sein Ersatzschaltbild mit zwei Dioden.Abbildung 4: Der npn-Transistor. Links: Der Aufbau mit den drei dotierten Halbleiterschichten und den Bezeichnungen B = Basis, E = Emitter, C = Kollektor. Mitte: Das Schaltzeichen fĂŒr den npn-Transistor. Rechts: Sein Ersatzschaltbild mit zwei Dioden.

Abbildung 5: Der pnp-Transistor. Links: Der Aufbau mit den drei dotierten Halbleiterschichten. Mitte: Das Schaltzeichen fĂŒr den pnp-Transistor. Rechts: Sein Ersatzschaltbild mit zwei Dioden.Abbildung 5: Der pnp-Transistor. Links: Der Aufbau mit den drei dotierten Halbleiterschichten. Mitte: Das Schaltzeichen fĂŒr den pnp-Transistor. Rechts: Sein Ersatzschaltbild mit zwei Dioden.

Feldeffekt-Transistoren

Beim Bipolartransistor wird der Widerstand der Kollektor-Emitter-Strecke gesteuert (ĂŒber den Basisstrom IB). Beim Feldeffekt-Transistor wird der zu steuernde Widerstand als Kanal bezeichnet, er besitzt die AnschlĂŒsse S (source = Quelle) und D (drain = Senke, Abfluss). Der Kanal ist nicht mit der Steuer-Elektrode G (gate = Tor oder Gatter) leitend verbunden.

Der Kanal ist entweder als n-leitend oder p-leitend ausgefĂŒhrt — im Unterschied zum Bipolartransistor ist also nur eine Ladungsart am Leitungsmechanismus beteiligt. Zudem gibt es zwei Möglichkeiten, wie der leitende Kanal vom Gate getrennt werden kann:

  • Sperrschicht-FET (JFET): Der pn-Übergang vom Kanal zum Gate wird mit einer negativen Spannung vorgespannt ist daher so hochohmig, dass kein Strom fließen kann.
  • Isolierschicht-FET (MOS-FET): Auf das Gate wird eine isolierende Schicht aus Siliziumdioxid aufgedampft.

Abbildung 6: Links: Aufbau eines n-leitenden Feldeffekt-Transistors. Die beiden p-leitenden Gebiete (Gate G) sind auf gleichem Potential (Ă€ußere leitende Verbindung). Je nachdem ob es sich um einen JFET oder einen MOS-FET handelt wird der n-Kanal durch eine Sperrschicht oder durch eine Ă€ußere Spannung von G isoliert. Rechts: Schaltzeichen eines Sperrschicht-Feldeffekt-Transistors (JFET).Abbildung 6: Links: Aufbau eines n-leitenden Feldeffekt-Transistors. Die beiden p-leitenden Gebiete (Gate G) sind auf gleichem Potential (Ă€ußere leitende Verbindung). Je nachdem ob es sich um einen JFET oder einen MOS-FET handelt wird der n-Kanal durch eine Sperrschicht oder durch eine Ă€ußere Spannung von G isoliert. Rechts: Schaltzeichen eines Sperrschicht-Feldeffekt-Transistors (JFET).

Der Transistor als Schalter

FĂŒr den Einsatz im Computer als Schalter eignen sich vor allem die Feldeffekt-Transistoren. Dies liegt daran, dass sie ĂŒber die Spannung gesteuert werden und einen nahezu unendlich hohen Eingangswiderstand besitzen. Daher ist der Stromfluss fast gleich null und es wird fast keine Leistung umgesetzt. FĂŒr jeden Prozessor besteht das Problem, dass WĂ€rme abgefĂŒhrt werden muss; durch den Einsatz von Feldeffekt-Transistoren wird zumindest die WĂ€rmeentwicklung in den Schaltern minimiert.

Abbildung 7: Links: Idealer Schalter, mit dem gesteuert werden kann, ob durch den Widerstand R ein Strom fließt (Schalter ein) oder nicht (Schalter aus). Dazu steht eine Versorgungsspannung U = 5 V bereit. Mitte und rechts: Der Schalter wird durch einen Transistor realisiert und wieder wird der Strom durch den Widerstand R ein- oder ausgeschaltet. Die Versorgungsspannung betrĂ€gt ebenfalls 5 V. Mitte: Realisierung mit einem Bipolartransistor. Der Schalter wird durch den Basisstrom IB gesteuert. Rechts: Realisierung mit einem Feldeffekt-Transistor; hier wird der Schalter ĂŒber die Spannung UGS (Spannung zwischen gate G und source S) gesteuert. Wie die Steuerung des Transistors erfolgt, ist nur mit Hilfe des Kennlinienfeldes verstĂ€ndlich.Abbildung 7: Links: Idealer Schalter, mit dem gesteuert werden kann, ob durch den Widerstand R ein Strom fließt (Schalter ein) oder nicht (Schalter aus). Dazu steht eine Versorgungsspannung U = 5 V bereit. Mitte und rechts: Der Schalter wird durch einen Transistor realisiert und wieder wird der Strom durch den Widerstand R ein- oder ausgeschaltet. Die Versorgungsspannung betrĂ€gt ebenfalls 5 V. Mitte: Realisierung mit einem Bipolartransistor. Der Schalter wird durch den Basisstrom IB gesteuert. Rechts: Realisierung mit einem Feldeffekt-Transistor; hier wird der Schalter ĂŒber die Spannung UGS (Spannung zwischen gate G und source S) gesteuert. Wie die Steuerung des Transistors erfolgt, ist nur mit Hilfe des Kennlinienfeldes verstĂ€ndlich.

Um zu verstehen, wie ein Transistor als Schalter eingesetzt werden kann, werden zunÀchst die Eigenschaften eines idealen Schalters genannt (siehe Abbildung 7 links):

  • Ist der Schalter ausgeschaltet (Zustand aus), hat er einen unendlich hohen Widerstand und weder durch den Schalter noch durch den Widerstand R fließt ein Strom (I = 0).
  • Ist der Schalter eingeschaltet (Zustand ein), hat er den Widerstand 0 und am Schalter fĂ€llt keine Spannung ab; durch den Widerstand R fließt jetzt der Strom I = U/R.
  • Da am Schalter entweder U = 0 oder I = 0, ist die Leistung P = UI des Schalters immer gleich null.
  • Der Schalter arbeitet verzögerungsfrei, das heißt beim Einschalten springt der Strom sofort von 0 auf I = U/R.

Abbildung 7 zeigt (mitte) einen Bipolartransistor und (rechts) einen Feldeffekt-Transistor, wie er als Schalter genutzt werden kann. Der Unterschied zwischen den beiden besteht nur darin, dass beim Bipolartransistor der Strom IB als SteuergrĂ¶ĂŸe wirkt, beim Feldeffekt-Transistor die Spannung UGS. Die Schaltungen mit Transistoren wirken auf den ersten Blick recht kompliziert. Oben wurde gesagt, dass man einen Transistor auch als steuerbaren Widerstand bezeichnen könnte. Wie Transistoren als Schalter eingesetzt werden, ist leichter verstĂ€ndlich, wenn man zunĂ€chst in Abbildung 7 den idealen Schalter durch einen variablen Widerstand Rx ersetzt, der Werte zwischen null und unendlich annehmen kann. Dieser ist in Abbildung 8 gezeigt.

Abbildung 8: Links: Der Schalter aus Abbildung 7 wurde durch einen variablen Widerstand Rx ersetzt. Mitte: Rx = 0 entspricht dem Zustand ein, ist Rx gleich unendlich, entspricht dies dem Zustand aus. Rechts: LĂ€sst man so Rx alle möglichen Werte durchlaufen, ergibt sich die Kennlinie, die die beiden SchaltzustĂ€nde als Gerade verbindet. Werden die Spannungspegel fĂŒr high und low nicht erreicht, erhĂ€lt man einen undefinierten Zustand.Abbildung 8: Links: Der Schalter aus Abbildung 7 wurde durch einen variablen Widerstand Rx ersetzt. Mitte: Rx = 0 entspricht dem Zustand ein, ist Rx gleich unendlich, entspricht dies dem Zustand aus. Rechts: LĂ€sst man so Rx alle möglichen Werte durchlaufen, ergibt sich die Kennlinie, die die beiden SchaltzustĂ€nde als Gerade verbindet. Werden die Spannungspegel fĂŒr high und low nicht erreicht, erhĂ€lt man einen undefinierten Zustand.

Man hat wie beim idealen Schalter die beiden GrenzfÀlle und weitere ZwischenzustÀnde:

  • Der variable Widerstand Rx wird auf unendlich gestellt: es kann kein Strom fließen, also fĂ€llt die gesamte Spannung U = 5 V am Widerstand Rx ab und es fĂ€llt keine Spannung an R ab. Es fließt kein Strom, der Schaltzustand ist aus.
  • Der variable Widerstand Rx wird auf null gestellt: Jetzt fĂ€llt am Schalter keine Spannung ab, die gesamte Spannung fĂ€llt am Widerstand R ab. Es fließt ein Strom I = U/R durch den Widerstand; der Schaltzustand ist ein.
  • Betrachtet man einen Zwischenzustand, etwa Rx = R, so ist der Gesamtwiderstand gleich 2R. Jetzt fĂ€llt jeweils die Spannung U/2 = 2,5 V an R und an Rx ab und es fließt der Strom I = U/2R; der Strom ist also halb so groß wie im eingeschalteten Zustand. Diesem Zustand kann man keinen definierten Schaltzustand zuweisen, da die Spannung an R nicht innerhalb der vereinbarten Pegel (also 0 - 1,5 V fĂŒr aus beziehungsweise 3, 5 - 5 V fĂŒr ein) liegt.

TrÀgt man die drei besprochenen ZustÀnde in einem Diagramm auf, das Spannung und Strom am Schalter zeigt (hier also der variable Widerstand Rx), so erhÀlt man die drei Punkte in Abbildung 8 mitte. Variiert man nun Rx im Bereich von null bis unendlich, so erhÀlt man als Kennlinie des Schalters die Gerade in Abbildung 8 rechts.

Anstelle des variablen Widerstandes Rx wird nun ein Transistor (wie in Abbildung 7) eingesetzt. Genauer gesagt entspricht die Kollektor-Emitter-Strecke dem variablen Widerstand (beim Bipolartransistor) und der Anschluss an die Basis dient der Steuerung.

Abbildung 9: Qualitative Darstellung des Kennlinienfeldes eines Bipolartransistors. Eine Kennlinie wird fĂŒr einen speziellen Wert des Steuerstromes (Basisstrom) IB aufgenommen. Legt man nun an die Schaltung aus Abbildung 7 (links) eine Spannung von 5 V an, so ergibt sich der Arbeitspunkt indem man die Gerade, die man beim variablen Widerstand diskutiert hat mit der Kennlinie schneidet. (Da es sich um eine qualitative Darstellung handelt, sind die Einheiten hier willkĂŒrlich gewĂ€hlt: sind etwa auf der x-Achse Volt und auf der y-Achse mA aufgetragen, so hat der Widerstand R den Wert 1000 Ohm.)Abbildung 9: Qualitative Darstellung des Kennlinienfeldes eines Bipolartransistors. Eine Kennlinie wird fĂŒr einen speziellen Wert des Steuerstromes (Basisstrom) IB aufgenommen. Legt man nun an die Schaltung aus Abbildung 7 (links) eine Spannung von 5 V an, so ergibt sich der Arbeitspunkt indem man die Gerade, die man beim variablen Widerstand diskutiert hat mit der Kennlinie schneidet. (Da es sich um eine qualitative Darstellung handelt, sind die Einheiten hier willkĂŒrlich gewĂ€hlt: sind etwa auf der x-Achse Volt und auf der y-Achse mA aufgetragen, so hat der Widerstand R den Wert 1000 Ohm.)

Die ErklĂ€rung erfolgt hier fĂŒr den Bipolartransistor — fĂŒr den Feldeffekt-Transistor ist sie etwas schwieriger.

Abbildung 9 zeigt das Kennlinienfeld des Bipolartransistors, in dem der Kollektorstrom IC gegen die Spannung UCE (Spannung zwischen Kollektor und Emitter) aufgetragen ist. Eine Kennlinie wird fĂŒr einen festen Wert des Basisstromes IB aufgenommen. Die Kennlinie Ă€hnelt der einer idealen Stromquelle: der Strom ist nahezu konstant — unabhĂ€ngig davon, welche Spannung anliegt. Das heißt aber, dass — außer bei sehr kleinen Spannungen UCE — der (kleine) Basisstrom in einen (großen) Kollektorstrom verwandelt wird und der VerstĂ€rkungsfaktor nahezu konstant ist. Damit besteht aber die Möglichkeit, den Kollektorstrom ĂŒber den Basisstrom zu steuern. Denn ist der Basisstrom unterhalb einer gewissen Schwelle IB0, so ist der Kollektorstrom auch unterhalb einer Schwelle IK0 (Zustand aus); ist der Basisstrom oberhalb einer gewissen Schwelle IB1, so ist der Kollektorstrom auch oberhalb einer Schwelle IK1 (Zustand ein).

Schaltnetze

Schaltnetze wurden oben als Schaltungen bezeichnet, bei denen die Eingabewerte eindeutig die Ausgabewerte bestimmen. Schaltungen, die Werte speichern können, fallen nicht in diese Kategorie. Genauer muss man zwischen Schaltfunktionen und Schaltnetzen unterscheiden: Eine Schaltfunktion besitzt genau einen Ausgabewert, ein Schaltnetz beliebig viele Ausgabewerte. Dargestellt werden sie wieder als angedeutete black box, siehe folgende Abbildung.

Abbildung 10: Schaltfunktion und Schaltnetz als black box. Man beachte, dass das Schaltnetz n Eingabewerte und m Ausgabewerte besitzt, wobei n im Allgemeinen nicht mit m ĂŒbereinstimmt.Abbildung 10: Schaltfunktion und Schaltnetz als black box. Man beachte, dass das Schaltnetz n Eingabewerte und m Ausgabewerte besitzt, wobei n im Allgemeinen nicht mit m ĂŒbereinstimmt.

Die bereits besprochenen logischen Funktionen kann man auch als Schaltfunktionen bezeichnen. Weiter unten werden dann auch relevante Beispiele fĂŒr Schaltnetze behandelt.

Grundschaltungen

Die beiden folgenden Aussagen wirken eher abstrakt und nichtssagend, haben aber — auch fĂŒr die Praxis — wichtige Konsequenzen:

1. Bedeutung der Schaltfunktionen AND, OR und NOT:

Jede Schaltfunktion und jedes Schaltnetz kann aus den drei Grundschaltungen AND, OR und NOT aufgebaut werden.

2. Bedeutung der Schaltfunktionen NAND und XOR:

Jede Schaltfunktion und jedes Schaltnetz kann aus den zwei Grundschaltungen NAND und XOR aufgebaut werden.

Die zweite Aussage ist fĂŒr die Praxis sogar relevanter, da sich NAND- und XOR-Schaltungen in der sogenannten CMOS-Technik leichter realisieren lassen.

Der Beweis dieser Aussagen erfolgt in der Booleschen Algebra, die die Gesetze der logischen Funktionen untersucht.

FĂŒr die Praxis sind die Aussagen deshalb relevant, weil sie ein Design-Prinzip fĂŒr komplexe Schaltungen ermöglichen: Man ĂŒberlegt sich zunĂ€chst, welche Schaltfunktion oder welches Schaltnetz (fĂŒr eine gegebene Anwendung) hilfreich wĂ€re und formuliert sie etwa als Logiktabelle. Die Boolesche Algebra liefert Verfahren, wie man ein gegebenes Schaltnetz auf die Grundschaltungen zurĂŒckfĂŒhren kann — und damit kann man die Schaltung realisieren.

Die folgenden Beispiele sollen einen Einblick geben, wie dieses Design-Prinzip arbeitet.

Spezielle Schaltfunktionen und Schaltnetze

Besprochen werden hier:

  1. Die IdentitÀt als Schaltfunktion
  2. AND und OR mit mehreren Eingabewerten
  3. Codierer und Decodierer
  4. Multiplexer und Demultiplexer
  5. Komparator
  6. Arithmetik-Schaltungen
  7. Inkrementierer und ZĂ€hler
  8. Programmierbare Logikbausteine (PLD)

Im Detail:

1. Die IdentitÀt als Schaltfunktion:

Bei den Booleschen Funktionen wurde die IdentitĂ€t nicht ausdrĂŒcklich diskutiert: sie gibt einfach nur den Eingabewert als Ausgabewert weiter und wird deswegen auch als Treiber (driver) bezeichnet; je nach Zusammenhang auch als Puffer (buffer).

Warum hat sie dennoch eine Bedeutung als Schaltfunktion und wird jetzt sogar zu einem Schaltnetz mit n EingĂ€ngen und n AusgĂ€ngen verallgemeinert? Als logische Funktion ist die IdentitĂ€t trivial — sie verĂ€ndert die Signale nicht. Physikalisch gesehen spielt die IdentitĂ€t aber eine wichtige Rolle: Im Lauf der Zeit sinken womöglich die Spannungspegel in einer Schaltung und sie mĂŒssen wieder aufgefrischt werden (sonst entsteht ein undefinierter Zustand). Das heißt die IdentitĂ€t wird als VerstĂ€rker eingesetzt — ist aber logisch gesehen die identische Abbildung.

Die IdentitĂ€t kann auch als echter VerstĂ€rker eingesetzt werden, wenn zum Beispiel ein Signal als Steuersignal fĂŒr ein anderes GerĂ€t verwendet werden muss, das einen deutlich höheren Pegel als high erwartet.

Abbildung 11 zeigt die IdentitĂ€t als Schaltnetz mit n EingĂ€ngen und n AusgĂ€ngen: IdentitĂ€t heißt hier, dass yi = xi fĂŒr alle i = 1,...,n.

Abbildung 11: Die IdentitÀt als Schaltnetz mit n EingÀngen und n AusgÀngen.Abbildung 11: Die IdentitÀt als Schaltnetz mit n EingÀngen und n AusgÀngen.

Aufgabe:

Verwandt mit der IdentitÀt ist der sogenannte Schmitt-Trigger.

  • Informieren Sie sich in der Literatur, welche Eigenschaften er hat.
  • Im Schaltzeichen wird er durch eine angedeutete Hysterese-Schleife symbolisiert. Was bedeutet die Hysterese-Schleife?
  • Warum wird der Schmitt-Trigger zum Beispiel zur Vermeidung des Tasten-Prellens eingesetzt oder zum Ein- und Ausschalten der Straßenbeleuchtung?

2. AND und OR mit mehreren Eingabewerten:

Die logischen Funktionen AND und OR können fĂŒr beliebig viele Eingabewerte verallgemeinert werden. Sie besitzen dann immer noch einen Ausgabewert — es handelt sich also um Schaltfunktionen. FĂŒr drei Eingabewerte zeigt die folgende Tabelle die Ausgabewerte.

Abbildung 12: Die Schaltfunktionen AND und OR verallgemeinert fĂŒr drei Eingabewerte. Darunter die zugehörigen Schaltzeichen.Abbildung 12: Die Schaltfunktionen AND und OR verallgemeinert fĂŒr drei Eingabewerte. Darunter die zugehörigen Schaltzeichen.

Aufgabe:

  1. Wie kann man die logischen Funktionen AND und OR (jetzt mit drei Eingabewerten) auf die logischen Funktionen mit zwei Eingabewerten zurĂŒckfĂŒhren?
  2. Wie sehen die Logiktabelle und diese ZurĂŒckfĂŒhrung bei n Eingabewerten aus?
  3. Diskutieren Sie: Wie lassen sich die Funktionen NAND, NOR, XOR auf beliebig viele Eingabewerte verallgemeinern? Wie lauten die zugehörigen logischen Tabellen?

3. Codierer und Decodierer

Viele Maschinensprache-Befehle sind reine Kopierbefehle oder sie sind aus einem Kopierbefehl und anderen Befehlen zusammengesetzt. Man muss also oft auf eine Speicherzelle mit gegebener Adresse zugreifen, dies erledigt der Adress-Decodierer. Oder man erhÀlt ein Signal aus einer bestimmten Speicherzelle und muss mit der Adresse dieser Speicherzelle weiterrechnen: Adress-Codierer.

Zur Erinnerung: Mit einer n-stelligen Dualzahl lassen sich 2n verschiedene Zahlen darstellen, nĂ€mlich die Zahlen 0, 1, 2,..., 2n-1. (FĂŒr die Zahl 2n benötigt man schon eine Stelle mehr.) Verwendet man die Dualzahlen um Speicherzellen zu adressieren, so lassen sich mit Hilfe von n-stelligen Adressen (n Bits) 2n Adressen angeben; die Adressen werden aber meist mit 1, 2,..., 2n durchgezĂ€hlt).

Auf diesen Eigenschaften beruhen der Decodierer (decoder) und Codierer (coder). Die folgende Abbildung zeigt den Adress-Decodierer mit 2 EingĂ€ngen und 4 AusgĂ€ngen. Dabei ergibt sich aber eine Schwierigkeit: Bisher wurden die EingĂ€nge (nahezu wahllos) mit x1,...,xn durchnumeriert. Sollen die Eingabewerte aber eine Dualzahl zusammensetzen, kommt es auf die Reihenfolge an, wie die Bits gelesen werden — genau das ist der Clou eines Stellenwertsystems. Im Folgenden wird daher die Konvention verwendet: Soll eine Menge von Ein- oder Ausgabewerten als Dualzahl interpretiert werden, gibt der Index die Potenz an, die im Stellenwertsystem verwendet wird. Eine dreistellige Dualzahl wird man dann als x2 x1 x0 schreiben, x0 steht fĂŒr die Einer, x1 fĂŒr die Zweier, x2 fĂŒr die Vierer.

Abbildung 13: Der Adress-Decodierer: Die beiden Eingabewerte x1 x0 stehen fĂŒr eine zweistellige Dualzahl. Es stehen vier AusgĂ€nge zur VerfĂŒgung, mit denen eine von vier Speicherzellen angesprochen werden kann. Je nachdem welche Dualzahl eingegeben wird, wird die zugehörige Speicherzelle angesprochen.Abbildung 13: Der Adress-Decodierer: Die beiden Eingabewerte x1 x0 stehen fĂŒr eine zweistellige Dualzahl. Es stehen vier AusgĂ€nge zur VerfĂŒgung, mit denen eine von vier Speicherzellen angesprochen werden kann. Je nachdem welche Dualzahl eingegeben wird, wird die zugehörige Speicherzelle angesprochen.

Aufgabe:

Stellen Sie den Schaltzustand eines 3/8-Adress-Decodierers dar, der die siebte (von acht) Speicherzellen anspricht.

Achtung: Hinter dieser Aufgabe verbirgt sich einer der hÀufigsten Programmierfehler: Man bildet eine Liste (oder einen Vektor) von n Objekten und vergisst, ob man die Liste mit 0, 1,..., n-1 oder 1, 2,..., n durchnumeriert hat.

Mit den AusgĂ€ngen mĂŒssen nicht Speicherzellen angesprochen werden, die Schaltung kann natĂŒrlich auch dafĂŒr verwendet werden, eine Dualzahl (in Abbildung 13: ein Eingabewert mit 2 Stellen) in einen beliebigen Code umzuwandeln. Daher nennt man die Schaltung allgemein Decodierer. (Man kann sich den Decodierer auch so vorstellen: Ein Adress-Decodierer gibt eine Adresse an und dort steht, wie der Eingabewert zu ĂŒbersetzen ist.)

Aufgabe:

ÜberprĂŒfen Sie, ob die Schaltung in Abbildung 14 tatsĂ€chlich die logische Tabelle des 2/4 Adress-Decodierers erfĂŒllt!

Abbildung 14: Die Schaltung, die den Adress-Decodierer realisiert - aufgebaut aus NOT und AND.Abbildung 14: Die Schaltung, die den Adress-Decodierer realisiert - aufgebaut aus NOT und AND.

Werden Eingang und Ausgang des Decodierers vertauscht, spricht man von einem Codierer. Am leichtesten vorzustellen ist wieder der Adress-Codierer: Jetzt besitzt der Eingang 2n Eingabewerte (Signal, das aus einer von 2n Speicherzellen kommt) und am Ausgang wird die zugehörige Adresse erzeugt (als n-stellige Dualzahl). Man muss aber eine EinschrĂ€nkung auferlegen: Unter den 2n Eingabewerten muss sich genau eine 1 befinden — andernfalls ist der Ausgabewert nicht definiert; oder man vereinbart, dass die erste vorkommende 1 codiert wird.

Die folgende Abbildung 15 zeigt einen 4/2 Adress-Codierer und einen speziellen Zustand des 8/3 Adress-Codierers.

Abbildung 15: Links: Der 4/2 Adress-Codierer mit 4 EingÀngen und 2 AusgÀngen. Rechts: Der 8/3 Adress-Codierer, bei dem der 5. Eingang angesprochen wird. Da die EingÀnge aber von 0 ausgehend gezÀhlt werden, entspricht dies der Dualzahl 100 = 4 (die möglichen Adressen laufen von 0 bis 7).Abbildung 15: Links: Der 4/2 Adress-Codierer mit 4 EingÀngen und 2 AusgÀngen. Rechts: Der 8/3 Adress-Codierer, bei dem der 5. Eingang angesprochen wird. Da die EingÀnge aber von 0 ausgehend gezÀhlt werden, entspricht dies der Dualzahl 100 = 4 (die möglichen Adressen laufen von 0 bis 7).

4. Multiplexer und Demultiplexer

Der elementare Multiplexer realisiert die Alternative, die in jeder Programmiersprache vorkommt:

IF (Bedingung)
    THEN Anweisung
    ELSE Anweisung

In der einfachsten Form sind die Anweisungen lediglich 2 Bits x0 und x1, beim Multiplexer sind dies die beiden EingĂ€nge. Die Bedingung (condition) ist eine weitere Steuerleitung, die in der symbolischen Darstellung von den EingĂ€ngen unterschieden wird. Der Multiplexer besitzt dann einen Ausgang y, fĂŒr den gelten soll:

  • y = x0, falls c = 1
  • y = x1, falls c = 0.

Abbildung 16: Links: Der mechanische Umschalter, der dem Multiplexer entspricht; mit ihm kann eine von zwei Möglichkeiten ausgewĂ€hlt werden, durch welche Leitung der Strom fließt. Mitte: Der Multiplexer mit 2 EingĂ€ngen (x0 und x1) und einer Steuerleitung c. Rechts: Die logische Tabelle fĂŒr den Multiplexer.Abbildung 16: Links: Der mechanische Umschalter, der dem Multiplexer entspricht; mit ihm kann eine von zwei Möglichkeiten ausgewĂ€hlt werden, durch welche Leitung der Strom fließt. Mitte: Der Multiplexer mit 2 EingĂ€ngen (x0 und x1) und einer Steuerleitung c. Rechts: Die logische Tabelle fĂŒr den Multiplexer.

Man kann sich den Multiplexer am einfachsten so vorstellen: je nachdem, welche Bedingung gesetzt ist (c = 1 oder c = 0) wird das Eingabe-Signal x0 oder x1 durchgelassen. Die folgende Abbildung zeigt die Schaltung des Multiplexers.

Abbildung 17: Die Schaltung des Multiplexers zurĂŒckgefĂŒhrt auf die Grundschaltungen AND, OR (>= 1) und NOT.Abbildung 17: Die Schaltung des Multiplexers zurĂŒckgefĂŒhrt auf die Grundschaltungen AND, OR (>= 1) und NOT.

Aufgabe:

ÜberprĂŒfen Sie, ob die Schaltung in Abbildung 17 die logische Tabelle des Multiplexers erfĂŒllt!

Mit dem elementaren Multiplexer wird mit Hilfe einer Bedingung eine aus zwei Alternativen ausgewÀhlt. Naheliegend ist es, den Multiplexer zu verallgemeinern:

  • mit Hilfe von 2 Bedingungen kann man zwischen 4 Alternativen wĂ€hlen (2 Steuerleitungen, 4 EingĂ€nge),
  • mit Hilfe von 3 Bedingungen kann man zwischen 8 Alternativen wĂ€hlen (3 Steuerleitungen, 8 EingĂ€nge),
  • allgemein: mit Hilfe von n Bedingungen kann man zwischen 2n Alternativen wĂ€hlen (n Steuerleitungen, 2n EingĂ€nge).

Das heißt: der allgemeine Multiplexer verfĂŒgt ĂŒber n Steuerleitungen (fĂŒr die n Bedingungen) und jeweils 2n EingĂ€nge und AusgĂ€nge. Und je nachdem welche Bedingungen gesetzt sind, wird einer der 2n EingĂ€nge an den Ausgang durchgereicht. Man nennt dies den 2n : 1 Multiplexer.

Da man sich bei der Anzahl der EingĂ€nge nicht auf Zahlen der Form 2n festlegen möchte, kann man auch den N:1 Multiplexer anbieten. Um die Anzahl n seiner Steuerleitungen zu berechnen muss man die auf N folgende Zahl der Form 2n suchen — wer mit dem Logarithmus vertraut ist, kann dies in zwei eindeutigen Rechenschritten erledigen.

FĂŒr die Schaltung des 2n : 1 Multiplexers muss man nicht viel ĂŒberlegen: Da man die Auswahl zwischen 4 Alternativen auf zwei mal zwei Alternativen zurĂŒckfĂŒhren kann, kann man die Schaltung des 4:1 Multiplexers auf mehrere 2:1 Multiplexer zurĂŒckfĂŒhren, siehe Abbildung 18 — das Verfahren kann dann fĂŒr grĂ¶ĂŸere Zahlen wiederholt werden.

Abbildung 18: Die ZurĂŒckfĂŒhrung des 4:1 Multiplexers auf drei 2:1 Multiplexer.Abbildung 18: Die ZurĂŒckfĂŒhrung des 4:1 Multiplexers auf drei 2:1 Multiplexer.

Ausgehend von der einfachen Alternative wurde der 2:1 Multiplexer zur Realisierung der Mehrfachalternative zum n:1 Multiplexer verallgemeinert. Bei beiden wird ein Bit durchgereicht; die Auswahl des durchgereichten Bits erfolgt mit Hilfe der Bedingungen, die in den Steuerleitungen kodiert sind. Es kann dann nicht schwer sein, den Multiplexer in die andere Richtung zu verallgemeinern: anstelle eines Bits soll ein Wort (mit Wortbreite m) durchgereicht werden. Der Multiplexer besitzt anstelle von n EingÀngen n · m EingÀnge und m AusgÀnge; er wird als (n · m) : m Multiplexer bezeichnet. Ein Beispiel mit Wortbreite 4 zeigt die folgende Abbildung.

Abbildung 19: Ein (n · m) : m Multiplexer mit m = 4 (Wortbreite) und n = 8. Er besitzt also insgesamt 32 EingĂ€nge, 3 Steuerleitungen und 4 AusgĂ€nge. Seine Arbeitsweise sollte man so interpretieren: Am Eingang kommen 8 Worte (der LĂ€nge 4 Bits) an, von denen eines ausgewĂ€hlt wird und an den Ausgang durchgereicht wird.Abbildung 19: Ein (n · m) : m Multiplexer mit m = 4 (Wortbreite) und n = 8. Er besitzt also insgesamt 32 EingĂ€nge, 3 Steuerleitungen und 4 AusgĂ€nge. Seine Arbeitsweise sollte man so interpretieren: Am Eingang kommen 8 Worte (der LĂ€nge 4 Bits) an, von denen eines ausgewĂ€hlt wird und an den Ausgang durchgereicht wird.

So wie der Codierer zum Decodierer umgedreht werden kann, wird aus dem Multiplexer der Demultiplexer, indem man Eingang und Ausgang miteinander vertauscht. Abbildung 20 zeigt den 1:8 Demultiplexer. Je nachdem welche Bedingung gesetzt ist (Steuerleitungen) wird der Eingabewert an die entsprechende Stelle der Ausgabe durchgereicht; die anderen Stellen der Ausgabe werden 0 gesetzt. Alle besprochenen Verallgemeinerungen können natĂŒrlich auf den Demultiplexer ĂŒbertragen werden.

Abbildung 20: Das GegenstĂŒck zum 8:1 Multiplexer (links) ist der 1:8 Demultiplexer (rechts): es werden lediglich Ein- und AusgĂ€nge vertauscht.Abbildung 20: Das GegenstĂŒck zum 8:1 Multiplexer (links) ist der 1:8 Demultiplexer (rechts): es werden lediglich Ein- und AusgĂ€nge vertauscht.

Anwendung des Demultiplexers: Verbindet man in Abbildung 20 den Ausgang y des Multiplexers mit dem Eingang x des Demultiplexers und legt an beide Bauteile identische Steuersignale (c2 c1 c0) an, so wird einfach nur ein Bit vom Eingang ganz links zum Ausgang ganz rechts durchgereicht. Wozu kann das gut sein? Mit dieser Anordnung wird eine parallele Übertragung in eine serielle Übertragung verwandelt — bei großen Wortbreiten kann man dadurch Leitungen einsparen.

Aufgaben:

1. Wieviele Leitungen benötigt man, wenn 64 Bits seriell mit Hilfe eines Multiplexer/Demultiplexers ĂŒbertragen werden? 2. Worin liegen die Vor- und Nachteile, wenn eine parallele Übertragung in eine serielle Übertragung umgewandelt wird?

Lösungen:

1. FĂŒr die parallele Übertragung von 64 Bits benötigt man offensichtlich 64 Leitungen.

Bei serieller Übertragung mit einem Multiplexer/Demultiplexer benötigt man 6 Steuerleitungen (da 26 = 64) und eine Leitung, die Multiplexer und Demultiplexer verbindet, also insgesamt nur 7 Leitungen.

2. Vorteile der parallelen Übertragung:

  • Sie ist sehr viel schneller als die seriell Übertragung.
  • Sie ist weniger fehleranfĂ€llig. Denn bei der seriellen Übertragung mĂŒssen Multiplexer und Demultiplexer in der richtigen Taktung jeweils mit identischen Steuersignalen angesprochen werden.

Vorteil der seriellen Übertragung:

  • Bei großen Datenmengen (oder Wortbreiten) spart man sehr viele Leitungen.
  • Die serielle Übertragung kann demnach immer eingesetzt werden, wenn die Übertragungsgeschwindigkeit nicht die kritische GrĂ¶ĂŸe ist.

5. Komparator:

Der einfache Komparator (oder 1-Bit-Komparator) vergleicht zwei Dualzahlen und hat einen Ausgabewert; dieser ist gleich 1 ist, wenn die Zahlen gleich sind. Somit realisiert er die logische Funktion XNOR (Äquivalenz).

Abbildung 21: Der einfache Komparator (oder 1-Bit-Komparator), der zwei Dualzahlen vergleicht. Links: Die zugehörige logische Tabelle. Rechts: Das Schaltzeichen des einfachen Komparators.Abbildung 21: Der einfache Komparator (oder 1-Bit-Komparator), der zwei Dualzahlen vergleicht. Links: Die zugehörige logische Tabelle. Rechts: Das Schaltzeichen des einfachen Komparators.

Der 1-Bit-Komparator kann leicht zum n-Bit-Komparator verallgemeinert werden: er hat 2n EingĂ€nge, die fĂŒr die beiden n-stelligen Dualzahlen x0 und x1 stehen, und einen Ausgang. Der Ausgabewert gibt wieder an, ob x0 und x1 gleich sind oder nicht.

Der Universalkomparator hat zwei Bits x0 und x1 als Eingabewerte und drei AusgÀnge. Es wird derjenige Ausgabewert auf 1 gesetzt, der den Fall beschreibt:

  • x0 ist kleiner als x1,
  • x0 ist gleich x1,
  • x0 ist grĂ¶ĂŸer als x1.

Abbildung 22: Der Universalkomparator, der zwei Bits vergleicht. Links: Die zugehörige logische Tabelle. Rechts: Das Schaltzeichen des Universalkomparators.Abbildung 22: Der Universalkomparator, der zwei Bits vergleicht. Links: Die zugehörige logische Tabelle. Rechts: Das Schaltzeichen des Universalkomparators.

Durch Zusammenschalten von n Universalkomparatoren erhĂ€lt man den Vergleich von zwei n-stelligen Dualzahlen a und b — wieder mit den drei AusgĂ€ngen:

  • a ist kleiner als b,
  • a ist gleich b
  • a ist grĂ¶ĂŸer als b.

6. Arithmetik-Schaltungen

Aufgaben: 1. Halb-Addierer:

Zwei einstellige (positive) Dualzahlen x0 und x1 sollen addiert werden. Geben Sie dazu die logische Tabelle an! Was unterscheidet die Operation x0 + x1 von den Booleschen Funktionen (wie AND, OR, NAND und so weiter)?

2. Voll-Addierer:

Zwei vierstellige (positive) Dualzahlen sollen addiert werden. Kann die Addition auf die Addition einstelliger Dualzahlen zurĂŒckgefĂŒhrt werden oder ist sie komplexer?

Lösungen:

1. Halb-Addierer: Addition von 2 einstelligen (positiven) Dualzahlen.

Das Problem der Addition ist, dass das Ergebnis entweder einstellig oder zweistellig ist. Die Booleschen Funktionen wie AND hatten zwei Eingabewerte und einen Ausgabewert.

Abbildung 23: Links: Logische Tabelle des Halb-Addierers. Man beachte, dass eine Stelle nicht ausreicht, um das Ergebnis anzugeben. Mitte: Schaltzeichen des Halb-Addierers. Rechts: Realisierung des Halb-Addierers durch XOR uns AND. Der Übertrag sollte als solcher kenntlich gemacht werden (etwa durch die Bezeichnung cout oder nur c).Abbildung 23: Links: Logische Tabelle des Halb-Addierers. Man beachte, dass eine Stelle nicht ausreicht, um das Ergebnis anzugeben. Mitte: Schaltzeichen des Halb-Addierers. Rechts: Realisierung des Halb-Addierers durch XOR uns AND. Der Übertrag sollte als solcher kenntlich gemacht werden (etwa durch die Bezeichnung cout oder nur c).

Abbildung 23 zeigt die logische Tabelle der Addition zweier einstelliger Zahlen. FĂŒr das Ergebnis mĂŒssen zwei Stellen vorgesehen werden, da es zu einem Übertrag (carry-bit, Sie kennen es vielleicht als: 1 im Sinn) kommen kann, nĂ€mlich bei 1 + 1 = (10)2; fĂŒr die anderen drei FĂ€lle wĂŒrde eine Stelle im Ergebnis ausreichen.

Vergleicht man die logische Tabelle der Addition mit den bekannten Booleschen Funktionen, so sieht man, dass fĂŒr das Ergebnis (y1 y0 = x1 + x0) gilt:

  • y0 = x1 XOR x0
  • y1 = x1 AND x0.

In der logischen Schaltung des Halb-Addierers wird y1 meist als cout (carry out) bezeichnet; die AusgĂ€nge y0 und y1 werden oft auf verschiedenen Seiten der black box angebracht (dabei steht c jetzt fĂŒr carry und out dafĂŒr, dass es sich um ein Ausgangssignal handelt).

Wird mit mehrstelligen Zahlen gerechnet (siehe nÀchste Aufgabe), unterscheidet man zwischen cout und cin (carry in).

2. Voll-Addierer: Addition von 2 vierstelligen (positiven) Dualzahlen.

Man beginnt die Addition natĂŒrlich mit dem niedrigsten Bit (Einer) — diese kann durch den Halb-Addierer der letzten Aufgabe realisiert werden. Aber ab der nĂ€chsten Stelle gibt es wieder eine Neuerung: Da jetzt ein Übertrag vorliegen kann, muss man eventuell drei Summanden addieren. Ein bereits vorhandener Übertrag wird als cin bezeichnet; der Übertrag, der im Ergebnis entsteht, ist dann wieder cout.

Die Schaltung, die die Addition mit drei Summanden (zwei Eingabewerte und ein cin) realisiert, wird als Voll-Addierer bezeichnet; die zugehörige logische Tabelle ist in Abbildung 24 dargestellt. Nachdem der Voll-Addierer bekannt ist, könnte man den Halb-Addierer auch folgendermaßen charakterisieren: er addiert zwei Dualzahlen, wobei noch kein cin (carry in) vorliegt.

Abbildung 24: Links: Logische Tabelle des Ein-Bit-Voll-Addierers. Falls Cin = 0, stimmt die logische Tabelle natĂŒrlich mit der des Halb-Addierers ĂŒberein (obere HĂ€lfte der Tabelle). FĂŒr Cin = 1 ergeben sich neue Werte. Rechts: Schaltzeichen des Ein-Bit-Voll-Addierers.Abbildung 24: Links: Logische Tabelle des Ein-Bit-Voll-Addierers. Falls Cin = 0, stimmt die logische Tabelle natĂŒrlich mit der des Halb-Addierers ĂŒberein (obere HĂ€lfte der Tabelle). FĂŒr Cin = 1 ergeben sich neue Werte. Rechts: Schaltzeichen des Ein-Bit-Voll-Addierers.

Die Darstellung des Voll-Addierers ist etwas problematisch:

  • Einerseits sollen Eingabewerte von links kommen und Ausgabewerte nach rechts weitergegeben werden.
  • Andererseits stimmt Letzteres nicht mit unserem Stellenwertsystem ĂŒberein: die kleinste Stelle ist ganz rechts und der Übertrag (ein Ausgabewert) soll von rechts nach links durchgereicht werden.

Da das Addieren ĂŒblicherweise von rechts nach links durchgefĂŒhrt wird, wird der Addierer manchmal wie Abbildung 25 dargestellt. Dabei wird jeder Übertrag zur nĂ€chsten Addition weitergereicht. FĂŒr das niedrigste Bit reicht der Halb-Addierer, fĂŒr die höheren Bits wird ein Voll-Addierer benötigt. Das Ergebnis ist eine fĂŒnfstellige Zahl (c4s3s2s1s0)2: die Ergebnisse der vier Additionen sowie als höchstes Bit der Übertrag der letzten Addition.

Abbildung 25: Der 4-Bit-Voll-Addierer setzt sich aus einem Halb-Addierer und drei Voll-Addierern zusammen.Abbildung 25: Der 4-Bit-Voll-Addierer setzt sich aus einem Halb-Addierer und drei Voll-Addierern zusammen.

7. Inkrementierer und ZĂ€hler:

Der Inkrementierer muss eine Variable um 1 erhöhen; es ist naheliegend, dies durch eine Addition zu realisieren. Da man aber Register als ZĂ€hler betreiben kann, ist es einfacher das Inkrementieren durch ZĂ€hlen zu ersetzen. Und ZĂ€hler benötigen einen Speicher — gehören also nicht zu den Schaltnetzen sondern zu den Schaltwerken.

8. Programmierbare Logikbausteine (= Programmable Logic Device = PLD):

Bisher wurden Schaltfunktionen und Schaltnetze besprochen, die eine logische Funktion realisieren. Da aus der Booleschen Algebra bekannt ist, dass man jede logische Funktion auf bestimmte Grund-Operationen zurĂŒckfĂŒhren kann (etwa AND, OR, NOT), ist es möglich Bauteile anzubieten, in denen zahlreiche dieser Grund-Operationen enthalten sind und die erst vom Nutzer programmiert werden (salopp gesagt: sie werden verdrahtet). Dass es solche programmierbaren Bauteile geben kann, wie die Grund-Operationen angeordnet sein mĂŒssen und wie sie anschließend programmiert werden können, um eine gewĂŒnschte logische Funktion zu erfĂŒllen, muss man aus den Gesetzen der Booleschen Algebra herleiten — was hier nicht erfolgt.

Dazu werden elementare Logikbausteine in einer Ebene (array, daher auch die Bezeichnung Programmable Logic Array = PLA) angeordnet. Jeder Baustein hat zwei EingÀnge (x0 und x1) und zwei AusgÀnge (y0 und y1) sowie zwei Steuerleitungen (s0 und s1). Welche logische Funktion an die AusgÀnge gelegt wird, bestimmen die Signale an den Steuerleitungen; eine mögliche Realisierung könnte wie in der folgenden Abbildung aussehen.

Abbildung 26: Eine mögliche Realisierung des elementaren Bausteins fĂŒr einen programmierbaren Logikbaustein. Links: Der Baustein besitzt zwei EingĂ€nge x0 und x1 und zwei AusgĂ€nge y0 und y1. Durch zwei Steuersignale s0 und s1 wird definiert, welche logische Funktion der Baustein ausfĂŒhrt. Rechts: Die logische Tabelle zeigt die Wirkung der Steuersignale.Abbildung 26: Eine mögliche Realisierung des elementaren Bausteins fĂŒr einen programmierbaren Logikbaustein. Links: Der Baustein besitzt zwei EingĂ€nge x0 und x1 und zwei AusgĂ€nge y0 und y1. Durch zwei Steuersignale s0 und s1 wird definiert, welche logische Funktion der Baustein ausfĂŒhrt. Rechts: Die logische Tabelle zeigt die Wirkung der Steuersignale.

Diese elementaren Logikbausteine werden nun in einer Ebene (oder vielleicht besser: Gitter) angeordnet und können je nach Wahl der Signale an den Steuerleitungen jede beliebige logische Funktion ausfĂŒhren. Die GrĂ¶ĂŸe des Gitters legt fest, wie viele Ein- und Ausgabewerte die logische Funktion besitzen darf.

Abbildung 27: Ein programmierbarer Logikbaustein mit drei Eingabewerten (x0, x1 und x2) und zwei Ausgabewerten (y0 und y1). Die EingĂ€nge fĂŒr die Steuersignale sind nicht dargestellt. Die elementaren Bausteine sind in einem Gitter angeordnet und werden mit Einsen (von oben) und mit den x-Werten beziehungsweise 0 von links gespeist. Berechnet werden zwei Funktionen f0 und f1, die der Nutzer durch die Steuersignale definieren kann.Abbildung 27: Ein programmierbarer Logikbaustein mit drei Eingabewerten (x0, x1 und x2) und zwei Ausgabewerten (y0 und y1). Die EingĂ€nge fĂŒr die Steuersignale sind nicht dargestellt. Die elementaren Bausteine sind in einem Gitter angeordnet und werden mit Einsen (von oben) und mit den x-Werten beziehungsweise 0 von links gespeist. Berechnet werden zwei Funktionen f0 und f1, die der Nutzer durch die Steuersignale definieren kann.

Bei simplen Schaltungen kann man noch selbst herausfinden, welche VerknĂŒpfungen an den einzelnen Gitterstellen einzusetzen sind, um eine gewĂŒnschte Ausgabe zu erhalten. Bei komplexen Schaltungen unterstĂŒtzt eine sogenannte Hardware-Beschreibungssprache (Hardware Description Language), mit der eine Schaltung spezifiziert werden kann. Ein Beispiel dafĂŒr ist VHDL = Very High Speed Integrated Circuit Hardware Description Language). Derartige Sprachen können dann zeigen, wie sich die zugehörige Schaltung mit Transistoren realisieren lĂ€sst und es können Tests durchgefĂŒhrt werden.

Schaltwerke

Die von Neumann-Rechnerarchitektur beinhaltet eine klare Trennung zwischen Berechnungen (ALU) und Speicher. Insbesondere im Prozessor werden Zwischenspeicher benötigt, die sehr schnell aber dennoch zuverlĂ€ssig arbeiten mĂŒssen. Hier sollen einige davon vorgestellt werden. Zuerst wird mit der monostabilen Kippstufe ein naheliegendes Verfahren zur Speicherung von Dualzahlen vorgestellt, sie wird aber im Register nicht eingesetzt, da sie zu schwerfĂ€llig ist.

Besprochen werden:

  1. Monostabile Kippstufe
  2. Flip-Flops
  3. ZĂ€hler und Inkrementierer

Im Detail:

1. Monostabile Kippstufe:

Naheliegend fĂŒr einen Speicher ist die Vorstellung, dass er wie ein Schließfach genutzt werden kann: Ein Wert (hier eine Dualzahl) kann in ihm abgelegt und bei Bedarf wieder herausgeholt werden.

Dies kann mit Hilfe eines Kondensators realisiert werden. Der Kondensator besitzt einen stabilen Zustand (nÀmlich wenn er ungeladen ist) und einen instabilen Zustand (wenn er geladen ist). Da es immer Kriechströme gibt, verbleibt der Kondensator nicht beliebig lange im geladenen Zustand; soll er es dennoch, muss die Ladung immer wieder aufgefrischt werden.

Man kann dies auch so formulieren: Der Kondensator besitzt eine stabile Grundstellung und eine instabile Arbeitsstellung. Damit kann er insbesondere fĂŒr die Steuerung von zeitlich begrenzten VorgĂ€ngen eingesetzt werden (etwa eine Ampelschaltung). Über die Parameter R (Ohmscher Widerstand) und C (KapazitĂ€t des Kondensators) kann die Dauer beeinflusst werden, die der Kondensator geladen bleibt.

Abbildung 28: Monostabile Kippstufe (realisiert durch einen Kondensator): Der Kondensator wird durch einen Spannungspuls aufgeladen und entlĂ€dt sich im Lauf der Zeit. FĂŒr ein gewisses Zeitintervall verbleibt er im Zustand 1 (high).Abbildung 28: Monostabile Kippstufe (realisiert durch einen Kondensator): Der Kondensator wird durch einen Spannungspuls aufgeladen und entlĂ€dt sich im Lauf der Zeit. FĂŒr ein gewisses Zeitintervall verbleibt er im Zustand 1 (high).

2. Flip-Flops:

Wie oben schon gesagt, sind Speicher, die mit Kondensatoren realisiert werden, zu schwerfĂ€llig fĂŒr die Anwendung im Register. Die beiden folgenden Beispiele sollen einen Eindruck vermitteln, wie man mit Schaltungen, die den Schaltnetzen Ă€hneln, einen Speicher realisieren kann. Entscheidend ist, dass man eine RĂŒckkopplung in die Schaltung einbaut — sonst realisiert sie eine logische Funktion.

Das erste Beispiel soll als Gegenbeispiel fĂŒr einen Speicher dienen, aber zumindest das Prinzip der RĂŒckkopplung zeigen, siehe die folgende Abbildung.

Abbildung 29: Einfache RĂŒckkopplungsschaltung mit einem Inverter (NOT), der den Ausgabewert wieder als Eingabewert erhĂ€lt.Abbildung 29: Einfache RĂŒckkopplungsschaltung mit einem Inverter (NOT), der den Ausgabewert wieder als Eingabewert erhĂ€lt.

Der Inverter aus Abbildung 29 besitzt keinen stabilen Zustand, da bei einer 0 als Eingabewert eine 1 als Ausgabewert entsteht. Und wird die 1 sofort wieder an den Eingang gegeben, springt der Ausgang auf 0 und so fort.

Wie die RĂŒckkopplung fĂŒr einen Speicher eingesetzt werden kann, zeigt die folgende Abbildung.

Abbildung 30: Links: OR-Schaltung mit RĂŒckkopplung des Ausgangs als einfachstes Beispiel fĂŒr einen Speicher. Rechts: Die Tabelle ist keine logische Tabelle — denn dann wĂ€re der Ausgabewert y nur von x abhĂ€ngig — was hier aber nicht der Fall ist. NĂ€here ErklĂ€rung im Text.Abbildung 30: Links: OR-Schaltung mit RĂŒckkopplung des Ausgangs als einfachstes Beispiel fĂŒr einen Speicher. Rechts: Die Tabelle ist keine logische Tabelle — denn dann wĂ€re der Ausgabewert y nur von x abhĂ€ngig — was hier aber nicht der Fall ist. NĂ€here ErklĂ€rung im Text.

Die Schaltung in Abbildung 30 unterscheidet sich kaum von der aus Abbildung 29 — anstelle des Inverters ist eine OR-Schaltung eingesetzt, der Ausgabewert wird als eines der beiden Eingabe-Signale verwendet. Doch diese Schaltung kann man als einen Speicher betrachten. Wird am Eingang x = 0 eingegeben, erscheint am Ausgang y = 0. Und dies bleibt so, wenn kein anderer Wert fĂŒr x eingegeben wird. Sobald aber fĂŒr x eine 1 eingegeben wird, ist auch y = 1. Und ab diesem Zeitpunkt ist es unerheblich, welcher Wert fĂŒr x eingegeben wird, der Ausgang bleibt immer bei 1.

Man darf daher die Tabelle (rechts) nicht fĂŒr eine logische Tabelle halten: Sie liefert nur dann die richtigen Ausgabewerte, wenn der Eingabewert zum ersten Mal eingegeben wurde — der Ausgabewert hĂ€ngt von der Vorgeschichte ab.

Was speichert die Schaltung eigentlich? Man kann am Ausgabewert erkennen, ob im Verlauf des Betriebs der Schaltung jemals eine 1 eingegeben wurde oder nicht:

  • Falls nein: die Ausgabe ist 0.
  • Falls ja: die Ausgabe ist 1.

Weiter sieht man an der Schaltung, dass es nicht nötig ist, einen Speicher wie ein Schließfach zu konstruieren. Hier wurde nirgends eine Information abgelegt; die Schaltung arbeitet auf den ersten Blick wie eine logische Schaltung, durch den rĂŒckgekoppelten Zweig verhĂ€lt sie sich als hĂ€tte sie ein GedĂ€chtnis.

Nach diesen Vorbereitungen kann endlich das Flip-Flop besprochen werden. Man möchte mit ihm ein Bit an Information speichern (aber nicht wie in einem Schließfach) und es soll dazu zwei EingĂ€nge S und R besitzen:

  • S: Setzen (Set), um den Inhalt des Speichers auf 1 zu setzen.
  • R: RĂŒcksetzen (Reset), um den Speicherinhalt wieder auf 0 zu setzen.

Weiter soll das Flip-Flop 2 AusgÀnge Q und P besitzen, um die gespeicherte Information abzufragen:

  • Der Ausgang Q liefert die gespeicherte Information.
  • Der Ausgang P liefert immer die Negaton von Q, also P = NOT Q; dieser Ausgang soll auch dazu dienen, um festzustellen, ob sich das Flip-Flop in einem inkonsistenten Zustand befindet (P = Q).

Das Flip-Flop soll in folgendem Sinn Information speichern, die durch die EingÀnge S und R gesteuert werden kann:

  • Wird S = 0 (und R = 0) gesetzt, bleibt Q unverĂ€ndert (Speichern des bereits vorhandenen Q).
  • Bei S = 1 (und R = 0) wird Q = 1, egal welchen Wert Q vorher hatte (Setzen von Q = 1).
  • Bei R = 1 (und S = 0) wird Q = 0, egal welchen Wert Q vorher hatte (RĂŒcksetzen von Q auf 0).
  • Der Ausgang P soll sich immer im Zustand P = NOT Q befinden (Konsistenz).

Unklar ist dann aber, wie das Flip-Flop reagiert, wenn beide EingÀnge gleichzeitig auf 1 gesetzt werden.

Realisierung des Flip-Flop mit zwei NOR:

Die folgende Abbildung 31 (links) zeigt eine Schaltung, die aus zwei NOR-Gliedern aufgebaut ist und RĂŒckkopplungen besitzt.

Abbildung 31: Flip-Flop mit zwei NOR-Gliedern; ErklÀrung im Text.Abbildung 31: Flip-Flop mit zwei NOR-Gliedern; ErklÀrung im Text.

Abbildung 31 zeigt:

  • Links: Schaltung mit zwei NOR-Gliedern mit RĂŒckkopplung des Ausgangs zur Realisierung eines Flip-Flop.
  • Rechts: Zu gegebenen Ausgabewerten Qn und Pn werden die folgenden Werte Qn+1 und Pn+1 berechnet. Beachten Sie, dass die Tabelle keine logische Tabelle ist, da nur die Werte S und R Eingabewerte sind (und dia Ausgabewerte nicht allein von S und R abhĂ€ngen).
  • Unten: Die Formel zur Berechnung von Qn+1 und Pn+1.

Aufgaben:

1. Untersuchen Sie die Schaltung in Abbildung 31 und versuchen Sie die Ausgabewerte fĂŒr Qn+1 und Pn+1 nachzuvollziehen!

2. Besitzen die mit S und R bezeichneten EingÀnge und die AusgÀnge Q und P das oben beschriebene Verhalten?

3. Identifizieren Sie die oben beschriebenen FunktionalitÀten des Flip-Flop:

  • Speichern des bereits vorhandenen Q
  • Setzen von Q = 1
  • RĂŒcksetzen auf Q = 0
  • Konsistenz

4. In der Tabelle fĂŒr die Ausgabewerte treten Inkonsistenzen auf (also Q = P): Wo treten sie auf und gibt die Tabelle hier wirklich die richtigen Ausgabewerte an?

5. Welches Verhalten zeigt die Schaltung bei S = 1 und R = 1?

6. Können Sie instabile ZustÀnde des Flip-Flops erkennen?

Lösungen:

Die Lösungen zu den obigen Aufgaben sind in der folgenden Abbildung 32 dargestellt (links nochmal die Schaltung, rechts die erweiterte Tabelle zur Berechnung der Ausgabewerte).

Um das Verhalten eines Flip-Flops zu verstehen, muss man erkennen, dass es instabile ZustĂ€nde besitzen kann (in Abbildung 32 zweifarbig dargestellt). Was heißt ĂŒberhaupt instabiler Zustand? Hat man zu gegebenen S, R, Qn Pn die Werte Qn+1 und Pn+1 berechnet und versucht die nĂ€chsten Wert Q'n+1 und P'n+1 zu berechnen, so sieht man, dass in den beiden in Abbildung 32 als instabil gkennzeichneten ZustĂ€nden andere Werte als zuvor herauskommen. Das heißt aber, dass das Flip-Flop die zunĂ€chst berechneten Werte Qn+1 und Pn+1 nur kurz annimmt und sofort auf Q'n+1 und P'n+1 springt. ÜberprĂŒft man andere Werte, so sieht man, dass sie stabil sind.

Mit diesen stabilen ZustĂ€nden kann man nun die FunktionalitĂ€ten des Flip-Flop untersuchen: die entsprechenden Zeilen sind farbig markiert. Und man erkennt, dass die Eingabe S = 1 und gleichzeitig R = 1 zu inkonsistenten ZustĂ€nden fĂŒhrt.

Abbildung 32: Nochmal die Schaltung aus Abbildung 31 fĂŒr das Flip-Flop und ihre Tabelle.Abbildung 32: Nochmal die Schaltung aus Abbildung 31 fĂŒr das Flip-Flop und ihre Tabelle.

In Abbildung 32 sind rechts in der Tabelle die instabilen ZustĂ€nde zweifarbig gekennzeichnet, sie gehen sofort in die stabilen ZustĂ€nde Q'n+1 und P'n+1 ĂŒber. Weiter sind die FunktionalitĂ€ten des Flip-Flop farbig gekennzeichnet.

Die Existenz der inkonsistenten ZustÀnde (bei S = 1 und gleichzeitig R = 1) zeigt, dass diese Realisierung des Flip-Flop noch unzureichend ist. Aber zumindest besitzt es die erwarteten FunktionalitÀten. Es gibt mehrere Möglichkeiten, die Inkonsistenzen zu vermeiden, etwa indem man bei S = 1 und R = 1 eine Eingabe bevorzugt; man sagt ein Eingang ist dominant.

Ein Spezialfall des Flip-Flops ist das sogenannte Toggle-Flip-Flop oder T-Flip-Flop (toggle-switch = Kippschalter). Es ist so konstruiert, dass es durch die ansteigende Flanke eines Signals veranlasst wird, den gespeicherten Zustand zu verÀndern (also von 0 nach 1 beziehungsweise von 1 nach 0, allgemein: Qn+1 = NOT Qn).

3. ZĂ€hler und Inkrementierer:

Oben wurde bereits gesagt, dass ZÀhler und Inkrementierer einfacher mit Hilfe von Speichern realisiert werden können als durch die Addition.

Aufgabe:

Versuchen Sie einen ZÀhler aus einer Kette von T-Flip-Flops zu konstruieren. Der ZÀhler soll ausgehend von (0000)2 bis zur Dualzahl (1111)2 zÀhlen, wobei das HochzÀhlen durch ein Eingabe-Signal ausgelöst wird (der Anfangszustand wird durch eine weitere Steuerleitung eingestellt).

Lösung:

Zuerst ist es hilfreich, die Systematik zu formulieren, wie im Dualsystem gezÀhlt wird:

0000        0
0001        1
0010        2
0011        3
0100        4
0101        5
0110        6
0111        7
1000        8
1001        9
1010        10
1011        11
1100        12
1101        13
1110        14
1111        15

Man erkennt leicht:

  • im niedrigsten Bit wechselt 0 und 1 in jedem Schritt,
  • im nĂ€chsten Bit wechseln ebenfalls 0 und 1, aber die PeriodenlĂ€nge ist 2,
  • im nĂ€chsten Bit ist die PeriodenlĂ€nge 4, dann 8.
  • Ein Wechsel (von 0 zu 1 oder von 1 zu 0) findet immer dann statt, wenn im darunterliegenden Bit die 1 zu 0 wird (klar, denn der Übertrag sorgt dafĂŒr, dass im nĂ€chsten Bit hochgezĂ€hlt wird.)

Der Wechsel im niedrigsten Bit wird durch ein T-Flip-Flop realisiert: Die ansteigende Flanke des Signals, das den ZĂ€hler auslösen soll, sorgt fĂŒr den Wechsel im niedrigsten Bit.

Aber wie werden die höheren Bits realisiert? Immer wenn das niedrigere Bit von 1 auf 0 springt, soll das nĂ€chste Bit wechseln. Das heißt aber, dass eine 0 im niedrigeren Bit als ZĂ€hlimpuls (also eine 1) zum nĂ€chsten Bit gegeben wird. Die folgende Abbildung zeigt die Realisierung.

Abbildung 33: Das Toggle-Flip-Flop; ErklÀrung im Text.Abbildung 33: Das Toggle-Flip-Flop; ErklÀrung im Text.

In Abbildung 33 ist oben das Schaltsymbol fĂŒr ein T-Flip-Flop zu sehen (das Dreieck deutet an, dass es nicht auf das Signal sondern auf die ansteigende Flanke des Signals reagiert). Der Ausgang P = NOT Q dient wieder dazu, die Konsistenz zu prĂŒfen.

Abbildung 33 unten: Folge von vier T-Flip-Flops zum ZĂ€hlen von (0000)2 bis (1111)2. Die T-Flip-Flops sind wieder so angeordnet wie man sich die Folge der Bits der Dualzahl vorstellt. Der Impuls, der das ZĂ€hlen auslösen soll, kommt also von rechts. Der P-Ausgang wird hier nicht verwendet; stattdessen wird der Ausgabewert Q einmal fĂŒr das Ergebnis verwendet (Leitung nach unten) und er wird verneint (leicht zu ĂŒbersehen!) an das nĂ€chste T-Flip-Flop weitergereicht.

Entwicklung von Schaltungen

Bisher wurden zahlreiche Schaltungen vorgestellt, die im Computer (oder auch in der Steuer- und Regelungstechnik) relevant sind. Naheliegend ist es zu fragen, ob es ein allgemeines Verfahren gibt, wie man Schaltungen entwickelt. Es gibt natĂŒrlich Programme, die eine Schaltung, die aus einfachen Schaltnetzen und Schaltwerken aufgebaut ist, die zugehörige Realisierung mit Transistoren berechnen. Dazu mĂŒssen die Schaltungen nur mit Hilfe einer zulĂ€ssigen Menge an elementaren Schaltnetzen und Schaltwerken in einer Hardware-Beschreibungssprache definiert werden.

Aber schwieriger ist die Vorbereitung: Wie kommt man von den Anforderungen an eine Schaltung zu der Realisierung mit elementaren Schaltnetzen und Schaltwerken?

Eine mögliche Hilfe dabei sind Graphen, mit denen Schaltwerke dargestellt werden. Diese Graphen enthalten Knoten (der aktuelle Zustand des Schaltwerkes) und Kanten (die Eingabewerte). Die Kanten sind gerichtet, das heißt sie fĂŒhren vom alten zum neuen Zustand.

Als einfaches Beispiel ist unten der Graph fĂŒr den oben (Abbildung 30) mit Hilfe von OR realisierten Speicher gezeigt. Er verfĂŒgt ĂŒber die zwei ZustĂ€nde 0 und 1 (blau) und die Eingabewerte 0 und 1 fĂŒhren abhĂ€ngig vom aktuellen Zustand des Schaltwerkes zu einem neuen Zustand.

Abbildung 34: Graph zur Beschreibung des Speichers aus Abbildung 30. Die ZustĂ€nde des Speichers sind blau dargestellt (Knoten), die möglichen Eingaben sind Schwarz (Kanten); da die Kanten gerichtet sind, kann man nachvollziehen, zu welchem neuen Zustand eine Eingabe fĂŒhrt. In diesem Beispiel sieht man, dass sowohl die Eingabe von 0 als auch von 1 zu einem anderen  Ergebnis fĂŒhrt, je nachdem in welchem Zustand sich der Speicher gerade befindet. Und man erkennt sofort, dass keine Kante zu Zustand 0 hinfĂŒhrt sowie keine Kante von 1 wegfĂŒhrt.Abbildung 34: Graph zur Beschreibung des Speichers aus Abbildung 30. Die ZustĂ€nde des Speichers sind blau dargestellt (Knoten), die möglichen Eingaben sind Schwarz (Kanten); da die Kanten gerichtet sind, kann man nachvollziehen, zu welchem neuen Zustand eine Eingabe fĂŒhrt. In diesem Beispiel sieht man, dass sowohl die Eingabe von 0 als auch von 1 zu einem anderen Ergebnis fĂŒhrt, je nachdem in welchem Zustand sich der Speicher gerade befindet. Und man erkennt sofort, dass keine Kante zu Zustand 0 hinfĂŒhrt sowie keine Kante von 1 wegfĂŒhrt.

Aufgabe:

Zeichnen Sie den Graphen fĂŒr das Flip-Flop aus Abbildung 31. Die Eingabe S = 1 und zugleich R = 1 fĂŒhrt zu einem inkonsistenten Zustand und soll daher weggelassen werden.

Lösung:

Abbildung 35: Das Flip-Flop kann zwischen den beiden ZustĂ€nden 0 und 1 wechseln; diese werden gespeichert durch die Eingabe (S, R) = (0, 0). Setzen der 1 erfolgt durch (S, R) = (1, 0), RĂŒcksetzen auf 0 durch (S, R) = (0, 1). Die Eingabe (S, R) = (1, 1) soll hier nicht erlaubt sein; ebenso sind die instabilen ZustĂ€nde, die kurzzeitig angenommen werden können, nicht dargestellt.Abbildung 35: Das Flip-Flop kann zwischen den beiden ZustĂ€nden 0 und 1 wechseln; diese werden gespeichert durch die Eingabe (S, R) = (0, 0). Setzen der 1 erfolgt durch (S, R) = (1, 0), RĂŒcksetzen auf 0 durch (S, R) = (0, 1). Die Eingabe (S, R) = (1, 1) soll hier nicht erlaubt sein; ebenso sind die instabilen ZustĂ€nde, die kurzzeitig angenommen werden können, nicht dargestellt.

Mit Hilfe dieser Beispiele kann man andeuten, wie man im allgemeinen Fall vorgehen wird, wenn man eine Schaltung entwickeln muss:

  • FĂŒr Schaltnetze ist bekannt, dass sie durch elementare logische Operationen dargestellt werden können (etwa durch AND, OR und NOT). Und es gibt sogar Algorithmen, die diese Reduktion bewerkstelligen (mehr dazu finden Sie in der Literatur zur Booleschen Algebra).
  • Bei Schaltwerken versucht man möglichst die beiden Teile logische Operation und Speicher-Operationen zu trennen. Die Speicher-Operationen werden wie oben mit Hilfe von Graphen dargestellt, wobei man versucht einfache Speicher wie Flip-Flops einzusetzen.