Laboratorio di Architetture degli Elaboratori I Corso di Laurea in Informatica, A.A. 2018-2019 Università degli Studi di Milano Contatori Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135 Milano (MI) Ufficio S242 nicola.basilico@unimi.it +39 02.503.16294
Esercizio 1 Si realizzi un contatore ciclico in modulo n=8: Il contatore va da 0 a n-1 incrementando il suo valore di 1 ad ogni ciclo di clock Il valore successivo a n-1 nella sequenza è 0
Esercizio 1 Sintetizziamo la rete combinatoria add mod 8 che dato lo stato del contatore al tempo t: determini lo stato del contatore al tempo t+1: s(t+1) verrà scritto nel contatore in retroazione
Esercizio 1 I tre bit dello stato codificano il valore corrente del contatore Ad ogni ciclo di clock il valore (stato) passa al valore successivo, tranne il valore 7 che passerà a 0
Esercizio 1 s(t)=c s(t+1)= c + 1 (mod 8) NOTA: nella rappresentazione esterna del circuito la posizione di Q e Q* sono scambiate di lato
Esercizio 1 Utilizziamo questo componente per visualizzare in modo human-friendly il valore corrente del registro Hex digit display Visualizza in base 16 un valore binario su 4 bit Bit per accendere/spegnere il punto decimale (se undefined è spento)
Esercizio 1 il quarto bit non mi serve nel contatore, lo pongo a 0 nel display
Esercizio 2 Realizzare un contatore che segua ciclicamente una sequenza di Gray a 3 bit Nella sequenza di Gray ogni parola differisce dalla precedente per un solo bit. Ecco la sequenza su 3 bit. 000 -> 001 -> 011 -> 010 -> 110 -> 111 -> 101 -> 100 Stesso principio dei contatori modulo n: le transizioni da stato corrente a stato prossimo condificheranno la sequenza di Gray Ad ogni cicli di clock, il registro a 3 bit passa dal valore i-esimo della sequenza al valore i+1- esimo (tranne alla fine, dove dall ottavo valore si ritorna al primo) Dopo aver realizzato il circuito, proviamo ad associarvi un qualche comportamento grafico (a nostro piacere) in modo simile a quanto fatto nell esercizio 1 (utilizziamo la fantansia!)
Esercizio 2 Su 3 bit la sequenza è: 000, 001, 011, 010, 110, 111, 101, 100
Esercizio 2
Esercizio 2 Stato prossimo Stato corrente
Esercizio 3 Si realizzi un contatore (non ciclico!) su 4 bit che supporti le seguenti operazioni: 1 ingresso di Reset (che azzera tutte le uscite) 1 ingresso di conteggio (che somma +1) 1 uscita su 4 bit per questo contatore non ciclico assumiamo che una volta raggiunto il valore massimo permanga in quello stato
Esercizio 3 Tra reset e +1 non ci sono precedenze, ammetto o uno o l altro usando uno XOR (se sono entrambi a 1 è come se fossero entrambi a 0)
Esercizio 3 Non uso enable per attivare/disattivare la sensibilità del circuito al clock, ma metto il clock in AND con uno dei due modi operativi (Reset e +1, ciascuno dei quali implica una scrittura). Questo è un modo alternativo non basato su enable.
Esercizio 3 Il display esadecimale visualizza il valore dello stato corrente Q (4 bit)
Esercizio 3 In modalità +1, lo stato prossimo è Q + 1 se Q < 1111 1111 se Q = 1111 (non è ciclico) La condizione del se è valutata dall AND a 4 bit; se Q = 1 il MUX fa passare Q altrimenti Q + 1 ottenuto dal full adder (che ha in input Q e una costante 1 su 4 bit)
Esercizio 3 Questo secondo MUX decide se far passare lo stato prossimo della modalità +1 oppure lo stato 0000; il select bit è Reset (c). E, di fatto, un Reset sincrono: non usiamo i bit di asynchronous clear ma scriviamo 0000 in modo sincrono (sottostando al clock). E, anche questo, un modo alternativo per fare reset.
Laboratorio di Architetture degli Elaboratori I Corso di Laurea in Informatica, A.A. 2018-2019 Università degli Studi di Milano Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135 Milano (MI) Ufficio S242 nicola.basilico@unimi.it +39 02.503.16294 Hanno contribuito alla realizzazione di queste slides: Dr. Iuri Frosio Dr. Massimo Marchi Dr. Alberto Quattrini Li Dr. Matteo Re