esercizi e complementi di reti logiche - t3lab · gates (vedi reti logiche) - in alcuni casi le...
Post on 25-Feb-2020
17 Views
Preview:
TRANSCRIPT
Calcolatori Elettronici T
Complementi ed Esercizidi
Reti Logiche
Introduzione
Reti Logiche sintesi mediante approccio ldquoformalerdquo
Calcolatori Elettronici sintesi mediante approccio ldquodirettordquo
GrafodegliStati
Tabelladi
Flusso
Tabelladelle
Transizioni
Sintesi(Karnaugh
etc)
Specifichedel
ProblemaRL
GrafodegliStati
Tabelladi
Flusso
Tabelladelle
Transizioni
Sintesi(Karnaugh
etc)
Specifichedel
ProblemaRL
Modello della Macchina a Stati Finiti (FSM) - Mealy
F
G
k
nI
r
SS
U
U=F(SI)S=G(SI)
F
G
k
nI
r
SS
U
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k τk
Retroazione diretta(τ ritardo intrinseco della RC G)
S
U
S
I
S S S S
t t+τ
(1)
(2) (3)
bull Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi
bull Non egrave necessario un segnale di sincronismo (clock)
bull Ridotta dissipazione di potenza
Aspetti positivi delle RSA (vs RSS)
Aspetti negativi delle RSA (vs RSS)bull Vincoli per il corretto impiego
- lrsquoingresso puograve variare solo quando la rete ha raggiunto una condizione di stabilitagrave
- i segnali di ingresso possono variare uno alla volta
bull Esposte a potenziali malfunzionamenti (corse critiche)
bull Difficili da progettare
In pratica sono utilizzate per realizzare latch e flip-flop
A noi interessano (maggiormente) le reti sincrone (RSS)
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Introduzione
Reti Logiche sintesi mediante approccio ldquoformalerdquo
Calcolatori Elettronici sintesi mediante approccio ldquodirettordquo
GrafodegliStati
Tabelladi
Flusso
Tabelladelle
Transizioni
Sintesi(Karnaugh
etc)
Specifichedel
ProblemaRL
GrafodegliStati
Tabelladi
Flusso
Tabelladelle
Transizioni
Sintesi(Karnaugh
etc)
Specifichedel
ProblemaRL
Modello della Macchina a Stati Finiti (FSM) - Mealy
F
G
k
nI
r
SS
U
U=F(SI)S=G(SI)
F
G
k
nI
r
SS
U
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k τk
Retroazione diretta(τ ritardo intrinseco della RC G)
S
U
S
I
S S S S
t t+τ
(1)
(2) (3)
bull Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi
bull Non egrave necessario un segnale di sincronismo (clock)
bull Ridotta dissipazione di potenza
Aspetti positivi delle RSA (vs RSS)
Aspetti negativi delle RSA (vs RSS)bull Vincoli per il corretto impiego
- lrsquoingresso puograve variare solo quando la rete ha raggiunto una condizione di stabilitagrave
- i segnali di ingresso possono variare uno alla volta
bull Esposte a potenziali malfunzionamenti (corse critiche)
bull Difficili da progettare
In pratica sono utilizzate per realizzare latch e flip-flop
A noi interessano (maggiormente) le reti sincrone (RSS)
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Modello della Macchina a Stati Finiti (FSM) - Mealy
F
G
k
nI
r
SS
U
U=F(SI)S=G(SI)
F
G
k
nI
r
SS
U
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k τk
Retroazione diretta(τ ritardo intrinseco della RC G)
S
U
S
I
S S S S
t t+τ
(1)
(2) (3)
bull Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi
bull Non egrave necessario un segnale di sincronismo (clock)
bull Ridotta dissipazione di potenza
Aspetti positivi delle RSA (vs RSS)
Aspetti negativi delle RSA (vs RSS)bull Vincoli per il corretto impiego
- lrsquoingresso puograve variare solo quando la rete ha raggiunto una condizione di stabilitagrave
- i segnali di ingresso possono variare uno alla volta
bull Esposte a potenziali malfunzionamenti (corse critiche)
bull Difficili da progettare
In pratica sono utilizzate per realizzare latch e flip-flop
A noi interessano (maggiormente) le reti sincrone (RSS)
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
F
G
k
nI
r
SS
U
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k τk
Retroazione diretta(τ ritardo intrinseco della RC G)
S
U
S
I
S S S S
t t+τ
(1)
(2) (3)
bull Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi
bull Non egrave necessario un segnale di sincronismo (clock)
bull Ridotta dissipazione di potenza
Aspetti positivi delle RSA (vs RSS)
Aspetti negativi delle RSA (vs RSS)bull Vincoli per il corretto impiego
- lrsquoingresso puograve variare solo quando la rete ha raggiunto una condizione di stabilitagrave
- i segnali di ingresso possono variare uno alla volta
bull Esposte a potenziali malfunzionamenti (corse critiche)
bull Difficili da progettare
In pratica sono utilizzate per realizzare latch e flip-flop
A noi interessano (maggiormente) le reti sincrone (RSS)
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Reti Sequenziali Asincrone (RSA)
k τk
Retroazione diretta(τ ritardo intrinseco della RC G)
S
U
S
I
S S S S
t t+τ
(1)
(2) (3)
bull Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi
bull Non egrave necessario un segnale di sincronismo (clock)
bull Ridotta dissipazione di potenza
Aspetti positivi delle RSA (vs RSS)
Aspetti negativi delle RSA (vs RSS)bull Vincoli per il corretto impiego
- lrsquoingresso puograve variare solo quando la rete ha raggiunto una condizione di stabilitagrave
- i segnali di ingresso possono variare uno alla volta
bull Esposte a potenziali malfunzionamenti (corse critiche)
bull Difficili da progettare
In pratica sono utilizzate per realizzare latch e flip-flop
A noi interessano (maggiormente) le reti sincrone (RSS)
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
bull Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi
bull Non egrave necessario un segnale di sincronismo (clock)
bull Ridotta dissipazione di potenza
Aspetti positivi delle RSA (vs RSS)
Aspetti negativi delle RSA (vs RSS)bull Vincoli per il corretto impiego
- lrsquoingresso puograve variare solo quando la rete ha raggiunto una condizione di stabilitagrave
- i segnali di ingresso possono variare uno alla volta
bull Esposte a potenziali malfunzionamenti (corse critiche)
bull Difficili da progettare
In pratica sono utilizzate per realizzare latch e flip-flop
A noi interessano (maggiormente) le reti sincrone (RSS)
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
RSA notevoli Latch SR
SRS
R
Q
Q
S
R
Q
Q
S R
0 0
0 1
1 0
1 1
Q Q
Q Q
0 1
1 0
Q = Srsquo uarr (q uarr Rrsquo)
Srsquo
Rrsquo
Q
Q
Q = R darr (S darr q)
S
R Q
Q
I comandi di set e reset devono avere una durata minima (vedi datasheet)per consentire il raggiungimento della condizione di stabilitagrave
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
RSA notevoli Latch CD
CDC
D
Q
Q
C
D
Q
Q
C D
0 0
0 1
1 0
1 1
Q Q
Q Q
Q Q
0 1
1 0
SRS
R
Q
Q
C
D
Q
Q
C
D
QτSU τH
τSU ge τSUminτHge τHmin
Vincoli
Tempo di risposta τR gt τH
Latch CD il problemavantaggio delle ldquouscite trasparentirdquo
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Quale egrave il valore della tensione
OE I
1 0
1 1
0 0
0 1
U
0
1
Z
Z
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
OE=0
0
1
U=
Quale valore logico assume U
Che cosa egrave necessario garantire nella rete seguente
Quando il segnale U assume un valore logico significativo
1 U=OE1
OE2
I1
I2
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 1
Registro a 1 bit con uscita tri-state
Utilizzando latch SR progettare una rete che quandoWE=1memorizza sullrsquouscita OUT il segnale di ingressoIN Lrsquoultimo valore trasferito in uscita deve essere mantenuto per tutto il tempo in cui il segnale WE=0 La rete deve essere inoltre dotata di un segnale OEche se a livello logico 0 pone il segnale di OUTnello stato di alta impedenza
WEIN
OUT
OE
WEIN
OE
OUT
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
S Q
QR
WEIN
OE
OUT
Soluzione
La rete tratteggiata (8X) egrave un latch CD dotato di uscita tri-state ed esiste in forma integrata (lsquo373)
Q
NOTA
- Percheacute le due reti seguenti NON sono equivalenti
ab c b
a
c
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
RSA notevoli Flip-Flop D
FFDD
CK
Q
Q
D
CK
Q
Q
FFD RSA che assume il valore logico presente sullrsquoingresso D durante i fronti di salita (positive edge triggered) dellrsquoingresso CK
Il FFD egrave tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone In tal caso il segnale CK egrave unsegnale di tipo periodico (clock)
CK
D
Q
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD
CK
Q
Q
D
CK
Q
Q
A_SET
A_RES
A_RES
A_SET
CK
D
Q
Q
I FFD sono dotati di due ulteriori ingressi ldquoasincronirdquo che consentonodi settare (A_SET) o resettare (A_RES) Q indipendentemente da CK e D
A_SET
A_RES
Tipica realizzazione di un FFD della famiglia TTL (lsquo374) mediante 3 latch SR
Q=0 se A_RES=1Q=1 se A_SET=1
A_SET e A_RES sono prioritari rispetto a CK e D
NOTA i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RESsono spesso denominati (rispettivamente) PR e CL oppure S e R Inoltre se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0)
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Vincoli di corretto impiego per i FFD
Tempi di Setup (τSU) Hold (τH) e Risposta (τR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
τHτSU
τR
Il corretto funzionamento egrave garantito solo se τSUge τSUmin e τH ge τHminIn caso contrario metastabilitagrave
Cosa implicano i parametri τSUmin e τRmin indicati nei datasheet
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Reti Sequenziali Sincrone (RSS)
k (k)FFD
k
k FFD sullrsquoanello di retroazione Tutti con lo stesso clock di periodo T
S S S SCK
S
U
S
I
t t+T t+2Tt-T
Nel caso specifico Moore o Mealy Lo stato cambia anche se non cambia lrsquoingresso
Lrsquouscita cambia anche se non cambia lrsquoingresso
CK
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Il FFD come elemento fondamentale delle RSS
D
CK
Q
Se allrsquoingresso CK viene inviato un segnale periodico (clock)
il FFD ritarda (D = Delay) il segnale di uscita Q rispetto al segnale di ingresso D di un tempo pari al periodo di clock T
Qn+1 = Dn
FFDD
CK
Q
Q
D
CK
Q
Q
T T T T
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che si susseguono con periodo T
bull La rete risponde ogni T rArr se si desidera massimizzare la velocitagravedi risposta della rete egrave necessario adottare il modello di Mealy
bull La rete egrave svincolata dai ritardi della rete G Quindi nessunproblema di corse critiche (purcheacute T gt τSUmin + τRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugraveRSS e non necessariamente per tutte le RSS il clock egrave lo stessoeo coincide con il clock del processore
bull Le RSS sono (piugrave) facili da progettare delle RSA
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Clock gating e glitch sul clockNelle reti sincrone egrave necessario evitare variazioni spurie (glitch)del segnale di clock che possono provocare commutazioni indesiderate dei FFD
Ad esempio per via dei reciproci ritardi tra i t segnali D[t-10]eo le alee introdotte dalla rete combinatoria di decodifica a causa del ldquoclock gatingldquo puograve verificarsi quanto segue
FFDD
CK
Q
Q
D
CK
Q
Q
CK
P
CK_G
CK_G
Glitch sul clock rarr commutazione spuria del FFD
NO
Rete di Decodifica
D[t-10]P
t
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Il clock gating oltre a generare potenziali glitch introduce ldquoclock-skewrdquo Ad esempio consideriamo le due RSS seguenti
Clock gating e clock-skew
CK
CK_G
τAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
τAND
τANDIl ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 2
Progettare un registro a 8 bit con uscita tri-stateutilizzando FFD positive edge triggered La rete ad ogni fronte di salita del clock memorizza il byte IN[70] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0) Lrsquouscita OUT[70] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0 Inoltre la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che se 1 pone al livello logico 0 lrsquouscita OUT[70]indipendentemente dal valore dei segnali WE IN e CKQuali condizioni devono essere soddisfatte percheacute sia garantito il corretto funzionamento della rete
WE
A_RESET
IN[70]
CK
OUT[70]
OEWE
IN[70]
OE
OUT[70]
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
WE
OE
FFDD Q
QR
IN OUT0
1
Q
A_RESET
Soluzione
Caso singolo bit
NOTA- Per garantire il corretto funzionamento della rete egravenecessario rispettare tempi di setup e hold
- Il FFD esiste (8X) in forma integrata (74XX374) ed egrave dotatodi comando di OE
CK
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
NOTA- La soluzione seguente NON egrave corretta in quanto
a) variazioni spurie (glitch) dovute a instabilitagrave delsegnale WE possono causare commutazioni indesiderate del flip-flop
b) il gate ritarda il segnale di clock del FFD e potrebbecausare potenziali sfasamenti (ldquoclock-skewrdquo) tra i clockdei vari componenti della rete sincrona complessiva
WE
OE
FFDD Q
QR
IN OUTQ
A_RESET
CK
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
QR
IN7
WE OE
OUT70
1
FFDD Q
QR
IN1 OUT10
1
FFDD Q
QR
IN0 OUT00
1
Q7
Q1
Q0
A_RESET
Estensione a 8 bit
CK
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 3
Progettare una rete che periodicamente dopo tre periodidi clock setta al livello logico 1 la propria uscitaper un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
COUNTERX4
Una possibile soluzione si basa sullrsquoutilizzo di un contatore modulo 4
Soluzione 31
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0 00 11 01 1
u1 u0
Contatore modulo 4
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Contatore modulo 4 con comando di ENABLE (EN)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
EN
0
1
EN
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
0 00 11 01 1
u1 u0
Contatore modulo 4 UPDOWN (UD)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
0
1
UD
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Contatore modulo 4 con LOAD (L)
FFDD Q
QFFD
D Q
Q
XORu0 u1
R R
CK
A_RESET
1
0
L
1
0
L
i0 i1
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizi
E3-1) Progettare un contatore modulo 4 dotato dei segnaliUD EN e L nei seguenti 2 casi
a) segnale L prioritario rispetto a EN
b) segnale EN prioritario rispetto a L
In entrambi i casi si supponga che UD sia ilsegnale meno prioritario tra i tre
E3-2) Progettare un contatore modulo 8
E3-3) Progettare un contatore modulo 5 utilizzando uncontatore modulo 8
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Osservando le forme drsquoonda mostrate sotto si puograve ottenere una soluzione alternativa alla precedente (31)
Soluzione 32
CK
u1
u0
OUT (0) (1) (2) (0) (1) (2)(3) (3)
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
QRCK
A_RESET
FFDD Q
QR
OUT
NOTA- Questa soluzione non puograve essere ottenuta con il metododella sintesi formale studiato a Reti Logiche
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
τ
τ
ττ
NOTA- Non egrave il caso della rete della pagina precedente ma lapresenza di alee puograve creare problemi alle reti che seguonose queste utilizzano come ingresso di clock un segnale che presenta oscillazioni spurie (glitches)
Si consideri ad esempio il caso seguente
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
Sτ τ τ
Alea statica provoca un campionamento indesiderato del FFD
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
NOTA- Le alee possono essere eliminate introducendo ulteriorigates (vedi reti logiche)
- In alcuni casi le alee possono essere filtrate daglistessi gates (ad esempio nel caso di lsquolentezzarsquo deidispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheets dei componenti utilizzati
ab
c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallrsquoAND
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 33
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1 u
snu
A B 0
B C 0
C D 0
D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 0
1 1 0 0 1
y1n+1 y0n+1
Sintesi minima(mappe di Karnaughhellip)
u = y1nmiddoty0n
y0n+1 = y0n
y1n+1 = y1n XOR y0n
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
QFFD
D Q
Q
XORy0 y1
R R
CKu
NOTA- Se si desidera aggiungere un segnale di ENABLE alla reteprecedente mediante il metodo della sintesi formale
- Ersquo necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 4
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0
IN
A_RESET
O1
O2
O0
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
CK
IN
A_RESET
OUT1
Soluzione
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
IN
OUT2OUT1OUT0
CK
Esercizi
E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOAD (parallelo e prioritario rispetto allrsquoenable)
E4-2) Utilizzando due shift-register a 4 bit e uncontatore modulo 8 progettare un convertitore serie parallelo a 8 bit dotato di un segnale (ACK)che comunica lrsquoavventura ricezione degli 8 bit
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 5
Progettare una rete sincrona dotata di un ingresso IN e di unrsquouscita OUT Lrsquouscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso(monoimpulsore)
Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purcheacute rispetti tempi di setupe hold)
IN
CK
OUT
CK
IN
OUT
IN OUT
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
QFFD
D Q
Q
IN
CK
Soluzione
OUT
CK
IN
OUT
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
FFDD Q
Q
IN
OUT
CK
Perchegrave questa soluzione egrave sbagliata (1)
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
CK
OUT
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 6
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sullrsquoingresso IN[70] mentre il segnale EN era a livello logico 1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata la sequenza FF-27-30 nel periodo di clock successivo a quello dellrsquoultimo carattere ricevuto (30h) deve essere asserita lrsquouscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTEN
A_RESET
IN[70]OUT
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Soluzione 62
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Crsquoegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con EN=1) sono FF-FF-27-30
DEC_FF
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizi
E5-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con EN=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreEN=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 7
Modificare lrsquoesercizio precedente in modo che in seguito al rilevamento della sequenza lrsquouscita OUT assuma il valore logico 1 per un solo periodo di clock Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
Soluzione 71
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0
OUT
R
RR
A_RESET A_RESET
A_RESET
CK CK
CK
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30 + OUT
ENABLE = ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30
Rispetto allrsquoesercizio 62 egrave sufficiente modificare il comando di LOAD facendo in modo che LOAD=1 quando OUT=1
ENmiddotDEC_FF
Cosa accade se (con EN=1) la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizi
E6-1) Riprogettare la rete dellrsquoesercizio 6 in modo cheOUT=1 in seguito alla ricezione anche non consecutiva(con EN=1) dei caratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti mentre EN=1sono stati FF-7A-80-9F-27-B2-30-hellip
E6-2) Cosa accade alle soluzioni 61 e 62 se (mentre EN=1)la sequenza egrave 45-FF-27-30-FF-27-30-hellip
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 8
Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[70]mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza) 27h e 30h Nel caso sia rilevata tale sequenza due periodi di clock successivi a quello dellrsquoultimo carattere della sequenza ricevuto deve essere asserita lrsquouscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1 In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere
EN
A_RESET
IN[70]
CK
OUTOUTEN
A_RESET
IN[70]
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
CK
IN[7hellip0]
A_RESET
EN
30h FFh FFh 27h 55h 30h 18h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
374D Q
Q
0
1
EN
8 8
374D Q
Q
0
1
EN
8 8
30h
IN[7hellip0]
27h FFh
8
EN
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lrsquoultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
Esercizio 9
Progettare una rete dotata di tre ingressi E AI RESET e unrsquouscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Lrsquouscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte anche non consecutive il valore 1 del segnale AI in presenza del segnale E=1 Ogni volta che il segnale AI vale 0 (con E=1) deve essere decrementato di uno il numero di eventi rilevati fino a quel momento Successivamente ad un reset (segnale asincrono A_RESET=1) o nel caso nessun evento sia stato ancora rilevato la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere il conteggio dallo stato 000
E
AI
A_RESET
CLOCK
OUTOUTE
AI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
RESET
A_RESET
Soluzione 91
E
LrsquoOR blocca il conteggio (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0) Percheacute
O1 egrave strettamente necessario (No percheacute )
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
A0 B0 C0 D0 E0
F1
E AI0 ndash1 0 0 ndash 0 ndash 0 ndash 0 ndash
1 1 1 1 1 1 1 1
1 1
1 10 ndash1 0
1 0 1 0 1 0 1 0
Soluzione mediante sintesi formale grafo -gt tabella di flusso -gt tabella delle transizioni NON SI USA
Soluzione 92
top related