Transmission-Gate und DLatch

 

Transmission-Gate

Das Transmission-Gate arbeitet wie ein Schalter und besteht aus einer Parallelschaltung von einen NMOS-Transistor mit einen PMOS-Transistor. Nachstehendes Bild veranschaulicht den Aufbau:

 

t.gif (2141 Byte)

 

Um das Transmissions-Gate als Schalter zu verwenden, müssen die Gates des NMOS- und PMOS-Transistors entgegengesetzt angesteuert werden. Dies kann durch einen simplen Inverter realisiert werden. Wird der NMOS-Transistor mit C (Clock) angesteurt, so wird der PMOS in der selben Zeit mit nC (not Clock) gefahren. Zur Vereinfachung wird im folgenden sich nur noch auf das Gate des NMOS-Transitors C bezogen, dh. die Umwandlung von C in nC des PMOS-Transitor-Gates wird als gegeben vorausgesetzt. Diese Vorgehensweise wurde auch bei dem Schaltsymbol für das Transmission-Gate verwendet. Es wird nur noch ein C-Signal angegeben. Die interne Umsetzung wird als gegeben vorausgesetzt. Gehen wir von folgenden Grundzustand aus: C liegt auf logisch 0. Daraus folgt, daß der NMOS-Transitor gesperrt ist. Gleiches folgt für den PMOS-Transitor mit inverser Ansteurung. Wird nun C von logisch 0 auf logisch 1 geschaltet, so werden beide Transistortypen gleichzeitig leitend und es kann ein Signal durchgeschaltet werden. Das Transmission-Gate ist ein Zweirichtungsschalter.

Es stellt sich nun die Frage, wozu der ganze Aufwand? Man könnte doch theoretisch auch nur einen Transitortypen verwenden und diesen dazu noch viel einfacher ansteuern! Transitoren haben im gesperrten Zustand einens sehr hohen Widerstand. Im leitenden Zustand muß man jedoch differenzieren. Ein NMOS-Transitor, dessen Source-Kontakt nahe GND liegt (bei digitalen Gattern wie NAND or NOR etc der Fall), leitet gut. Wird jedoch die Spannung am Source bei einen NMOS-Transitor gegen Vcc angehoben, kommt es über den Transistor zu einen nicht unerheblichen Spannungsabfall. Eine Reihenschaltung von NMOS-Transitoren, die digital Schalten (also GND zu Vcc und wieder zurück) sollen, würden logisch 0 gut übertragen, jedoch logisch 1 würde sehr verstümmelt oder gar nicht mehr am Ende der Reihenschaltung herauskommen. Gleiches gilt für einen PMOS-Transitor, der nahe Vcc betrieben wird (bei digitalen Gattern wie NAND or NOR etc der Fall). Würde man bei diesen Transitor die Source-Spannung von 5V gegen GND bewegen, so würde es auch hier zu einen nicht unerheblichen Spannungsabfall kommen. Das Transmission-Gate ist eine geschickte Anordnung, die die Schwächen des einen Transistors mit den Vorteilen des anderen Transistors ausnutzt. Dazu ein Beispiel: das Transmission-Gate ist durchgeschaltet, dh. C ist auf logisch 1. Wir wollen, daß logisch 0 von der Node left zur Node right übertragen wird. Da der Source-Kontakt vom PMOS nun auf GND liegt, kommt es zu einen Spannungsabfall über diesen Transistor. Der NMOS-Transitor überträgt jedoch fast ohne Verluste, so daß am Ausgang Node right logisch 0 ankommt. Wird nun auf der Node left logisch 1 angelegt, so verhält es sich umgekehrt. Es tritt ein Spannungsabfall über den NMOS auf, da sein Source-Kontakt auf Vcc liegt. Der PMOS-Transitor überträgt jedoch in diesem Fall fast verlustfrei, sodaß am Ausgang Node right logisch 1 anliegt. In beiden Fällen sucht sich das Signal den Weg des geringsten Widerstandes. Daher kann man Transmission-Gates ohne wesentlichen Verluste in Serie schalten. Es sei noch zu bemerken, daß man bei den Transmission-Gate den Source- und Drain-Kontakt in seiner Funktion vertauschen kann. Daher kommt auch die Benennung der Ein- und Ausgänge: left und right. Es ist egal von welcher Richtung aus das Signal kommt.

Das nachstehende Java-Applet veranschaulicht die Funktionsweise des Transmission-Gates:

 

Applett nicht unterstützt

 

DLatch

Erst durch das Transmission-Gate läßt sich ein besonderes Bauteil realisieren: das DLatch. Das DLatch ist ein Speicherelement und funktioniert auf Basis einer feedback logic. Der Aufbau ist wie folgt:

 

dlatch.gif (3722 Byte)

 

Um die prinzipielle Funktionsweise des DLatch heraus zu arbeiten, denken wir uns zuerst die Transmission-Gates weg. Es bleiben zwei Inverter. Der Ausgang dieser Inverterkette ist mit seinem Eingang verbunden. Setzen wir nun den Ausgang auf logisch 1. Diese Information wird an den Eingang zurückgeführt. Der erste Inverter invertiert nun dieses Signal zuerst zu logisch 0. Diese Information wird durch den zweiten Inverter wieder zu logisch 1 invertiert und es steht die gleiche Information wieder am Ausgang wie zuvor. Diese Anordnung bleibt stabil und funktioniert für den logischen Level 0 und 1. Diese Anordnung kann man auch als  Speicherschleife bezeichen. Das DLatch ermöglicht nun, Information gezielt einzulesen und dann auf den Speicherbetrieb umzuschalten.

Gehen wir von folgenden Zustand aus. Das Clk-Signal ist auf logisch 1 und somit ist das Transmission-Gate am Eingang des DLatches durchgeschaltet (man sagt auch transparent) und das zweite Transmission-Gate sperrt (man sagt auch opaque). Die Information, die am Eingang IN anliegt, wird über die zwei Inverter an den Ausgang OUT durchgeschaltet. Eine Änderung am Eingang wirkt sich somit unmittelbar auf den Ausgang aus, da ja das Signal nur über zwei Inverter läuft. Nun Schalten wir das Clk-Signal von logisch 1 auf logisch 0 und gehen somit in den Speicherbetrieb. Das Transmission-Gate am Eingang wird nun opaque und das zweite Transmission-Gate wird transparent und schließt somit die Feedback-Schleife der Inverterkette. Durch dieses Umschalten ist somit der Ausgang der Inverterkette mit den Eingang verbunden worden und wir erhalten eine Speicherschleife. Das eingelsenen Signal liegt stabil an. Andert sich nun das Signal am Eingang, so wird die gespeicherte Information nicht beeinflußt, da das Transmission-Gate am Eingang sich in einen gesperrten Zustand befindet. Schaltet das Clk-Signal nun wieder auf logisch 1, so wird die gespeicherte Information mit der Information am Eingang überschrieben.

Das DLatch hat im Vergleich zu einen herkömmlichen SR-Flip-Flop folgenden Vorteile: um ein SR-Flip-Flip zu realisieren, benötigt es zwei NAND- oder zwei NOR-Gates plus Taktflankensteuerung, so daß sich die Transistorzahl auf 16 Transistoren erhöht. Das DLatch benötigt hingegen nur 8 Transistoren plus 2 Transistoren, wenn das notClk durch einen Inverter zusätzlich generiert werden muß. Die Geschwindigkeit des DLatch hängt nur von der Laufzeit des Signals durch die zwei Inverter ab. Bei einen 1.2mm-Prozeß liegt die Laufzeit durch einen einzelnen Inverter bei ca. 380ps. Somit ergibt sich für das DLatch für den genannten Prozeß zu 760ps.

Das nachstehende Java-Applet zeigt sehr anschaulich die Funktionsweise des DLatches.

 

Applett nicht unterstützt

 

Bringen Sie zunächst das DLatch auf einen transparenten Zustand, so daß sie eine Information einlesen können. Bringen Sie das DLatch auf Speicherbetrieb. Einen Änderung am Ausgang hat keine Auswirkung am Ausgang. Die Information bleibt stabil. Gehen Sie wieder auf einen transparenten Zustand, so bewirkt jede Änderung am Eingang eine Änderung am Ausgang.

 


Home CMOS            

karl@vlsi.bu.edu, 11.09.98