2.1.1 Register
Das Register ist die gesuchte Funktionseinheit zum Speichern eines Binärwortes. Jeder Computer besitzt
mehrere Register. Ein Register kann ein Binärwort für beliebig lange
Zeit speichern. Dieses Binärwort darf maximal aus n Bits bestehen, man sagt dann "das Register hat die
Breite n". Das folgende Bild zeigt eine schematische Ansicht eines Registers, wie sie ähnlich auch in
den Applets erscheinen wird:
Vereinfacht
gesagt funktioniert das Register so: Es enthält zu jeder Zeit einen Wert (hier: 0000 hexadezimal,
also das 16bittige Binärwort 0000 0000 0000 0000). Dieser Wert bleibt konstant, bis die Taktleitung aktiviert
wird. Vorher ist es für das Register also unerheblich, ob der Dateneingang seinen Wert ändert! Damit
wäre es möglich, mehreren Registern denselben Dateneingang zu geben, über
die Taktleitung würde man dann auswählen, welches Register (keines, eines,
mehrere, alle) ein neues Binärwort beachten würde.
Sobald die Taktleitung aktiviert wurde, übernimmt das Register den neuen Wert. Der
neue Wert ist "sofort" am Datenausgang zu sehen. Der Datenausgang sendet immer
und jederzeit den Wert des Registers aus. Deswegen können übliche Register nicht einfach mit den Ausgängen
zusammengeschaltet werden - weil die Bits der Binärwörter auf der Ebene elektrischer Schaltungen durch
elektrische Spannungen repräsentiert werden, wäre ein Kurzschluss die Folge, sobald zwei Register nicht
den gleichen Wert enthalten! Ein solcher Konstruktionsfehler in der Hardware kann, anders als ein Softwarefehler,
einen Rechner dauerhaft beschädigen.
Mit der Reset-Leitung kann das Register auf einen fest in der Hardware "verdrahteten"
Wert zurückgesetzt werden. Wenn diese aktiviert wird, ignoriert das Register den Daten-
und Takteingang und nimmt "sofort" seinen Reset-Wert an (z.B. FFFF hexadezimal).
Wer diese grundlegende Funktionsweise des Registers verstanden hat, erwartet sicherlich einige dieser Ergänzungen:
- Das verwendete Symbol für das Register, wie es auch in allen folgenden Applets vorkommen wird, entspricht
dem eines sogenannten Flipflops (genauer gesagt eines vorderflankengesteuerten D-Flipflops). Ein Flipflop ist quasi
ein Mini-Register zur Speicherung genau eines Bits. Anders herum gesagt, ein Register der Breite n besteht aus
n unabhängigen Flipflops, von denen jedes mit einem anderen Bit des Dateneingangs und -ausgangs verbunden
ist, die aber alle die gleichen Takt- und Reset-Signale benutzen.
Wenn das Register die Breite n hat, müssen natürlich Datenein- und -ausgang die Breite n haben, d.h.
sie bestehen aus n unabhängigen "Leitungen", von denen jede den Wert 0 oder 1 annehmen kann.
- Die Taktleitung ist nur ein Bit breit, kann also (wenn wir auf dem Feld der booleschen
Logik bleiben) nur zwei Werte annehmen. Wider Erwarten gibt es damit vier signifikante Zustände
des Taktsignales, sofern man die Zeit mit einbezieht:
- Das Taktsignal ist 1.
- Das Taktsignal ist 0.
- Das Taktsignal hat gerade den Wert von 0 auf 1 gewechselt.
- Das Taktsignal hat gerade den Wert von 1auf 0 gewechselt.
- Einer dieser Zustände wird als "aktiv", die anderen als "inaktiv" definiert. Welcher
davon für "aktiv" steht, ist prinzipiell egal, wird aber natürlich bei der Herstellung des
Registers festgelegt und muß bei seiner Benutzung bekannt sein. Komponenten, die auf einen bestimmten Wert
des Taktsignals warten, werden als (takt)pegelgesteuert bezeichnet, diejenigen, die auf den Wechsel
des Wertes reagieren als (takt)flankengesteuert. Ein pegelgesteuertes Register kann mit einem high-aktiven
Taktsignal verbunden sein (1 gilt als "aktiv"), oder mit einem low-aktiven, ein flankengesteuertes
Register wartet auf die Vorderflanke (Wechsel von 0 nach 1) oder die Rückflanke. Am gebräuchlichsten
sind flankengesteuerte Register, weil sie stets nur für ein kurzes Zeitintervall "scharf" sind.
- Entsprechend wird "aktiv" für die Reset- und andere Leitungen definiert.
- Auch wenn die Dateneingänge mehrerer Register verbunden sein sollen, wählt
man üblicherweise nicht über die Taktleitungen aus, welche(s) Register ein neues Binärwort
übernehmen soll(en). Aus Gründen des Zeitverhaltens (timing) der Signale (Takt, Bits der Binärwörter)
und Komponenten (siehe die nächsten beiden Punkte) ist es klug, die Taktleitungen mit so wenig Logik wie möglich
zu versehen. Normalerweise wird der Takt-Eingang für alle Register gleichzeitig in regelmäßigen
Abständen aktiv (daher sein Name); welches Register seinen Wert behält, und welches einen neuen
aufnimmt, wird dann über eine zusätzliche write enable-Leitung geregelt.
- Korrekt muß es heißen: Sobald die Taktleitung aktiviert wurde, beginnt
das Register damit, den neuen Wert zu übernehmen. Gleichgültig nämlich, ob der Wert des im Register
abgelegten Binärwortes in der "realen Welt" als elektrische Spannungen, Wasserstand in einem Behälter
oder Anzahl Steinchen in einem Pappkarton repräsentiert wird, kann er sich nicht unendlich schnell ändern.
Jede Komponente eines Rechners will im Rahmen eines für sie typischen timings angesprochen sein, damit
sie wie vorgesehen funktioniert. Bei einem Register heißt das: Der Wert des Dateneinganges muß unverändert
bleiben:
- für die sogenannte Haltezeit (hold time) nachdem der Takteingang aktiv wurde
- für die sogenannte Voreinstellzeit (setup time) bevor der Takteingang aktiv wird
- Korrekt muß es heißen: Der neue Wert des Registers ist nach einer typischen
Verzögerungszeit (propagation delay) am Datenausgang zu sehen. Eine entsprechende Zeit vergeht auch,
bevor nach einem reset des Registers der Standardwert am Datenausgang erscheint.
Nach soviel Theorie folgt auf der nächsten Seite die Praxis - mit einem Java-Applet kann ein Beispielregister
bei der Arbeit beobachtet und gesteuert werden.
Bei Aufruf der HTML-Seite wird das Applet automatisch gestartet, auch wenn das graue
Rechteck, in das es zeichnet, noch nicht zu sehen ist. Bitte haben Sie bei langsamen Internet-Verbindungen etwas
Geduld! Sobald das Applet betriebsbereit ist erscheint ein Fenster (das Bild zeigt das typische Aussehen unter
MS Windows):
Es ist sinnvoll, spätestens jetzt auf der Seite nach unten zu scrollen, bis das Applet sichtbar
wird. Experimentieren Sie nun einfach mit den verschiedenen Knöpfen und Einstellungen im Fenster "Register
steuern", beachten Sie aber die Tips und Hinweise auf der nächsten Seite.
|
|
Carsten Kelling 1996 (); letzte Änderung: 17. September 1997 |