In diesem Grundlagenteil geht es um eine weitere wichtige Schaltung: dem Multiplexer / Demultiplexer.
Multiplexer (Mux) schalten von vielen Eingängen auf einen Ausgang. Demultiplexer (Demux) schalten von einem Eingang auf viele Ausgänge.
Anschaulich erklären lässt sich die Funktionsweise mit einem Bauteil mit z.B. einem Eingang und n-Ausgängen. Der gewünschte Ausgang wird per Drehschalter ausgewählt. Das Eingangssignal wird zum gewählten Ausgang durchgeleitet. Natürlich funktioniert dies auch umgekehrt mit n-Eingangsleitungen und einer Ausgangsleitung – hier wird die gewünschte Eingangsleitung ausgewählt, welche zum Ausgang durchgeleitet werden soll.
In der Elektronik erfolgt die Selektion des gewünschten Ein- oder Ausgangs natürlich nicht per Drehschalter, sondern elektronisch.
Der Vorteil hierbei liegt darin, dass neben der eigentlichen Datenleitung zusätzlich nur wenige Adressleitungen zur Selektion benötigt. Beispiel: Zur Selektion von 8 Eingangs- oder Ausgangsleitungen werden nur 3 Adressleitungen benötigt ( \(2^3=8\) ).
Bei zyklischem Durchlauf können mit einem Multiplexer parallele Datenströme in serielle gewandelt werden. Diese können somit über eine einzige Datenverbindung wie Glasfaser oder eine Telefonleitung übertragen werden und in Verbindung mit einem Demultiplexer wieder in parallele Daten gewandelt werden.
Der untere Aufbau zeigt einen Demultiplexer, hier wird nämlich ein Eingangssignal an Pin 3 (X) zu einem ausgewählten Ausgang X0-X7 durchgeschaltet. Die Selektion (mit dem „elektronischen Drehschalter“) erfolgt über die entsprechende Ansteuerung der Eingänge A bis C.
In diesem Teil geht es um einen weiteren, wichtigen integrierten Schaltkreis: Das Schieberegister 74HC595.
Anschaulich beschrieben, ist die Funktionsweise hierbei ähnlich einer Eimerkette. Mehrere in Reihe geschaltete Flipflops schieben ihren Speicherinhalt (je 1 Bit) bei jedem Arbeitstakt um ein Flipflop weiter. Das zuerst eingespeicherte Bit verlässt den Speicher zuerst (FIFO-Prinzip).
Der nachfolgende Aufbau zeigt die Funktionsweise des Schieberegisters, der Input wird hier über einen Taster SW1 realisiert, welcher im gedrückten Zustand ein High-Signal am Eingangs-Pin 14 (SER/Input) liefert.
Gezählt wurde bereits in Teil 6 mit den integrierten Schaltungen 74HC193 und 74HC161. Heute geht es genauer um den CD4017, ein Dekade- / Dezimalzähler.
Dieser zählt die Taktimpulse am Eingangs-Pin 14 (CLK) und schaltet mit der steigenden Flanke des Taktsignals nacheinander die Ausgänge Q0-Q9 auf High. Folgt nach 9 ein weiterer Impuls, beginnt der Zähler wieder bei 0. Wenn Eingangs-Pin 13 (CKEN) High ist, ignoriert der Zähler die Taktimpulse.
Ein High-Pegel am Eingangs-Pin 15 (Reset) setzt den Zähler auf 0 zurück. Dies kann man sich u.a. zunutze machen und Reset mit einem bestimmten Qn-Ausgang verbinden, um den Zähler nur bis zu einem bestimmten Wert zählen zu lassen.
Eine Besonderheit bietet der Ausgang 12 (Cout) – dieser liefert 1/10 der Taktfrequenz, wie im Aufbau mittels der roten LED dargestellt.
In den vorherigen Teilen wurden die Binärwerte entweder direkt oder per 7-Segmentanzeige ausgegeben. In diesem Teil geht es um die Wandlung eines Binärwertes in einen Dezimalwert, hierzu kommt der Schaltkreis 74HC42 zum Einsatz.
Der nachfolgende Aufbau verwendet den aus dem letzten Teil bekannten Zähler 74HC193 zur besseren Veranschaulichung. Ähnlich wie zuvor wird eine Wertbegrenzung benötigt, um bei Binär 1011 / Dezimal 11 einen Reset auszulösen. Hierzu kommen wieder NAND-Gatter und Inverter zum Einsatz, die genaue Auslegung und Werttabelle ist anhand des Schaltplanes ersichtlich.
Die Ausgabepins des 74HC193 (Q0 bis Q3) werden mit den Eingangspins des 74HC42 (A0 bis A3) verbunden. Die Ausgabe erfolgt allerdings in negativer Logik (0 = HIGH, 1 = LOW), was bei der weiteren Verarbeitung und Ausgabe berücksichtigt werden sollte. Der Schaltplan zeigt ein mögliches Beispiel, alternativ kann z.B. auch ein Inverter verwendet werden.
Dieser Teil befasst sich mit einem weiteren, wichtigen Schaltkreis: Dem Binärzähler. Der erste Aufbau befasst sich primär mit dem 74HC193, einem synchronen hoch/runter 4-bit Binärzähler mit Clear. Der zweite Aufbau zeigt den 74HC161, ebenfalls ein synchroner 4-bit Binärzähler mit Clear, dessen Zählrichtung allerdings nur aufsteigend ist.
Ziel des ersten Aufbaus ist es, synchron zum Taktsignal von 0 bis 9 zu zählen. Die Ausgabe soll sowohl binär mit LEDs als auch auf einer 7-Segmentanzeige erfolgen. Hier ergibt sich die erste Problemstellung, der Zähler übersteigt mit 4 Bit (\(2^4=16\)) den zulässigen Wertebereich von 0-9 der Anzeige.
Um den Wertbereich zu begrenzen, kann beim Erreichen des Binärwertes 1010 (Dezimal 10) ein Reset durchgeführt werden – der Zählvorgang beginnt dann wieder von vorne.
Die Anforderung lautet also: Sobald die Ausgänge Q1 und Q3 auf High gesetzt sind, soll Mr (Reset) ebenfalls High sein. Mr wird über einen Pulldown-Widerstand per Standard auf GND gezogen und beim Durchschalten des Transistors auf High gesetzt.
Realisiert wird diese Anforderung zunächst über ein NAND-Gatter, dessen Eingänge an Q1 und Q3 angeschlossen werden. Sobald Q1 und Q3 High sind, ist das Ausgangssignal des NAND-Gatters Low. Über einen Inverter/Negator wird daraus ein High-Signal, welches den Transistor durchschaltet und damit den Reset auslöst.
Die Binärwerte von Q0 bis Q3 werden über den bekannten Decoder BCD zu 7-Segmentanzeige 74HC4511 auf der angeschlossenen 7-Segmentanzeige ausgegeben.
Der zweite Ausbau mit dem 74HC161 gestaltet sich ähnlich und wurde hier vereinfacht dargestellt.
In vielen Fällen kommt die positive Logik zur Anwendung, hier würde man eine 7-Segmentanzeige mit gemeinsamer Kathode wählen. Hierbei lassen sich die einzelnen Segmente entweder manuell direkt ansteuern oder man verwendet den aus dem letzten Aufbau bekannten BCD zu 7-Segment-Dekoder 74HC4511, um den meist ohnehin bereits vorhandenen Binärwert umzuwandeln. Exemplarisch dargestellt ist dies im Schaltplan in der oberen Darstellung zu ersehen.
Mit zusätzlichen Aufwand und Bauteilen kann allerdings auch eine 7-Segmentanzeige mit gemeinsamer Anode in Verbindung mit einer positiven Schaltlogik verwendet werden. Die Signale müssen hierzu negiert werden. Hierzu verwendet man entweder einen Logikbaustein (Negator) oder verwendet Transistoren, wie in der unteren Darstellung des Schaltplanes ersichtlich.
Liegt an der Basis der Transistoren kein Signal an, ist der Eingangspegel der 7-Segmentanzeige High. Sobald ein Signal an der Basis anliegt, schaltet der jeweilige Transistor durch und zieht damit den Eingangspegel der 7-Segmentanzeige auf Low.
In Teil 3 habe ich den Aufbau eines 4-Bit-Speichers mit dem Baustein 74HC173 ausführlich beschrieben. In diesem Teil geht es nun um den Aufbau einer einfachen Einheit nach dem EVA-Prinzip (Eingabe/Verarbeitung/Ausgabe), eines grundlegenden Prinzips der Datenverarbeitung moderner Computer.
Diese Einheit soll zwei Werte aufnehmen, addieren und ausgeben – also eine Art simpler Taschenrechner (der aber nur addieren kann).
Die Eingabe erfolgt über zwei 4-Bit-Register A und B, z.B. aus der Schaltung aus Teil 3 mittels 4-D-Flipflop 74HC173. Die Eingabe erfolgt z.B. über Taster in Binärform (von 0000-1111) und wird über rote LEDs angezeigt.
Für die Verarbeitung ist der 4-Bit Volladdierer 74HC283 zuständig. Dieser nimmt die Eingabewerte aus Register A und B auf, addiert diese und gibt sie an einem 4-Bit Datenausgang wieder aus. Das binäre Ergebnis wird mit grünen LEDs angezeigt.
Die Ausgabe soll für Menschen lesbar in Dezimalform erfolgen. Für die Umwandlung des binären Ergebnisses des Volladdierers ins Dezimalformat ist der BCD zu 7-Segment-Dekoder 74HC4511 zuständig. Dessen Ausgabe erfolgt abschließend auf einem 7-Segment-Display.
Der Aufbau ist zur Verdeutlichung des Prinzips bewusst einfach gehalten. Aus diesem Grund erfolgt die Ausgabe auch nur auf einem einstelligen Display.
Wenn das Grundprinzip verstanden wurde, lässt sich die Schaltung unter Verwendung weiterer Bausteine erweitern und damit z.B. eine zweistellige Digitalausgabe realisieren, indem der Übertrag (Carry) des Volladdierers 74HC283 genutzt wird. Desweiteren können z.B. anstelle einer binären Eingabe-LED-Anzeige auch weitere Dekoder 74HC4511 mit 7-Segmentanzeigen versehen werden, um die Eingabe benutzerfreundlicher darzustellen.
Hier nun Fotos meiner Versuchsaufbauten (hier auch Kombinationen früherer Aufbauten) in verschiedenen Eingabesituationen:
In der Welt der Elektronik geben Taktgeber elektrische Impulse in einer bestimmten Frequenz ab und sind damit im elektronischen Rechenwerk unerlässlich. Die meisten Steuerungs- und Schaltvorgänge im Rechenwerk sind taktgesteuert.
Es gibt viele Umsetzungformen, von der einfachen Blinkschaltung bis zum Schwingquarz-Oszillator, je nach erforderlichem Einsatzzweck.
Für meine vorgestellten Bastelprojekte verwende ich meinen Aufbau aus dem Beitrag „LED dimmen mit NE555 PWM“ als Taktgeber. Doch wie schon im letzten Beitrag angesprochen, möchte ich heute einen alternativen Taktgeber aus einem tollen Projekt von Ben Eater vorstellen.
Ben Eater ist in der Community bekannt für sein großartiges Project „Build an 8-bit computer from scratch“ und seine zugehörigen, sehr empfehlenswerten Tutorial-Videos auf Youtube hierzu. Er beschreibt den Aufbau eines 8-Bit-Computers auf dem Steckbrett unter Verwendung einfacher Logikbausteine mit Taktgeber, Register, Arithmetisch-logischer Einheit (ALU), RAM, Register, usw. Schaut es Euch mal an, es lohnt sich!
Ich stelle hier seinen Aufbau eines Taktgebers vor, welcher sich sehr gut für weitere Bastelprojekte eignet. Er verwendet hierbei ebenfalls den bekannten Baustein NE555 und nutzt diesen innerhalb seiner Schaltung auf drei verschiedene Arten.
Die Taktfrequenz kann stufenlos zwischen knapp einem Hertz bis auf ein paar hundert Hertz eingestellt werden. Es gibt auch die Möglichkeit zum Umschaltung in einen manuellen Modus, um jeden Taktzyklus per Tastendruck auszulösen.
Bitte vergesst bei den Bausteinen 74LS08, 74LS04 und 74LS32 nicht, VCC (Pin 14) und GND (Pin 7) anzuschliessen, dies ist auf dem Schaltplan nicht sofort ersichtlich.
Nachfolgend seht Ihr meinen Aufbau. Ich kann diese Schaltung nur empfehlen, gerade die feine Frequenzeinstellung und die Möglichkeit zum manuellen „Durchsteppen“ der Schaltung hat mir sehr gefallen.
Im letzten Teil wurde ein 4-Bit-Speicher (Flipflop) aus zwei integrierten Schaltungen des Typs 74HC00 (2-fach NAND-Gatter) der 74xx Reihe aufgebaut.
In diesem dritten Teil wird der Aufbau eines 4-Bit-Speichers mittels der integrierten Schaltung 74HC173 vorgenommen, ein 4D-Flipflop mit Tri-State-Ausgang. Mit diesem Speicher lassen sich bereits 16 verschiedene Zustände (2^4) speichern. Dieser IC schaltet mit einem Taktsignal, als Taktgeber kann z.B. ein NE555 verwendet werden, wie die hier gezeigte Schaltung aus dem Beitrag LED dimmen mit NE555 PWM.
Setzt man bei dieser Schaltung einen Kondensator mit größerer Kapazität ein, wird ein langsames Blinken erzeugt, was es ermöglicht, ein Einfluss des Taktgebers auf die Schaltvorgänge besser nachvollziehen zu können. Alternativ dazu stelle ich im nächsten Beitrag einen alternativen Taktgeber vor.
Nun zum Aufbau selbst. Im nachfolgenden Schaltplan zeige ich zwei Varianten auf, die Versuchsaufbauten „A“ und „B“.
Versuchsaufbau „A“ dient als einfacher, selbsthaltender Speicher, ähnlich der Schaltungen meiner bisher gezeigten Aufbauten.
Versuchsaufbau „B“ arbeitet ohne Selbsthaltung mit setzbaren Dateneingängen E1/E2 (Pin 9 und 10 „Enable Data Input“). Doch was heißt das und wo genau liegen die Unterschiede?
Vergleicht man beide Schaltpläne, erkennt man folgende Unterschiede zwischen Versuchsaufbau „A“ und „B“:
Bei Versuchsaufbau „A“ sind die Eingänge D0-D3 mit den Ausgängen Q0-Q3 verbunden, bei Versuchsaufbau „B“ nicht
Die Dateneingänge E1 und E2 wurden bei Versuchsaufbau „A“ mit GND verbunden, bei Versuchsaufbau „B“ ist dies wie CLK (Pin 7, Cp) ein weiterer Eingang
Bei Versuchsaufbau „B“ wurden Anschlüsse DA_0 bis DA_3 herausgeführt, um die Datenausgangsleitung zu zeigen. Dies wäre allerdings auch bei Aufbau „A“ schon möglich gewesen, die LEDs dienen ohnehin nur der Visualisierung.
Versuchsaufbau A
Die Selbsthaltung bei Versuchsaufbau „A“ besteht in der Kopplung der Ein- und Ausgänge. Die Dateneingänge E1 und E2 sind miteinander verbunden und werden zu GND geführt, das Eingangssignal ist damit LOW, der Dateneingang ist damit laut Datenblatt aktiv gesetzt. Was dies alles genau heißt, darauf gehe ich im weiteren Verlauf etwas später ein.
Zum Speichern eines Wertes muss einer der Taster SW1-4 gedrückt werden, die zugehörige LED leuchtet auf. Der Reset-Taster setzt wie gewohnt alles wieder zurück. Nachfolgend ein Bild des Aufbaus auf dem Steckbrett. Die gelbe lange Leitung nach rechts führt zum Taktgeber.
Wenn der Taktgeber langsam z.B. im Sekundentakt blinkt, fällt auf, dass man die Taster eine Weile gedrückt halten muss, bis die entsprechende LED dauerhaft leuchtet. Dieses Verhalten hat also offenbar etwas mit dem Taktsignal zu tun. Doch was passiert da genau?
Taktzyklus
Einfach erklärt, schaltet der Taktgeber im Wechsel ein HIGH / LOW Signal in einer bestimmten Frequenz. Dies entspricht einem Wechsel zwischen An und Aus oder 1 und 0. Geschieht dieser Wechsel ohne langsam ansteigende/abschwellende Spannung über einen bestimmten Zeitraum, spricht man von einem Rechtecksignal.
Der Baustein 74HC173 reagiert auf das Taktsignal an Pin 7 wie folgt:
Ist das Eingangssignal des Taktgebers HIGH und gleichzeitig die Dateneingänge E1 und E2 LOW (also aktiv gesetzt), werden die zu diesem Zeitpunkt an den Eingängen D0-D3 anliegenden Zustände gespeichert und auf den Ausgängen Q0-Q3 ausgegeben. War einer der Eingangswerte zu diesem Zeitpunkt HIGH, leuchtet die entsprechende LED auf.
Die gespeicherten Zustände bleiben bis zum nächsten Taktzyklus erhalten. Mit dem nächsten HIGH Impuls werden sie wieder durch die zu diesem Zeitpunkt an den Eingängen anliegenden Werte ersetzt.
Möchte man dies verhindern und die gespeicherten Zustände bis auf weiteres erhalten, setzt man die Dateneingänge E1 und E2 unmittelbar bzw. innerhalb des Zeitraumes bis zur nächsten Änderung der Eingangswerte D0-D3 auf HIGH. Die Werte bleiben nun so lange gespeichert, bis E1 und E2 wieder auf LOW gesetzt werden, unabhängig davon, wie sich die Zustände bei D0-D3 verändern sollten.
Im Versuchsaufbau „A“ sind die Dateneingänge E1 und E2 immer auf LOW, also aktiv.
Damit erklärt sich auch, warum man die Tasten je nach Taktfrequenz länger gedrückt halten muss, bis die LEDs dauerhaft leuchten. Drückt man den Taster und lässt ihn los, bevor der Taktimpuls HIGH ist, wird der anschließende Eingangswert LOW (= Taster losgelassen) gespeichert – die LED erlischt wieder.
Die Selbsthaltung ergibt sich aus der Kopplung der Datenausgänge mit den Eingängen. Wurde der Zustand einmal aufgenommen, wird die Ausgabe wieder zur Eingabe.
Versuchsaufbau B
So nützlich die Selbsthaltung hier in Verbindung mit den Tastern erscheint (einmalige Impulse werden dauerhaft gespeichert), so ist diese Form als Speicher in Computersystemen eher unpraktisch. Sinnvoller wäre es doch, im Bedarfsfall zu entscheiden, ob und wie lange Zustände gespeichert werden sollen. Genau dies erfolgt beim folgenden Versuchsaufbau „B“
In diesem Versuchsaufbau kann der Zustand der Dateneingänge E1 und E2 umgeschaltet werden (LOW: Eingang ein, HIGH: Eingang aus). Im obigen Steckbrettaufbau erfolgt dies einfach mittels Umstecken des gelben Kabels in der Mitte nach VCC oder GND (hier im Foto in GND eingesteckt). Alles weitere funktioniert so, wie bereits im Abschnitt „Taktzyklus“ beschrieben. Zudem könnte man bei dieser Schaltung auf den Reset-Taster verzichten, sofern man selbst keinen generellen „Master-Reset“ benötigt.
Für welchen Schaltungsaufbau man sich entscheidet, hängt letztendlich vom geplanten Einsatzszenario ab. In den nächsten Teilen wird es um die weitere Verarbeitung gespeicherter Zustände gehen.
Im letzten Teil habe ich den Aufbau eines 1-Bit Speichers (Flipflop) aus diskreten Bauelementen (Transistoren, Widerstände, etc.) dargestellt. In diesem Teil geht es um die erste Realisierung eines solchen Aufbaus mit einer integrierten Schaltung.
Zum Einsatz kommt hier eine integrierte Schaltung aus der 74xx-Familie, dessen Geschichte bis in die 1970er-Jahre zurückreicht. Genauer geht es hier um die Schaltung 74xx00, ein 2-fach NAND-Gatter. Zum Einsatz kommt die High speed CMOS-Version mit der Kennung „HC“, also der Baustein „74HC00“. Dieser kann mit einer Versorgungsspannung von 2-6 V betrieben werden.
Der folgende Schaltplan zeigt den Aufbau eines 2-Bit Speichers mit diesem Baustein. Ähnlich wie schon beim Aufbau aus dem ersten Teil werden die jeweiligen Zustände mittels verschiedenfarbiger LEDs dargestellt. Die erste Speicherstelle (Register 1) wird durch eine rote LED, die zweite (Register 2) durch eine grüne LED repräsentiert. Der jeweils zweite stabile Zustand („Reset“) wird wie zuvor durch eine gelbe LED angezeigt. Auch hier werden die jeweiligen Zustände mittels der Taster „Set“ und „Reset“ umgeschaltet.
Den Aufbau auf dem Steckbrett habe ich direkt mit zwei Bausteinen vorgenommen, um direkt einen 4-Bit Speicher für die folgenden Aufbauten zur Verfügung zu haben. Wie man jetzt schon gut erkennen kann, wäre der Aufbau dieser Schaltung nur mit diskreten Bauelementen allein bereits jetzt schon sehr umfangreich. Im nächsten Teil wird der (Einzelteil-) Umfang noch weiter reduziert.