Registro a scorrimento

Da Wikipedia, l'enciclopedia libera.
Alcuni integrati 74HC595, comuni registri a scorrimento in logica TTL della serie 7400 di tipo "SIPO".

I registri a scorrimento (shift register) sono componenti utilizzati nell'elettronica digitale costituiti da una catena di celle di memoria ad 1 bit interconnesse tra loro (comunemente dei flip-flop): ad ogni impulso di clock essi consentono lo scorrimento dei bit da una cella a quella immediatamente adiacente. Lo scorrimento può avvenire verso destra, verso sinistra o, in alcuni tipi detti bidirezionali, sia verso destra che verso sinistra in base allo stato di una linea di controllo: a seconda se questa linea è a un livello di 0 logico oppure di 1 logico i dati vanno in una direzione oppure nell'altra.

L'uso dei registri a scorrimento rende più agevoli le operazioni di lettura e scrittura dei dati in un sistema.

Tipi di registri a scorrimento[modifica | modifica sorgente]

Registri SISO[modifica | modifica sorgente]

Nei registri SISO (serial input-serial output) è presente un solo terminale di ingresso quindi i bit vengono caricati uno alla volta (forma seriale): alla prima transizione attiva del segnale di clock il dato presente sull'ingresso viene trasferito all'uscita della prima cella, al successivo impulso il dato passa alla seconda cella e così via fino all'uscita dell'ultima cella di memoria dove i dati vengono letti anche in questo caso uno alla volta, quindi sempre in forma seriale.

Registri SIPO[modifica | modifica sorgente]

Nei registri SIPO (serial input-parallel output) i dati vengono caricati sempre in forma seriale però sono prelevati contemporaneamente, in qualsiasi istante sulle uscite delle varie celle di memoria, quindi l'uscita è di tipo parallelo.

Registro a scorrimento SIPO a 4 bit


Registri PISO[modifica | modifica sorgente]

I registri PISO (parallel input-serial output) consentono il caricamento dei dati in forma parallela. Gli N bit della parola da memorizzare vengono applicati agli N terminali di ingresso dati del registro, in questo tipo di registri è presente un ingresso di controllo che dà l'abilitazione al caricamento dei dati, se il terminale di abilitazione è a 0 (write) alla prima transizione del segnale di clock i flip-flop memorizzano i dati impostati, naturalmente lo stato dei terminali di ingresso deve rimanere stabile finché l'ingresso di controllo è basso per evitare la scrittura di dati errati, terminata l'operazione l'ingresso di controllo viene portato a 1 (shift). A questo punto i dati vengono prelevati in forma seriale sull'uscita dell'ultima cella di memoria durante gli N cicli di clock successivi.

Registro a scorrimento PISO a 4 bit

L'animazione qui sotto mostra la sequenza scrittura/scorrimento con il relativo stato interno del registro

4-Bit PISO Shift Register Seq.gif


Registri PIPO[modifica | modifica sorgente]

Nei registri PIPO (parallel input-parallel output) sia il caricamento che la trasmissione dei dati avviene in forma parallela.

Applicazioni[modifica | modifica sorgente]

Le applicazioni in cui i registri a scorrimento sono indispensabili sono molteplici.

Per esempio quando sia necessario trasferire i dati da un elaboratore ad una periferica bisogna spesso operare una conversione di formato da parallelo a seriale e viceversa: in un sistema digitale, infatti, i bit vengono solitamente trasferiti in forma parallela ma se i due sistemi sono separati da distanze significative può non risultare conveniente utilizzare tante linee di trasmissione quanti sono i bit da inviare, ma si preferisce trasferire i bit serialmente uno alla volta. In questi casi i registri possono realizzare una conversione da parallelo a seriale dei dati e viceversa ovviamente sincronizzando opportunamente i segnali di controllo in modo da non avere errori di scrittura e di lettura nei registri.

Inoltre possono essere utilizzati per variare la velocità di trasferimento dei dati seriali su una linea nel caso in cui un dispositivo lento debba trasferire dei dati ad un dispositivo più veloce, i bit che arrivano dal dispositivo lento vengono memorizzati nel registro per poi essere inviati con una frequenza superiore a quello più veloce.

Un'altra applicazione può essere quella di utilizzare un registro a scorrimento come linea di ritardo per far pervenire ad un elemento di un sistema un segnale con un certo ritardo rispetto al momento in cui viene generato, la durata del ritardo può essere variata cambiando la frequenza del clock oppure prelevando il segnale su una diversa uscita del registro.