Nell’articolo di oggi analizzeremo nel dettaglio il funzionamento del modello di Huffman.
Negli articoli precedenti abbiamo visto:
- Come funziona una CPU: progetto di circuiti logici #0
- Come funziona una CPU: Flip-Flop SR asincrono #0.1
- Come funziona una CPU: Flip-Flop sincrono #0.1.1
- Come funziona una CPU: Flip-Flop D #0.1.2
- Come funziona una CPU: Flip-Flop Master-Slave #0.1.3
Arriviamo subito al sodo e capiamo nel dettaglio il funzionamento del modello di Huffman.
In un circuito sequenziale il valore dell’uscita dipende sia dal valore degli ingressi che dal valore della variabile di stato (la quale viene rappresentata su un certo numero di bit). Dal punto di vista circuitale, un qualsiasi circuito sequenziale è schematizzabile attraverso il modello di Huffman. Quest ultimo:
- separa la parte combinatoria dagli elementi di Memoria;
- prevede m-bit di ingresso;
- prevede k-bit di uscita;
- prevede una variabile di stato i cui n-bit sono memorizzati all’interno di altrettanti Flip-Flop D collegati allo stesso segnale di Clock;
Quando il Clock vale 0, i Flip-Flop D mantengono i bit dell’ultima variabile di stato memorizzata e producono le rispettive uscite (y1. . . yn). Quando il Clock vale 1, i Flip-Flop D potranno eventualmente cambiare valore in funzione degli ingressi ricevuti (Y1…Yn).
La logica combinatoria, la quale è un circuito combinatorio a 2 livelli (costituito da porte AND ed OR), è suddivisa in due parti:
- una che produce le uscite primarie (z1. . . zk) in funzione degli ingressi primari (x1. . . xm) e anche in base ai valori dei Flip-Flop (y1. . . yn);
- una che produce gli ingressi dei Flip-Flop (Y1…Yn) in funzione delle uscite dei Flip-Flop (y1. . . yn) e anche in base ai valori degli ingressi primari (x1. . . xm);
Questo perché il circuito, oltre a produrre le uscite primarie, deve determinare anche il valore dello stato (futuro) in cui evolverà, dipendentemente dagli ingressi e dal valore dello stato passato.
Il ritardo della logica combinatoria deve essere minore del periodo del Clock (∆ < T) in modo da evitare che essa non riesca a produrre in tempo i valori in uscita, prima che il Clock cambi il proprio fronte.
Volendo essere più precisi, dal momento che anche i Flip-Flop hanno un loro ritardo δ, prima del quale la logica combinatoria non riceve in ingresso le uscite (y1. . . yn) dei Flip-Flop stessi, deve valere la seguente disuguaglianza:
- T > ∆ + δ
Pertanto, i valori sulle uscite della logica combinatoria (z1. . . zk) verranno prodotti solo dopo un intervallo di tempo superiore al ritardo complessivo massimo della rete combinatoria, dato dalla somma del ritardo ∆ della logica combinatoria e del ritardo dei Flip-Flop δ. Prima di allora il Clock non deve assolutamente rendere i Flip-Flop sensibili al segnale D, altrimenti questi potrebbero produrre uscite differenti (ingressi differenti per la logica combinatoria) e conseguentemente la logica combinatoria produrrebbe uscite diverse senza aver prima prodotto le uscite associate al precedente fronte di Clock.
In base al numero di stati possibili, la variabile di stato deve essere memorizzata su un opportuno numero di bit (numero di Flip-Flop). Vale pertanto la seguente uguaglianza:
- nbit = nflip-flop = log2 nstati
- il cui risultato va arrotondato all’intero superiore corrispondente.
Iscriviti ai nostri gruppi Telegram
Link utili