Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Contatori e registri, Sbobinature di Sistemi Digitali

Appunti di lezione del corso di sistemi elettronici digitali del corso di laurea magistrale in ingegneria elettronica del Politecnico di Bari, tenuto dalla professoressa Maria Rizzi. Descrizione e sintesi di contatori sincroni (binari, ring counter, twisted-ring counter, up and down) e asincroni, descrizione di registri SISO, SIPO, PIPO, PISO.

Tipologia: Sbobinature

2024/2025

Caricato il 15/04/2025

annunziata-d-aversa
annunziata-d-aversa 🇮🇹

4.5

(2)

23 documenti

1 / 19

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
SED F _ CONTATORI E REGISTRI
I contatori di per sè sono delle macchine sequenziali a stati finiti che hanno il compito di svolgere più di una
determinata funzione. Il compito del contatore fondamentalmente è quello di contare gli eventi distinti.
Un contatore, peró, può diventare un divisore di frequenza, ecc ed essere utilizzati per fare altro.
Si possono classificare sulla tipologia di funzionamento in sincroni e asincroni.
I contatori sincroni sono a tutti gli effetti delle macchine sincrone a tutti gli effetti, cioè fatti da una serie di flip
flop, a seconda delle specifiche del contatore, caratterizzato dal fatto che il segnale di temporizzazione,
idealmente, dovrebbe raggiungere contemporaneamente tutti gli elementi di memoria.
I contatori asincroni, invece, sono impropriamente chiamati asincroni (spesso chiamati ripple counter), perchè
non sono macchine asincrone (asincrono = non esiste un segnale di temporizzazione esterno che scandisce il
funzionamento della macchina). Hanno lo stesso un clock, ma sono asincroni perchè il clock esterno raggiunge
il primo flip flop, l’uscita del primo flip flop fungerà da clock per il secondo, ecc. Questo vuol dire che non è
una macchina asincrona (sebbene sia formata da elementi sincroni) ma gli elementi di memoria al suo interno
non commutano contemporaneamente: il contatore ripple non è nè una macchina sincrona nè una macchina
asincrona. Saranno delle macchine particolari che progetteremo con una tecnica ad hoc.
Emtrambi si differenziano sulla base del modulo : il numero massimo di eventi distinti contati.
Si possono anche differenziare sul tipo di conteggio: conteggio in avanti (ad incremento, up) che conta in
ordine crescente (0,1,2,3,…) oppure conteggio a decremento (down) che conta in ordine decrescente (…
3,2,1,0).
Il modulo da’ la lunghezza (quanti eventi distinti conta) e il conteggio da’ il verso.
Tra i contatori hanno particolare interesse i contatori decadici e i contatori binari.
Contatore decadico: un contatore modulo 10 conta da 0 a 9 e poi ricomincia o da 9 a 0 e poi ricomincia. È
un contatore BCD.
Contatore binario: affinchè si possa definire binario, si devono verificare due condizioni (devono verificarsi
entrambe).
1) il modulo deve essere una potenza del 2
2) l’uscita del contatore deve essere l’espressione in binario dell’evento contato.
Esempio:
contatore modulo 8 = la prima è vera, ma affinchè sia un contarore binario, l’uscita deve essere l’espressione in
binario del numero che sta contando. Siccome conta da 0 a 7, quindi dovrà avere 3 uscite, e quindi 3 bit in
modo tale che se sta contando l’evento 2, le uscite dovranno essere 010, quando conterà 4 dovrà essere 100.
Potrebbe essere necessario che si attivi una sola uscita che si attiva quando finisce il conteggio o quando arriva
ad un numero specifico. In quel caso diremo che il contatore ha un’uscita ripple carry out. Quando
raggiunge l’obiettivo, l’1 in uscita attivato servirà a qualcos’altro (es. attivare i termosifoni).
In alcuni casi i contatori possono non avere nessun ingresso e contare gli impulsi di clock. Altre volte
potrebbero avere degli ingressi esterni che definiscono la tipologia di conteggio, cioè per esempio quando
l’ingresso è 0 conta modulo 4, quando l’ingresso è 1 conta modulo 8; oppure quando è 0 conta up, quando è 1
conta down.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Anteprima parziale del testo

Scarica Contatori e registri e più Sbobinature in PDF di Sistemi Digitali solo su Docsity!

SED F _ CONTATORI E REGISTRI

I contatori di per sè sono delle macchine sequenziali a stati finiti che hanno il compito di svolgere più di una determinata funzione. Il compito del contatore fondamentalmente è quello di contare gli eventi distinti. Un contatore, peró, può diventare un divisore di frequenza, ecc ed essere utilizzati per fare altro. Si possono classificare sulla tipologia di funzionamento in sincroni e asincroni. I contatori sincroni sono a tutti gli effetti delle macchine sincrone a tutti gli effetti, cioè fatti da una serie di flip flop, a seconda delle specifiche del contatore, caratterizzato dal fatto che il segnale di temporizzazione, idealmente, dovrebbe raggiungere contemporaneamente tutti gli elementi di memoria. I contatori asincroni, invece, sono impropriamente chiamati asincroni (spesso chiamati ripple counter), perchè non sono macchine asincrone (asincrono = non esiste un segnale di temporizzazione esterno che scandisce il funzionamento della macchina). Hanno lo stesso un clock, ma sono asincroni perchè il clock esterno raggiunge il primo flip flop, l’uscita del primo flip flop fungerà da clock per il secondo, ecc. Questo vuol dire che non è una macchina asincrona (sebbene sia formata da elementi sincroni) ma gli elementi di memoria al suo interno non commutano contemporaneamente: il contatore ripple non è nè una macchina sincrona nè una macchina asincrona. Saranno delle macchine particolari che progetteremo con una tecnica ad hoc. Emtrambi si differenziano sulla base del modulo : il numero massimo di eventi distinti contati. Si possono anche differenziare sul tipo di conteggio : conteggio in avanti (ad incremento, up) che conta in ordine crescente (0,1,2,3,…) oppure conteggio a decremento (down) che conta in ordine decrescente (… 3,2,1,0). Il modulo da’ la lunghezza (quanti eventi distinti conta) e il conteggio da’ il verso. Tra i contatori hanno particolare interesse i contatori decadici e i contatori binari. Contatore decadico: un contatore modulo 10 conta da 0 a 9 e poi ricomincia o da 9 a 0 e poi ricomincia. È un contatore BCD. Contatore binario: affinchè si possa definire binario, si devono verificare due condizioni (devono verificarsi entrambe).

  1. il modulo deve essere una potenza del 2
  2. l’uscita del contatore deve essere l’espressione in binario dell’evento contato. Esempio: contatore modulo 8 = la prima è vera, ma affinchè sia un contarore binario, l’uscita deve essere l’espressione in binario del numero che sta contando. Siccome conta da 0 a 7, quindi dovrà avere 3 uscite, e quindi 3 bit in modo tale che se sta contando l’evento 2, le uscite dovranno essere 010, quando conterà 4 dovrà essere 100. Potrebbe essere necessario che si attivi una sola uscita che si attiva quando finisce il conteggio o quando arriva ad un numero specifico. In quel caso diremo che il contatore ha un’ uscita ripple carry out. Quando raggiunge l’obiettivo, l’1 in uscita attivato servirà a qualcos’altro (es. attivare i termosifoni). In alcuni casi i contatori possono non avere nessun ingresso e contare gli impulsi di clock. Altre volte potrebbero avere degli ingressi esterni che definiscono la tipologia di conteggio, cioè per esempio quando l’ingresso è 0 conta modulo 4, quando l’ingresso è 1 conta modulo 8; oppure quando è 0 conta up, quando è 1 conta down.

Contatori sincroni Supponiamo di voler realizzare un contatore binario sincrono mod. 4 di tipo up. Contatore sincrono = FSM sincrona Modulo 4 = conta 4 eventi distinti e poi si resette Binario = ha 2 uscite (perchè mod 4) Up = conta da 0 a 3. In genere i contatori si realizzano come macchina di Moore perchè in molti casi lo stato coincide con l’uscita. Ovviamente nulla vieta di farlo con la macchina di Mealy. Scegliamo di sintetizzarlo con flip flop di tipo T. Non ha un ingresso esterno quindi evolve sulla base degli impulsi di clock. Supponiamo di stare nello stato A caratterizzato da un’uscita 00. Arriva il primo impulso di clock: la macchina deve contare l’evento e ai deve portare in uno stato in cui ha contato un altro evento. Introduciamo un nuovo stato caratterizzato da un’uscita pari a 01. Siamo in B/01, al successivo impulso di clock dovrà cotare il 2. Quindi si passa nello stato successivo caratterizzato da un’uscita 10. Siamo in C/10, all’impulso di clock conterà 3 e va in uno stato con uscita

Al successivo impulso di clock la macchina si porta nello stato iniziale con uscita 00, si resetta, e ricomincia a contare. Non c’è bisogno di minimizzare e lo vedo dalle uscite. Siccome è una macchina completamente specificata, basiamo il concetto sull’equivalenza e alla base dell’equivalenza c’è che gli stati saranno equivalenti se hanno le stesse uscite. Qua stati con le stesse uscite non ce ne sono, quindi sicuramente la macchina è già minima. Questo non vuol dire che nessun contatore deve essere minimizzato, perchè alcuni possono avere ingressi esterni. Operiamo un assegnamento naturale. Ci sono due variabili di stato e quindi useremo 2 flip flop. Quando abbiamo un qualsiasi contatore, se lo sintetizziamo come macchina di Moore avremo sempre che lo stato coincide con l’uscita.

Se faccio un contatore binario pù complesso, non saranno tutti collegati in cascata i flip flop. Per generare la funzione di eccitazione il terzo flip flop entrerà in gioco una AND. Quindi se facciamo un contatore generico 2^n , avremo a partire dal terzo flip flop una porta and che genererà l’uscita del flip flop n-esimo e avrà come ingressi le uscite dei due flip flop precedenti. Se avessi voluto fare un contatore con uscita ripple carry out avrei avuto:

  • se ho già il contatore, metto una and con ingressi non negati e mi da uscita 1
  • se non ho il contatore, la sintesi la faccio già ripple carry dall’inizio: il contatore non sarà più binario, ma la traccia ci dirà contatore modulo 4 con uscita ripple carry out. La macchina avrà una sola uscita.

Nel caso di contatori binari, il numero di flip flop che metto, qualsiasi tipo siano, è sempre il logaritmo in base 2 del modulo. Però all’aumentare del modulo si complica un po’ il contatore, cioè viene introdotta una parte combinatoria alla parte dello schema logico, che è la parte più lenta del contatore. Esistono dei contatori veloci, privi di parte combinatoria, che hanno però alcuni limiti. Questi sono caratterizzati dall’introduzione della parte combinatoria all’aumentare del modulo. Uno di questi viene chiamato contatore ad anello. È una macchina a stati ed è una cascata di flip flop di tipo D.

  • È una macchina sincrona perchè il clock arriva contemporaneamente a tutti gli elementi di memoria.
  • È caratterizzato dal fatto che le uscite sono le uscite dei flip flop in cascata e l’uscita dell’ultimo è retroazionata in ingresso. Vediamo se è un contatore, se è un binario e qual è il suo modulo. Chiamiamo con Qa, Qb, Qc e Qd le uscite. Supponiamo di cancellare il contenuto dei flip flop e di porlo a zero. Al primo impulso di clock l’uscita del contatore i-1-esimo va nel contatore i-esimo e l’uscita del contatore i-esimo va nel contatore i+1- esimo, ecc. Se all’inizio sono tutti 0, il contatore non riesce a contare, perchè questo contatore per iniziare a contare ha bisogno che almeno uno dei flip flop deve essere presettato. Quindi, agiamo, per esempio, sul preset del primo flip flop, che avrà uscita 1 (Qa=1). All’interno del contatore c’è 1000 (condizione iniziale). Arriva il primo impulso di clock: lo zero che sta in uscita dal primo va in ingresso al secondo e shifta tutto di uno, quindi avremo 0100. Secondo impulso di clock: quello zero va in ingresso al terzo e shifta tutto di uno, avremo 0010. Terzo impulso di clock: 0001. Successivo e ultimo impulso di clock,

Notiamo quidni che è un contatore, perchè conta 4 eventi distinti e poi ricomincia: è un contatore modulo 4. È binario? Per il modulo potrebbe esserlo, ma l’uscita dovrebbe essere l’espressione binaria dell’evento contato, e non è il caso, anche perchè per contare 4 eventi distinti sono necessari 2 bit. Quindi è un contatore sincrono, modulo 4 ma non binario. Si dice che è un contatore con una codifica di tipo ONE HOT , perchè nel numero contato esiste un solo 1. Si nota che realizzare un contatore modulo 4 di tipo ring counter costa il doppio dei flip flop rispetto uno normale, ma è più veloce. Se dovessi realizzare un contatore modulo 8 ring counter dovrei utilizzare 8 flip flop.

Contatori asincroni Non ricadono nè nelle macchine sequenziali sincrone nè in quelle asincrone. Questo vuol dire che ci dobbiamo ingegnare per adattare qualcosa che già sappiamo per farlo funzionare come contatore asincrono, cioè fare in modo che conti ma che sia caratterizzato da una struttura con elementi di memoria sincroni, ma non temporizzato contemporaneamente. Supponiamo di avere una struttura composta da 3 TFF. Tutti i flip flop sono pilotati ad 1, quindi ad ogni impulso di clock commutano. Sono temporizzato in modo che il clock esterno arriva al primo elemento di memoria, quello del bit meno significativo. L’uscita di un flip flop fornirà l’uscita del contatore, ma fungerà anche da clock per il FF successivo. E così via. Supponiamo che i dispositivi siano tutti positive edge triggered e siano tutti cancellati inizialmente (0000) Sono tutti pilotati ad uno quindi ogni impulso di clock commutano.

  • Q0: al primo impulso, il contenuto era 0 e si porta a 1, che viene mantenuto finchè arriva il secondo impulso, dove va a 0, e così via. -Q1: è l’uscita del flip flop T1, che è sempre pilotato ad 1, quindi quando il segnale che clocka T1 è sul fronte di salita, T1 commuta. Il clock di T1 è Q0, quindi faccio attenzione ai suoi fronti di salita. Inizialmente è 0, all’impulso del clock generale si attiva ad 1 e lo mantiene fino al fronte di salita di Q1. Q2 è l’uscita dell’ultimo flip flop, pilotato sempre da un 1, ma il suo clock è Q1, quindi commuta ad ogni suo fronte di salita. Le uscite del contatore sono le uscite dei flip flop: Q0=z0, Q1=z1, Q2=z2. Vediamo se ha contato: Notiamo che stiamo contando, ma da 7 a 0, quindi il contatore è un contatore binario, modulo 8, down. Inoltre, se analizziamo gli andamenti temporali, l’onda relativa al bit meno significativo (Q0) è caratterizzata dal fatto che la frequenza risulta essere la metà della prima, Q1 è 1/4 del clock e Q2 1/8. Quindi è anche un divisore di frequenza. Abbiamo realizzato un dispositivo che a seconda di come preleviamo l’uscita risulta essere un divisore di frequenza. Abbiamo realizzato un contatore asincrono, binario modulo 8. Anche in questo caso, quando è binario, il numero dei flip flop è il logaritmo in base 2 del modulo.

Se invece volessi avere un contatore up invece che down? Ci sono vari metodi e uno di questi è quello di considerare il dispositivo così com’è, ma con dei negative edge triggered, oppure lasciando dei positive edge triggered e prelevare l’uscita negata da portare nel clock successivo. .

Contatori asincroni avanti-indietro In questo caso si utilizza l’xor che, a seconda di come viene pilotata, puó fungere da buffer. In questo modo a seconda di come viene pilotata, entrerà o il clock o il clock negato. Ma se facciamo entrare il clock negato vuol dire che abbiamo trasformato il flip flop in un negative edge triggered. In questo caso significa prendere l’uscita negata a seconda di come viene pilotata la xor (0=indietro, 1=up).

Contatori in cascata Spesso, quando si vuole realizzare dei contatori di dimensioni abbastanza grandi, invece di andare a progettare subito il contatore, è più conveniente realizzare dei contatori in cascata, ovvero mettere in cascata dei contatori di modulo inferiore in modo che il conteggio totale del contatore sia il modulo voluto. Verrà fuori che il conteggio totale risulterà essere il prodotto dei moduli dei contatori messi in cascata. Supponiamo di voler realizzare un contatore modulo 24. Invece di fare un contatore modulo 24, possiamo fare la cascata di due contatori, uno modulo 4 e uno modulo 6 o viceversa. Il contatore deve essere sincrono, quindi il clock deve arrivare contemporaneamente a tutti i flip flop della coppia. Dopodichè metteremo per esempio un’uscita di tipo ripple carry out che agisce sull’enable dell’altro. Quando arriva l’ impulso di clock e l’ingresso enable è 0, il clock arriva a tutti i flip flop, anche quelli non abilitati. Ogni impulso di clock il primo contatore conta 0 1 2 3, dopodichè l’uscita attiva l’enable che diventa 1 e l’altro contatore viene attivato e inizia a contare; l’altro contatore conta 1, poi viene disabilitata e il primo conta di nuovo 0 1 2 3, poi il secondo conta 2. Quindi alla fine stiamo contando 6 volte 4, quindi 24. Stesso discorso si puó fare con i contatori asincroni. Molto spesso questo è conveniente perchè si va a risparmiare sul numero di flip flop che si usano. In questo caso, è stato fatto un unico clock che clocka tutti i flip flop delle due strutture e l’abilitazione, per attivare il secondo, altre volte viene fatto quello che si chiama partizionamento del clock o clock gating , in cui si ha il clock del secondo blocco messo in AND con l’uscita del ripple carry out, in modo che arriva il clock solo quando ha finito di contare l’altro. Questo è logicamente giusto, ma non sempre funziona bene.

Progetto Si sintetizzi un circuito sequenziale sincrono con due ingressi x1 e x2, e con uscita Z. Agli ingressi giungono sequenze di 4 bit ciascuna, l’uscita si porta all’1 logico se il numero di bit uguali nella stessa posizione temporale nelle due sequenze è maggiore di 2, altrimenti permane nello zero logico. Scelgo di usare un automa di Mealy. Suppongo di stare nello stato iniziale A, nel quale ho resettato il contenuto della macchina (non è arrivato alcun bit). Avendo due ingressi abbiamo 4 combinazioni possibili (00 01 10 11). La macchina deve riconoscere i bit e ci da’ un’uscita pari a 1 se il numero di bit uguali nello stesso istante temporale nelle due sequenze è maggiore di 2. Questo significa che, arrivato l’impulso di clock, mi interessa porre l’attenzione sul fatto che quei bit siano uguali, quindi per me che arrivi uno 00 o un 11 non fa differenza. Se arriva invece 01 o 10, non è importante che il primo sia 1 e il secondo sia 0 o viceversa, per me significa che all’impulso di clock i bit arrivati sono diversi, quindi li mando nello stesso stato. Questo vuol dire che dallo stato, da dove dovrebbero uscire 4 frecce, in realtà ne bastano 2, perchè 00 e 11, 01 e 10 hanno lo stesso significato: bit uguali o bit diversi. Tutti gli stati avranno uscita 0, solamente all’ultimo impulso di clock avremo l’uscita 1.

Gli stati I e L sono uguali, perchè portano allo stesso stato con la stessa uscita. Siccome non è importante contare, la I significa che su tre impulsi c’è solo una coppia uguale, L invece significa che su tre impulsi non c’è nemmeno una coppia. Potremmo rinominare entrambi come “su tre impulsi di clock ci sono delle coppie di bit uguali che risultano essere inferiori a 3”. In questo caso risultano lo stesso stato. È una macchina completamente specificata in cui gli unici stati equivalenti sono la I e la L. Facciamo l’assegnamento e abbiamo 9 stati, 4 variabili di stato e supponiamo di voler scegliere come elementi di memoria 4 flip flop di tipo T. Dovremo sintetizzare 5 funzioni: T1, T2, T3, T4 e z tutte di 6 variabili. Nelle mappe di karnhaugh avremo dei don’t care perchè l’assegnamento non è completo.

La macchina è già minima e non si minimizza. Abbiamo 7 stati, 3 variabili di stato e quindi 3 flip flop. Lo voglio realizzare con mux 4:1. Abbiamo le 3 variabili di stato y1 y2 y3, poi abbiamo i due ingressi x1 e x2 e abbiamo da realizzare una serie di funzioni che sono le due uscite in più le 3 o le 6 (a seconda del flip flop che scegliamo) funzioni di eccitazione degli elementi di memoria, quindi minimo 5 funzioni, altrimenti potrebbero essere 8. Un mux 4x1 è caratterizzato da 4 ingressi, 1 uscita e 2 variabili di selezione. Di queste variabili dobbiamo decidere quali saranno le variabili di selezione del mux. Supponiamo di scegliere y2 e y3 come selezione, y1 in ingresso, ci rimangono altre due variabili. Con due variabili possiamo avere 4 combinazioni, quindi per ogni combinazione ho che il primo piano è costituito da 4 mux, ciascuno pilotato da y2 e y3, in ingresso avremo 0, 1 (la massa e Vcc), y1 e y1’, dopodichè le 4 uscite dei mux andranno in un altro mux sempre 4x1 pilotato peró da x1 e x2. Se avessi usato una macchina di Moore, la z sarebbe stata funzione di 3 variabili. Se l’avessi voluta fare con un mux 4x le varie z erano un solo mux (?). Rifare l’esercizio ipotizzando che il primo bit che arriva è il meno significativo

Registri I registri sono macchine sequenziali sincrone a stati e sono una cascata di elementi di memoria. Mentre i contatori possiamo realizzarli con qualsiasi tipo di flip flop (quello asincroni di tipo T, ma quelli sincroni con qualsiasi) e devono contare eventi distinti, i registri sono dei dispositivi la cui funzione è quella di memorizzare il dato , che non deve essere assolutamente manipolato. L’elemento che ha la funzione di mantenere il dato senza manipolarlo è il flip flop di tipo D, quindi in genere a livello funzionale i registri vengono realizzati con DFF, perchè è l’unico che mantiene il dato e non lo manipola (ritardatore temporizzato). Si distinguono sulla base della modalità di caricamento del dato , ovvero il modo in cui il dato viene scritto nel registro, che puó essere:

  • seriale: i dati dovranno scorrere per poi essere memorizzati sulla base dei colpi di clock
  • parallelo: tutti i dati da memorizzare vengono memorizzati in un unico colpo di clock Poi sono distinti sulla base della modalità di lettura del dato , ovvero il modo in cui viene scaricato, il modo in cui viene letto il contenuto della memoria, anche in questo caso possono essere:
  • seriale: un bit per volta uscirà dal registro e verrà letto.
  • parallelo: in un colpo di clock tutta la parola, indipendentemente dal numero di bit di cui è composta, viene resa disponibile all’utente. L’altra classificazione che si può fare è quella sullo scorrimento del dato , se scorre da destra verso sinistra o da sinistra verso destra. Sulla base di questi aspetti, in particolare sui primi due, si differenziano in 4 tipologie:
  • SIPO (Serial Input - Parallel Output) : ingresso seriale, uscita parallela;
  • SISO (Serial Input - Serial Output) : ingresso seriale, uscita seriale;
  • PISO (Parallel Input - Serial Output) : ingresso parallelo, uscita seriale;
  • PIPO (Parallel Input - Parallel Output) : ingresso parallelo, uscita parallela. SIPO Siccome ogni flip flop della struttura riesce a memorizzare un solo input, la lunghezza del registro (il numero di flip flop presenti) dipenderà dalla parola che si vuole memorizzare. Supponiamo di voler memorizzare una parola di 4 bit, quindi ci serviamo di registri che hanno 4 flip flop. Supponiamo di avere una cascata di 4 flip flop di tipo D, la struttura è di tipo sincrona poichè il clock arriva contemporaneamente a tutti gli elementi di memoria, che commutano tutti insieme. Per il registro SISO, se voglio memorizzare la parola 0001, dove 1 è il primo bit che entra, avremo bisogno di 4 impulsi di clock per caricare il registro:
  • inizialmente i flip flop sono azzerati;
  • al primo impulso di clock l’1 viene caricato nel primo flip flop e gli altri rimangono a 0;
  • al secondo impulso, l’1 va nel secondo flip flop ed entra il secondo bit che è 0 nel primo flip flop;
  • al terzo impulso l’1 va nel terzo flip flop, lo zero nel secondo ed entra il terzo bit che è 0 nel primo flip flop;
  • all’ultimo impulso di clock, l’1 va nell’ultimo flip flop e negli altri vengono memorizzari i tre 0. Servono, quindi, 4 impulsi di clock per scrivere la sequenza, ma solamente uno per leggerla.

PIPO

È sempre una macchina sequenziale sincrona, sempre formata da flip flop di tipo D. Con un solo impulso di clock carico la macchina indipendentemente dalla lunghezza della parola, e con un altro impulso di clock leggo il contenuto. In questo caso il registro, sia in fase di caricamento che infase di scaricamente, risulta essere del tutto indipendente dalla lunghezza della parola, lo shift register, invece è dipendente dalla parola sia in scrittura che in lettura, mentre il SIPO è dipendente solo in scrittura. PISO È sempre una macchina sequenziale sincrona, ha un unico impulso di clock che mi fa commutare i flip flop contemporaneamente. Questo registro ha anche una parte combinatoria, costituita in questo caso da un mux, perchè sulla base di come è stato realizzato, a seconda di come viene pilotato il mux, il dato o verrà acquisito dal registro, oppure shifterà all’interno del registro. Quando la variabile di selezione risulta essere 1 vengono abilitate tutte le porte, quindi il dato viene acquisito dal flip flop e viene scritta la memoria; quando invece la variabile di selezione riaulta essere 0, viene abilitata solo una porta e le altre sono disabilitate, quindi il dato all’interno del flip flop scorre nell’elemento di memoria. Ovviamente la variabile di selezione dipende da come è fatto il circuito. Anche in questo caso abbiamo la scrittura che avviene in un unico impulso di clock, invece per leggere l’intera parola ci vogliono tanti impulsi di clock quanti sono i bit da leggere.