Introduction
En électronique et en informatique, un registre à décalage est un registre de taille fixe dans lequel les bits sont décalés à chaque coup d'horloge (dans le cas d'un système synchrone sur l'horloge).
Un registre à décalage est en général constitué d'un chaînage de bascules synchronisées sur l'horloge, la sortie d'une bascule étant reliée à l'entrée de la suivante. Il se décline en plusieurs variantes :
- SIPO (Serial In - Parallel Out)
- SISO (Serial In - Serial Out)
- PISO (Parallel In - Serial Out)
- PIPO (Parallel In - Parallel Out)
Les entrées ou sorties en parallèle permettent d'insérer et de récupérer plusieurs bits en même temps. Prenons exemple d'une information de 4 bits (ex: 1001).
- Parallèle réfère à 4 fils qui renvoient chacun un bit. Donc, le premier fil renvoi "1" en même temps que le deuxième renvoi "0" ainsi de suite.à
- Série réfère à 1 fil qui envoi "1" suivi de "0" et de "0" et enfin de "1". Le système série prend donc moins de fils mais plus de temps.
Signalons également l'existence de registres à décalage réversibles, càd. de registres où le décalage s'effectue vers la droite ou vers la gauche en fonction du niveau logique appliqué à l'entrée "Sens de décalage".
Exemples d'applications
- SISO : L'information que l'on veut introduire dans le registre est présentée à l'entrée de la première bascule. Lors d'une impulsion d'horloge, le bit d'information est introduit dans le registre, et tous les autres bits sont décalés. Le bit qui était mémorisé dans la dernière bascule est perdu s'il n'est pas stocké ou réinséré dans la structure d'une manière quelconque. Les registres SISO sont utilisés pour réaliser des lignes à retard numériques. Le délai entre l'entrée de l'information dans le registre et sa sortie dépend du nombre de bascules et de la fréquence d'horloge.
- PIPO : En décalant tous les bits d'un nombre binaire vers la droite ou vers la gauche, on divise ou on multiplie le nombre par 2. Un registre PIPO peut donc être utilisé pour effectuer des calculs (multiplication ou division par une puissance de 2). Il suffit d'opérer le nombre adéquat de décalages vers la gauche ou la droite entre le moment où l'on introduit les bits dans le registre et le moment où on les récupère.
- PISO et SIPO : Ces deux types de registres sont utilisés dans les liaisons série ; ils forment la base des UART et des modems. Imaginons que l'on veuille transmettre une information entre deux ordinateurs distants de quelques mètres ou dizaines de mètres. Transmettre l'information sous forme "parallèle" nécessiterait au moins 9 fils (8 pour les 8 bits, un pour la masse), sans compter les fils supplémentaires pour le dialogue entre les ordinateurs. Il est plus simple d'employer un registre PISO pour envoyer les bits constituant chaque octet que l'on désire transmettre en une suite de 8 bits apparaissant l'un après l'autre sur une seule ligne. Au bout de la ligne, un registre SIPO reçoit les bits qui arrivent à la queue-leu-leu et reconstitue des octets qui sont transmis à l'ordinateur de destination.
- Registres SISO réversibles : Ils permettent par exemple de réaliser ce que l'on appelle des piles LIFO (Last In, First Out) : on charge les bits dans le registre ; puis on inverse le sens du décalage. Les bits apparaissent à la sortie de la première bascule dans l'ordre inverse de leur entrée.