Registre à décalage
Vue d'ensemble
- Objectif : Le registre à décalage est un circuit logique séquentiel qui stocke des données binaires et décale son contenu d'une position de bit à chaque impulsion d'horloge. Il peut déplacer les données vers la gauche ou vers la droite, permettant la manipulation et le stockage séquentiels des données.
- Symbole : Le registre à décalage est représenté par un bloc rectangulaire avec des entrées pour les données (série et parfois parallèle), l'horloge, la réinitialisation et le contrôle de mode, avec des sorties pour les données stockées/décalées.
- Rôle dans DigiSim.io : Sert de composant essentiel pour la conversion de données entre les formats série et parallèle, le stockage de données et les applications de traitement du signal dans les conceptions de circuits numériques.

Description fonctionnelle
Comportement logique
Le registre à décalage stocke et manipule les données binaires en décalant les bits stockés dans une direction spécifiée à chaque impulsion d'horloge. Selon le type, il peut charger les données en série (un bit à la fois) ou en parallèle (tous les bits simultanément), et peut sortir les données au format série ou parallèle.
Modes de fonctionnement typiques :
| Contrôle de mode | Fonction | Description |
|---|---|---|
| 00 | Maintien | Maintient l'état actuel |
| 01 | Décalage à droite | Décale les bits à droite, nouveau bit entre par la gauche |
| 10 | Décalage à gauche | Décale les bits à gauche, nouveau bit entre par la droite |
| 11 | Chargement parallèle | Charge tous les bits simultanément |
Exemple de table de vérité (registre à décalage universel 4 bits) :
| CLK | DIR | S/L | SI | D3 | D2 | D1 | D0 | Q3 (suivant) | Q2 (suivant) | Q1 (suivant) | Q0 (suivant) | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d3 | d2 | d1 | d0 | d3 | d2 | d1 | d0 | Chargement parallèle |
| ↑ | 0 | 0 | si | X | X | X | X | si | Q3 | Q2 | Q1 | Décalage à droite |
| ↑ | 1 | 0 | si | X | X | X | X | Q2 | Q1 | Q0 | si | Décalage à gauche |
| ↓ | X | X | X | X | X | X | X | Q3 | Q2 | Q1 | Q0 | Pas de changement |
Remarque : ↑ représente un front d'horloge montant, ↓ front descendant, X « peu importe », si entrée série, dn entrée de données parallèles. Qn est l'état actuel.
Entrées et sorties
Entrées (8 au total) :
- SI (Serial Input) : entrée 1 bit pour la saisie de données série.
- CLK (Clock) : entrée 1 bit ; les opérations se produisent sur le front montant.
- DIR (Direction) : entrée 1 bit ; contrôle la direction de décalage (0 = droite, 1 = gauche) lorsque S/L est à 0.
- S/L (Shift/Load) : entrée 1 bit ; contrôle de mode (0 = décalage, 1 = chargement parallèle).
- D0, D1, D2, D3 : quatre entrées de données parallèles 1 bit pour le chargement simultané des données lorsque S/L est à 1.
Sorties (5 au total) :
- Q0, Q1, Q2, Q3 : quatre sorties parallèles 1 bit représentant les bits actuellement stockés du registre.
- SO (Serial Output) : sortie 1 bit. Le comportement dépend de la direction de décalage :
- Pendant le décalage à droite (DIR=0) : SO reflète généralement Q0.
- Pendant le décalage à gauche (DIR=1) : SO reflète généralement Q3.
Paramètres configurables
- Largeur de bits : le nombre de bits que le registre à décalage peut stocker (généralement 4, 8, 16, etc.).
- Direction de décalage : si le registre décale à gauche, à droite ou est bidirectionnel.
- Type : la configuration du registre (SISO, SIPO, PISO, PIPO ou universel).
- Sensibilité au front d'horloge : si le registre réagit aux fronts montants ou descendants de l'horloge.
- Délai de propagation : le temps que mettent les sorties à changer après un événement déclencheur.
Représentation visuelle dans DigiSim.io
Le registre à décalage est affiché sous la forme d'un bloc rectangulaire avec des entrées étiquetées sur le côté gauche (SI, D0-D3, CLK, DIR, S/L) et des sorties (Q0-Q3, SO) sur le côté droit. L'entrée d'horloge est généralement marquée d'un symbole triangulaire indiquant la sensibilité au front. Lorsqu'il est connecté dans un circuit, le composant indique visuellement son état actuel via les valeurs affichées sur ses sorties et les changements de couleur sur les fils de connexion.
Valeur pédagogique
Concepts clés
- Traitement séquentiel des données : démontre comment les données peuvent être traitées un bit à la fois en séquence.
- Conversion série-parallèle : illustre la transformation entre les formats de données séquentiels et simultanés.
- Stockage temporel : montre comment les systèmes numériques peuvent stocker et retarder les données dans le temps.
- Fonctionnement synchronisé : renforce la compréhension des systèmes numériques synchrones.
- Communication numérique : introduit les concepts fondamentaux de la transmission de données numériques.
Objectifs d'apprentissage
- Comprendre les principes du stockage et de la manipulation séquentiels de données.
- Apprendre comment les systèmes numériques convertissent entre les formats de données série et parallèle.
- Reconnaître les différents types de registres à décalage et leurs applications.
- Appliquer les concepts de registres à décalage pour résoudre des problèmes de gestion de données dans les circuits numériques.
- Comprendre le rôle des registres à décalage dans les protocoles de communication numérique.
Exemples d'utilisation / Scénarios
- Communication série : conversion entre données parallèles dans un microprocesseur et données série pour la transmission.
- Lignes à retard : création de retards numériques précis pour des applications de traitement du signal.
- Mise en tampon de données : stockage temporaire de bits de données avant leur traitement.
- Génération de motifs : création de motifs de bits répétitifs pour des tests ou des affichages.
- Filtres numériques : implémentation de filtres à réponse impulsionnelle finie (FIR) pour le traitement du signal.
- Pilotes d'affichage : contrôle d'écrans à matrice LED/LCD avec des lignes de contrôle limitées.
Notes techniques
- Les registres à décalage sont généralement implémentés à l'aide de bascules D, avec une bascule par bit de stockage.
- La fréquence de fonctionnement maximale est limitée par le délai de propagation à travers la chaîne de bascules.
- Les registres à décalage universels offrent le plus de flexibilité mais nécessitent plus d'entrées de contrôle et de logique interne.
- Les registres à décalage à rétroaction linéaire (LFSR) sont des configurations spéciales utilisées pour la génération de nombres pseudo-aléatoires et les calculs CRC.
- Dans DigiSim.io, les registres à décalage modélisent un comportement typique déclenché sur front avec un retour visuel clair des opérations de décalage.
- Plusieurs registres à décalage peuvent être mis en cascade pour gérer des largeurs de données plus grandes que celles fournies par un seul composant.
Types de registres à décalage
Série-In, Série-Out (SISO)
- Les données entrent un bit à la fois et sortent un bit à la fois
- Agit comme une ligne à retard ou un élément de mémoire numérique
Série-In, Parallèle-Out (SIPO)
- Les données entrent en série mais sont accessibles en parallèle
- Utilisé pour la conversion série-parallèle
- Courant dans les interfaces de communication (UART, SPI)
Parallèle-In, Série-Out (PISO)
- Les données se chargent en parallèle mais sortent en série
- Utilisé pour la conversion parallèle-série
- Essentiel dans les systèmes de transmission de données
Parallèle-In, Parallèle-Out (PIPO)
- Les données entrent et sortent en parallèle
- Fournit un stockage temporaire et peut décaler les données
- Utilisé pour la mise en tampon de données entre systèmes
Registres à décalage bidirectionnels
- Peuvent décaler les données à gauche ou à droite
- Permettent une manipulation flexible des données
Registres à décalage universels
- Prennent en charge plusieurs modes de fonctionnement (tous les précédents)
- Configurables via des entrées de contrôle
- Offrent une flexibilité maximale
Modes de fonctionnement
| Contrôle de mode (S/L, DIR) | Fonction | Description |
|---|---|---|
| 1, X | Chargement parallèle | Q[3:0] = D[3:0] |
| 0, 0 | Décalage à droite | SI → Q3, Q3 → Q2, Q2 → Q1, Q1 → Q0 |
| 0, 1 | Décalage à gauche | Q2 → Q3, Q1 → Q2, Q0 → Q1, SI → Q0 |
Table de vérité (registre à décalage universel 4 bits)
| CLK | DIR | S/L | SI | D3 | D2 | D1 | D0 | Q3 (suivant) | Q2 (suivant) | Q1 (suivant) | Q0 (suivant) | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | X | 1 | X | d3 | d2 | d1 | d0 | d3 | d2 | d1 | d0 | Chargement parallèle |
| ↑ | 0 | 0 | si | X | X | X | X | si | Q3 | Q2 | Q1 | Décalage à droite |
| ↑ | 1 | 0 | si | X | X | X | X | Q2 | Q1 | Q0 | si | Décalage à gauche |
| ↓ | X | X | X | X | X | X | X | Q3 | Q2 | Q1 | Q0 | Pas de changement |
Remarque : ↑ représente un front d'horloge montant, ↓ front descendant, X « peu importe », si entrée série, dn entrée de données parallèles. Qn est l'état actuel.
Caractéristiques
- Capacité de bits : généralement 4, 8 ou 16 bits (peut être de toute longueur)
- Direction de décalage : gauche/droite/bidirectionnelle selon la configuration
- Exigences d'horloge : fonctionnement synchrone sur les fronts d'horloge
- Timing : le délai de propagation limite la fréquence de décalage maximale
- Échantillonnage : données d'entrée échantillonnées au front d'horloge actif
- Comportement de réinitialisation : efface généralement tous les bits à zéro
- Options de preset : certains registres permettent une mise à des valeurs initiales
- Contrôle de flux de données : peut inclure des fonctions d'activation/désactivation
- Exigences de consommation : proportionnelles au nombre de bascules et à la fréquence d'horloge
Applications
Conversion de données
- Conversion série-parallèle et parallèle-série
- Interface entre bus série et processeurs parallèles
Communication numérique
- Interfaces UART, SPI, I2C
- Opérations d'encodage/décodage
- Tramage de bits et formatage de données
Traitement du signal
- Filtres numériques (filtres FIR)
- Lignes à retard pour le traitement numérique du signal
- Opérations de corrélation et de convolution
Stockage de données
- Stockage tampon temporaire
- Génération et reconnaissance de motifs de bits
Systèmes informatiques
- Opérations de décalage/rotation du CPU
- Génération et vérification CRC
- Génération de séquences pseudo-aléatoires
Systèmes d'affichage
- Multiplexage d'affichage LED/LCD
- Affichages défilants
- Distribution de données aux panneaux d'affichage
Timing et contrôle
- Génération de séquences
- Timing et contrôle d'événements
Implémentation
Les registres à décalage peuvent être implémentés à l'aide de :
Chaînes de bascules :
- Bascules D (les plus courantes)
- Bascules JK
- Configurations maître-esclave
Circuits intégrés :
- Série 74xx :
- 7491 : SISO 8 bits
- 74164 : SIPO 8 bits
- 74165 : PISO 8 bits
- 74194/74195 : universel 4 bits / accès parallèle 4 bits
- 74299 : universel 8 bits
- Série 74xx :
À base de mémoire :
- Configurations de mémoire FIFO
- Implémentations de tampon circulaire (ring buffer)
- LUT de registres à décalage dans les FPGA
Implémentation du circuit
Un registre à décalage série-in, série-out 4 bits de base :
### Registre à décalage série-in, série-out (SISO)
```mermaid
graph LR
SIN[Serial In] --> FF0[D FF0]
CLK[Clock CLK] --> FF0
FF0 -->|Q0| FF1[D FF1]
CLK --> FF1
FF1 -->|Q1| FF2[D FF2]
CLK --> FF2
FF2 -->|Q2| FF3[D FF3]
CLK --> FF3
FF3 -->|Q3| SOUT[Serial Out]
Composants associés
- Registres : stockage de données à usage général
- Compteurs : circuits séquentiels qui comptent les impulsions
- Bascules : blocs de construction de base pour les registres à décalage (D, JK)
- Multiplexeurs : souvent utilisés dans les conceptions de registres à décalage universels
- Interfaces de communication série : UART, SPI, I2C
- Registres à décalage à rétroaction linéaire : pour la génération de séquences pseudo-aléatoires
- Décaleurs en barillet (barrel shifters) : pour les décalages multi-bits en un seul cycle
- Tampons FIFO/LIFO : structures avancées de stockage de données
- Filtres numériques : utilisent des registres à décalage pour implémenter des lignes à retard
- Détecteurs de séquence : circuits de reconnaissance de motifs