Salta al contenuto
Note per Studenti Registri e contatori

Registri e contatori

In questa pagina 5

Registro parallelo

nn flip-flop D (vedi Latch e flip-flopReti sequenziali e retroazione; latch SR con porte NOR e stato proibito; latch SR e D abilitati dal clock; flip-flop D master-slave sensibile al fronte; flip-flop JK e T; tempi di setup e hold; clock e periodo minimo.Latch e flip-flop →) con lo stesso clock memorizzano una parola di nn bit. Per caricare solo quando serve si aggiunge un segnale Load: davanti a ogni flip-flop un multiplexerMultiplexer, decodificatore e codificatore; semisommatore e sommatore completo; sommatore a propagazione del riporto e suo ritardo, idea dell'anticipo del riporto; sommatore-sottrattore in complemento a 2 con rilevazione dell'overflow; comparatore.Circuiti combinatori notevoli → sceglie tra il nuovo dato (Load = 1) e il valore attuale QQ (Load = 0). PC, IR, MAR, MBR sono registri di questo tipo.

Banco dei registri

I registri generali del processore (16 in ARM, 32 in MIPS) formano il banco dei registri (register file), tipicamente con:

  • due porte di lettura: due numeri di registro selezionano, tramite due MUX a 16 o 32 ingressi, i due operandi;
  • una porta di scrittura: un decoder dal numero del registro destinazione, insieme al segnale di abilitazione alla scrittura, attiva il Load di un solo registro.

Così un'istruzione come ADD r1, r2, r3 legge due registri e ne scrive un terzo nello stesso ciclo.

Registro a scorrimento

L'uscita di ogni flip-flop è l'ingresso del successivo: a ogni fronte il contenuto scorre di una posizione.

Esempio a 4 bit, ingresso seriale a destra, sequenza 1, 0, 1, 1: 0000→0001→0010→0101→10110000 \to 0001 \to 0010 \to 0101 \to 1011.

Contatori

Contatore asincrono (ripple): flip-flop T con T=1T = 1; il clock del primo è il clock del sistema, quello di ognuno dei successivi è l'uscita del precedente. Semplice, ma i bit cambiano uno dopo l'altro: per un attimo compaiono valori intermedi sbagliati, e il ritardo cresce con il numero di bit.

Contatore sincrono: tutti i flip-flop hanno lo stesso clock. Il bit ii commuta quando tutti i bit meno significativi valgono 1:

T0=1,T1=Q0,T2=Q1Q0,T3=Q2Q1Q0T_0 = 1, \quad T_1 = Q_0, \quad T_2 = Q_1Q_0, \quad T_3 = Q_2Q_1Q_0

Conteggio a 3 bit: 000, 001, 010, 011, 100, 101, 110, 111, 000, … (modulo 23=82^3 = 8).

Contatore modulo N

Per contare da 0 a N−1N-1 si riporta a zero il contatore quando arriva a N−1N - 1 (sincrono) o si progetta come automa (vedi Reti sequenziali e automi a stati finitiModello di una rete sequenziale sincrona (stato in flip-flop, logica di stato prossimo e di uscita); automi di Moore e di Mealy; procedimento di sintesi con esempio svolto di un riconoscitore della sequenza 11.Reti sequenziali e automi a stati finiti →).

Esempio: contatore modulo 6 con flip-flop D, stati 000…101.

Q2Q1Q0Q_2Q_1Q_0 prossimo
000 001
001 010
010 011
011 100
100 101
101 000
110, 111 indifferenti

Dalla tabella (usando le indifferenze):

D0=Q0‾D1=Q2‾ (Q1⊕Q0)D2=Q1Q0+Q2Q0‾D_0 = \overline{Q_0} \qquad D_1 = \overline{Q_2}\,(Q_1 \oplus Q_0) \qquad D_2 = Q_1Q_0 + Q_2\overline{Q_0}

Controllo su 101: D0=0D_0 = 0, D1=1‾⋅(0⊕1)=0D_1 = \overline{1} \cdot (0 \oplus 1) = 0, D2=0+1⋅0=0D_2 = 0 + 1 \cdot 0 = 0 → 000 ✓. Su 011: D0=0D_0 = 0, D1=1⋅0=0D_1 = 1 \cdot 0 = 0, D2=1D_2 = 1 → 100 ✓.

Usi: contatore di programma (il PC è un registro con incremento), divisori di frequenza (il bit QiQ_i di un contatore binario ha frequenza fclock/2i+1f_{clock}/2^{i+1}), temporizzatori.

Errori tipici

  • Pensare che in un contatore ripple tutti i bit cambino insieme.
  • Dimenticare il segnale di abilitazione alla scrittura nel banco dei registri: senza, ogni ciclo sovrascriverebbe un registro.

Versione ripasso

Registro e banco

Contatori

Errori tipici: credere che nel ripple i bit cambino insieme; omettere l'abilitazione alla scrittura.

Teoria collegata