Zur Haupt­na­vi­ga­ti­on sprin­gen [Alt]+[0] Zum Sei­ten­in­halt sprin­gen [Alt]+[1]

Tor­steue­rung

Torsteuerung in MIKROSIM (eigenes Werk)

Tor­steue­rung in MI­KRO­SIM

An Stel­len, an denen der In­for­ma­ti­ons­fluss kon­trol­liert wer­den muss (vgl. Bild), be­nö­tigt man eine Steue­rung, mit denen man Daten auf einen „Bus“, eine Lei­tung, an den meh­re­re Schal­tun­gen an­ge­schlos­sen sind, legen kann.

Im Grun­de ist solch ein „Bus“ nichts wei­ter als eine Serie von par­al­le­len Da­ten­lei­tun­gen, über die ver­schie­de­ne Funk­ti­ons­ein­hei­ten („Ge­rä­te“) des Com­pu­ters mit­ein­an­der kom­mu­ni­zie­ren. Je mehr Lei­tun­gen dazu par­al­lel ge­schal­tet wer­den, umso mehr Bits kön­nen gleich­zei­tig über die­sen Bus über­tra­gen wer­den. Der klas­si­sche ISA-Bus der ers­ten IBM-PC-Ge­ne­ra­ti­on (XT) hatte eine Brei­te von 62 Lei­tun­gen, von denen 8 für Daten, 20 für Adres­sen und die rest­li­chen für Steu­er­lei­tun­gen und Strom­ver­sor­gung ge­nutzt wur­den. Wenn wir uns auf die für den Nutz­da­ten-Trans­port re­ser­vier­ten 8 Lei­tun­gen be­schrän­ken, han­delt es sich also um einen „8-Bit-Bus“. Na­tür­lich wurde die Bus­brei­te dann immer wei­ter ver­grö­ßert: auf den 8 Bit brei­ten „XT-Bus“ folg­te der 16 Bit brei­te „AT-Bus“, wel­cher wie­der­um vom 32-Bit brei­ten „EISA-Bus“ ver­drängt wurde, der dann wie­der­um dem zwar auch nur 32 Bit brei­ten, dafür aber viel schnel­le­ren „PCI-Bus“ wei­chen muss­te usw.

Die ver­schie­de­nen Ge­rä­te des Com­pu­ters grei­fen nun le­send und/oder schrei­bend auf die ein­zel­nen Bus­lei­tun­gen zu. Be­trach­ten wir ex­em­pla­risch nur eine die­ser Bus­lei­tun­gen, und stel­len wir uns vor, dass zwei Ge­rä­te an sie an­ge­schlos­sen seien. Wenn die bei­den Ge­rä­te nur Daten vom Bus lesen wol­len, dann kön­nen sie das ohne Pro­ble­me beide gleich­zei­tig tun: die Bus­lei­tung kann an (fast) be­lie­big viele Lese-Ein­gän­ge der Ge­rä­te an­ge­schlos­sen wer­den!

Pro­ble­ma­tisch wird es, wenn Ge­rä­te Daten auf den Bus schrei­ben wol­len: dann muss näm­lich si­cher ge­stellt wer­den, dass zu jeder Zeit nur (höchs­tens) ein Gerät schrei­bend auf den Bus zu­greift. Ei­ni­ge der Steu­er­lei­tun­gen der oben be­schrie­be­nen his­to­ri­schen Bus-Sys­te­me dien­ten genau die­sem Zweck.

Aber das Pro­blem ist noch ein wenig heim­tü­cki­scher: Um über­haupt ir­gend­wann auf eine Bus-Lei­tung schrei­ben zu kön­nen, muss ein Gerät einen Aus­gang mit die­ser Lei­tung ver­bin­den. Stel­len wir uns für einen Au­gen­blick vor, wir wür­den das ganz vor­sich­tig über die ein­gangs be­spro­che­ne Tor-Steue­rung ma­chen. Dann könn­te die Si­tua­ti­on etwa so aus­se­hen:

Bus-System mit Torsteuerung - naive Version (eigenes Werk)

Bus-Sys­tem mit Tor­steue­rung - naive Ver­si­on

Im ers­ten Gerät liege also das Si­gnal E1 an, das am Aus­gang A1 er­scheint, wenn das erste Gerät das Schrei­brecht hat und C1 = 1 ge­setzt ist; im zwei­ten Gerät liege E2 an, das am Aus­gang A2 er­scheint, wenn das zwei­te Gerät das Schrei­brecht hat und C2 = 1 ge­setzt ist. So­lan­ge aber C1 = C2 = 0 ist und kein Gerät schrei­ben will, ist auch A1 = A2 = 0, und die Welt ist in Ord­nung.

Wenn nun das erste Gerät das Schrei­brecht an­for­dert und er­hält, dann setzt es C1 = 1, womit dann A1 = E1 auf die Bus­lei­tung ge­schrie­ben wird. Aber halt! Die Bus­lei­tung ist ja eben­falls noch mit dem Aus­gang A2 des Ge­rä­tes 2 ver­bun­den, und dort ist stän­dig A2 = 0! Wenn das erste Gerät die erste 1 auf die Bus­lei­tung schrei­ben will, gibt es eine Ka­ta­stro­phe, weil die Bus­lei­tung von zwei Aus­gän­gen mit wi­der­sprüch­li­chen Si­gna­len ge­füt­tert wird: es wird A1 = 1 (Po­ten­zi­al 5V) und gleich­zei­tig A2 = 0 (Po­ten­zi­al 0V) ge­for­dert. Das führt zu einem Kurz­schluss!

Dies zeigt, dass wir für einen auf den Bus schrei­ben­den Aus­gang mehr Auf­wand trei­ben müs­sen als eine sim­ple Tor-Steue­rung ein­zu­set­zen. Die Aus­gän­ge A1 und A2 kön­nen nicht ein­fach nor­ma­le Aus­gän­ge lo­gi­scher Gat­ter sein, wel­che im de­ak­ti­vier­ten Zu­stand auf einem be­stimm­ten fes­ten Po­ten­zi­al lie­gen. Sie müs­sen statt­des­sen im in­ak­ti­ven Zu­stand er­lau­ben, dass die an­ge­schlos­se­ne Bus­lei­tung so­wohl eine 0 als auch eine 1 trans­por­tie­ren kann. Das ist etwa so, wie wenn A von der Bus­lei­tung ge­trennt wäre. Eine phy­si­sche Tren­nung (etwa durch einen me­cha­ni­schen Schal­ter oder ein Re­lais) würde aber den schnel­len Zu­griff auf den Bus er­schwe­ren und ver­bie­tet sich damit.

Glück­li­cher­wei­se bie­tet die CMOS-Tech­no­lo­gie eine ele­gan­te Lö­sung für die­ses Pro­blem. Schau­en wir uns dazu noch­mals einen ty­pi­schen Gat­ter­aus­gang in CMOS-Tech­no­lo­gie an:

NOT-Schaltung in CMOS-Technologie (eigenes Werk)

NOT-Schal­tung in CMOS-Tech­no­lo­gie

Wenn A = 1 ist, dann ist der Drain-Sour­ce-Wi­der­stand des un­te­ren Tran­sis­tors sehr groß, wäh­rend der des obe­ren Tran­sis­tors sehr klein ist. Wenn A = 0 ist, ist es um­ge­kehrt. Der Aus­gang ist also stets nie­der­oh­mig ent­we­der mit der 5-Volt-Lei­tung oder der 0-Volt-Lei­tung ver­bun­den, und genau das ist das Übel: im de­ak­ti­vier­ten Zu­stand soll­ten bes­ser beide Tran­sis­to­ren hoch­oh­mig sein – dann könn­te das Po­ten­zi­al der Bus­lei­tung einen be­lie­bi­gen Wert an­neh­men, ob­wohl diese noch phy­sisch mit dem (de­ak­ti­vier­ten) Aus­gang A ver­bun­den ist! Dies ist die gute Idee, die das Pro­blem lösen wird. Wir kön­nen dazu aber na­tür­lich nicht mehr beide Tran­sis­to­ren mit dem­sel­ben Gate-Si­gnal an­zu­steu­ern, son­dern müs­sen für jeden Tran­sis­tor ein ei­ge­nes Steu­er­si­gnal be­reit­stel­len. Das fol­gen­de Bild zeigt eine mög­li­che Schal­tung, die das ge­wünsch­te leis­tet:

Tri-State-Buffer für Torsteuerung (eigenes Werk)

Tri-State-Buf­fer für Tor­steue­rung

Am Ein­gang D liegt das Bit an, das am Aus­gang A auf den Bus ge­schrie­ben wer­den soll. Der Ein­gang C ent­schei­det, ob die Aus­gangs­stu­fe aktiv ist oder nicht: für C = 0 wer­den beide Aus­gangs­tran­sis­to­ren in einen hoch­oh­mi­gen Zu­stand ge­schal­tet und der Aus­gang damit de­ak­ti­viert, für C = 1 wird er ak­ti­viert und es ist dann A = D. Eine sol­che Schal­tung nennt man ein „Tri-State-Buf­fer“. Die fol­gen­de Wahr­heits­wert-Ta­bel­le hilft beim Über­prü­fen der Funk­ti­on die­ser Schal­tung:

D C G2 G1 A
0 0 1 (s) 0 (s) Hi-Z
1 0 1 (s) 0 (s) Hi-Z
0 1 1 (s) 1 (l) 0
1 1 0 (l) 0 (s) 1

In der letz­ten Spal­te be­zeich­net „Hi-Z“ den­je­ni­gen Zu­stand des Aus­gangs A, in dem die bei­den Aus­gangs­tran­sis­to­ren hoch­oh­mig sind. Es ist dies der „drit­te Zu­stand“ (neben „0“ und „1“), auf den der Name die­ser Schal­tung hin­weist. Er muss immer dann an­ge­nom­men wer­den, wenn das Gerät kei­nen Schreib­zu­griff auf die Bus­lei­tung hat: wenn beide Aus­gangs­tran­sis­to­ren hoch­oh­mig sind, kann von außen ein be­lie­bi­ges Po­ten­zi­al an­ge­legt wer­den, ohne dass durch die Tran­sis­to­ren rück­wärts ein Strom fließt.

 

 

Hin­ter­grund­in­for­ma­tio­nen: Her­un­ter­la­den [odt][4 MB]

 

Wei­ter zu Spei­che­rung von Bits