12.2 Register

Ein Register ist ein Bündel von n gleichen Flipflops, die alle mit dem selben Takt arbeiten und bei denen sowohl der Dateneingang wie der Datenausgang als Bündel von je n Bits behandelt wird:

drawdreg

Das Verhalten des Registers entspricht dem des benutzten Flipfloptyps. Das Zeitverhalten wird auf der R-T-Ebene für alle Flipflops als gleich angenommen. Das Register hat also eine Voreinstell- und eine Haltezeit wie die seiner Komponenten.

Neben den einfachen Datenregistern, die als Zwischenspeicher von n-Bit-Wörtern dienen gibt es die Schieberegister. Ein n-Bit-Rechts-Schieberegister ist ein spezielles getaktetes Schaltwerk, für dessen Zustandsbits gilt:

 z1,next = x                       
 zi,next = zi-1   (i=2,...,n)   

Die Ausgabe kann sein:

yi = zi i (paralleler Ausgang von n Bits)

oder nur y = zn (serieller Ausgang, 1 Bit)

Die Realisierung dieses Schieberegisters ist sehr einfach. Es ist nur jeweils der Dateneingang des i-ten Flipflops mit dem Ausgang des (i-1)-ten Flipflops zu verbinden. Das Zustandsdiagramm dieses fast trivialen Schaltwerks ist überraschend komplex, wie das folgende Beispiel des 4-Bit-Schieberegisters zeigt:

fsmshiftregister(4)

Deutlich aufwändiger ist ein Schieberegister, welches gesteuert durch ein Inputbit S in beide Richtungen schieben kann. Üblich ist in diesem Fall das parallele Laden aller Flipflops über einen entsprechend breiten Dateneingang D. Geladen wird, wenn das Inputbit L gesetzt ist. Es muss vor jedem D-Eingang der Flipflops ein 3-zu-1-Multiplexer sein, mit dem das aktuell zu speichende Bit gewählt werden kann:

 zi,next = L'∩(s'∩zi-1  s∩zi+1) | L∩Di   (i=1,...,n)   

Wir sehen uns solch ein Links-Rechts-Schieberegister mit parallelem Laden wieder am einfachen Fall von n = 4 an. Die Flusstafel würde aber mit den 6 Inputbits S, L, D1, D2, D3, D4 sehr unübersichtlich werden. Wir verzichten deshalb in der Graphik auf die D-Bits und laden mit L = 1 zufällige Bitmuster:

fsmleftrightsr

Man kann die vierte Codierung der Eingabe L=1; S=1 verwenden, um das Schieben und das Laden gleichzeitig zu unterbinden. Dadurch erhält man an jedem Zustand eine Schlinge (hier ist n=4 fest vorgegeben):

fsmlrsshiftregister

Schieberegister sind wichtig bei der Realisierung der Multiplikation. Ein Schritt nach links entspricht der Multiplikation mit 2, ein Schritt nach rechts der Division durch 2.

Unter einer Registerbank versteht man eine meist kleine Zahl (4 ... 32) von gleichen Datenregistern, die über einen gemeinsamen Zugriffskanal verfügen.