Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le...

63
Calcolatori Elettronici T Complementi ed Esercizi di Reti Logiche

Transcript of Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le...

Page 1: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 2: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 3: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 4: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 5: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 6: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 7: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 8: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 9: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 10: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 11: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 12: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 13: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 14: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 15: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 16: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 17: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 18: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 19: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 20: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 21: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 22: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 23: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 24: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 25: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 26: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 27: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 28: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 29: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 30: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 31: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 32: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 33: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 34: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

τ

τ

ττ

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

Page 35: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 36: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 37: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 38: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 39: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 40: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 41: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 42: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 43: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 44: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 45: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 46: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 47: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 48: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 49: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 50: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 51: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 52: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 53: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 54: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 55: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 56: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 57: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 58: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 59: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 60: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 61: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 62: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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

Page 63: Esercizi e Complementi di Reti Logiche - T3LAB · gates (vedi reti logiche) - In alcuni casi le alee possono essere filtrate dagli stessi gates (ad esempio nel caso di ‘lentezza’dei

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