3 Reti Sequenziali - Home - Computer Vision...
Transcript of 3 Reti Sequenziali - Home - Computer Vision...
3 Reti Sequenziali
1
Fondamenti di Informatica P2 Ingegneria Meccatronica
Stefano MattocciaDipartimento di Informatica
Universitagrave di Bologna
Le reti di maggiore interesse non dipendonounicamente dagli ingressi (reti combinatorieRC) ma anche da elaborazioni precedenti
Pertanto per le reti sequenziali sononecessari dispositivi per memorizzareelaborazioni precedenti (stato)
Il modello di tale rete (macchina a statifiniti o FSM) puograve essere schematizzato cosigrave
RC
MEM
n r
k k
I U
SS
Modello della Macchina a Stati Finiti (FSM) - Mealy
F
G
k
nI
r U
S S
U=F(SI)S=G(SI)
k
F
G
k
nI
r U
S S k
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k tk
Retroazione diretta(t ritardo intrinseco della RC G)
S
U
S
I
S S S S
t 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 Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Le reti di maggiore interesse non dipendonounicamente dagli ingressi (reti combinatorieRC) ma anche da elaborazioni precedenti
Pertanto per le reti sequenziali sononecessari dispositivi per memorizzareelaborazioni precedenti (stato)
Il modello di tale rete (macchina a statifiniti o FSM) puograve essere schematizzato cosigrave
RC
MEM
n r
k k
I U
SS
Modello della Macchina a Stati Finiti (FSM) - Mealy
F
G
k
nI
r U
S S
U=F(SI)S=G(SI)
k
F
G
k
nI
r U
S S k
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k tk
Retroazione diretta(t ritardo intrinseco della RC G)
S
U
S
I
S S S S
t 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 Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Modello della Macchina a Stati Finiti (FSM) - Mealy
F
G
k
nI
r U
S S
U=F(SI)S=G(SI)
k
F
G
k
nI
r U
S S k
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k tk
Retroazione diretta(t ritardo intrinseco della RC G)
S
U
S
I
S S S S
t 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 Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
F
G
k
nI
r U
S S k
U=F(S)S=G(SI)
Modello della Macchina a Stati Finiti (FSM) - Moore
Reti Sequenziali Asincrone (RSA)
k tk
Retroazione diretta(t ritardo intrinseco della RC G)
S
U
S
I
S S S S
t 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 Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Reti Sequenziali Asincrone (RSA)
k tk
Retroazione diretta(t ritardo intrinseco della RC G)
S
U
S
I
S S S S
t 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 Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
RSA notevoli Flip-Flop D
FFDD Q
Q
D
CK
Q
Q = NOT(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
Datasheet FFD httpwwwticomlitdssdls119sdls119pdf
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Vincoli di corretto impiego per i FFD
Tempi di Setup (tSU) Hold (tH) e Risposta (tR)
FFDD
CK
Q
Q
D
CK
Q
Q
CK
D
Q
tHtSU
tR
Il corretto funzionamento egrave garantito solo se tSUge tSUmin e tH ge tHminIn caso contrario metastabilitagrave
Cosa implicano i parametri tSUmin e tRmin indicati nei datasheet
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Vincoli di campionamento e metastabilitagrave
Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilitagrave
CK
D
Q
tSU tH
0 1
metastabile
stabile stabile
1
0t =
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Sincronizzazione di segnali (non sincroni)
FFDD
CK
QImetastabile
FFDD
CK
Q
Stabile ()I_sync
I_M
Normalmente i segnali provenienti dallrsquoesterno (ma non solo) non sonosincroni con il clock della RSS Questo egrave un problema molto comune
Come gestire potenziali situazioni di metastabilitagrave che potrebbero compromettere il corretto funzionamento della RSS
CK
bull La soluzione mostrata garantisce che lrsquouscita I_sync assume il valoredi I nel momento in cui tale segnale egrave stato campionato
bull Sono sufficienti due livelli di FF
bull Quali sono gli effetti collaterali di questa soluzione
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Alcune considerazioni sulle RSS
bull Lo stato della rete cambia solo in corrispondenza dei fronti disalita del clock che (tipicamente) 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 tSUmin + tRmin )
bull Allrsquointerno di uno stesso progetto sono tipicamente presenti piugrave RSS 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
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
t
t
tt
Si consideri il caso seguente nel quale lrsquouscita di una retecombinatoria egrave utilizzata come clock di un FFD
FFDD Q
Q
c
b
a
1
1
IN
OUT
S
u
u
St t t
Alea statica provoca un campionamento indesiderato del FFD
Alee nelle reti combinatorie
Lrsquouscita u presenta un glitch
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
bullIn realtagrave le alee possono essere eliminateintroducendo ulteriori gate (metodi che non vedremo)
bullIn alcuni casi le alee potrebbero essere filtratedagli stessi gates (ad esempio nel caso di lsquolentezzarsquodei dispositivi rispetto ai tempi del glitch) questapossibilitagrave deve essere verificata attentamenteanalizzando i datasheet dei componenti utilizzatip e r c h eacute e s p o n e l a r e t e a m a l f u n z i o n a m e n t i
bullIn ogni caso evitare sempre di inviare sul clock diu n a R S S l rsquo u s c i t a d i u n a r e t e c o m b i n a t o r i a
ab c
a
b
c
Un impulso troppo brevepotrebbe essere filtrato dallAND
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
tAND
FFDD
CK
Q
Q
I1
CK
B
BCK_G1
FFDD
CK
Q
Q
I2
CK
A
A
tAND
tAND
I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dallrsquoAND Tale fenomeno (ldquoclock-skewrdquo) egrave potenzialmente dannoso Perchegrave
Il ldquoclock-skewrdquo non egrave causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Notazione
Per una corretta e non ambigua rappresentazione delle reti logiche egrave bene adottare alcune convenzioni
RSSindicare
tutti i segnali anche allrsquointerno
Ingressi
Segnali asincroni(A_nome_segnale)
Uscite
Segnali asincroni (A_nome_segnale)o ulteriori segnali di ingresso (eg segnali di
input nei contatori con LOAD)
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
FFDD Q
Q
I
CK
A
AA_RES
FFDI
CK
A
A
0
1U
S
AB U
S
AB
A_RESET A_RESET
Inoltre
- le RSS hanno un clock mentre le reti combinatorie no etc
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Driver 3-state
OE
I UOE=0
I U
OE=1
I U
I
OE
U
Qual egrave il valore dellrsquouscita
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 1
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 debbono 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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Estensione a 8 bit (meglio)
WE
OE
FFDD Q
QR
IN[70] OUT[70]0
1 Q[70]
A_RESET
CK
8888
88
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 2
Progettare una rete che periodicamente dopo ogni treperiodi di clock setta al livello logico 1 la propriauscita per un periodo clock
A_RESETCK
OUT
CK
OUT (0) (1) (2) (0) (1) (2)(3) (3)
OUT
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione canonica ottenuta mediante sintesi formale
Soluzione 31
A0 B0 C0 D1
Grafo degli stati
Tabella diflusso
sn sn+1
snu
u
A B 0
B C 0
C D 0D A 1
Tabella delle transizioni
y1n y0n u
0 0 0 1 0
0 1 1 0 0
1 0 1 1 01 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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
- E necessario ripetere tutti i passi precedenti (grafodiagramma stati hellip)
- Noi non studieremo questo metodo
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
COUNTERX4
Una possibile soluzione si basa sullutilizzo di un contatore modulo 4
Soluzione 32
CK
u1
u0 OUT
A_RESET
Progettare un contatore modulo 4hellip
A_RES
Perchegrave
u1
u0
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Contatore modulo 4
+1 s1
s0
ca1
a0
b1
b0
FFDDQ
Q clock
FFDDQ
Q clock
1
0
u0
u1
G
Registro a 2 bit
Stato futuroStato presentecoincidente conuscita in questo caso ndashgt rete F egrave lrsquoidentitagrave
Modello di Moore
OUT = u1middotu0
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Stato StatoPresente Futuro
00 -gt 0101 -gt 1010 -gt 1111 -gt 0000 -gt 01
Possiamo capire da questi valori come progettare la rete
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Logisim Evolution contatore modulo 4 UPDOWN
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 3
Progettare un registro a scorrimento (shift-register) a 3 bit
IN
A_RESET
CK
OUT1
OUT2
OUT0IN
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 allenable)
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 lavventura ricezione degli 8 bit
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 4
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
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
FFDD Q
QFFD
D Q
Q
IN
OUT
CK
Soluzione
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Perchegrave questa soluzione egrave sbagliata (2)
FFDD Q
Q
IN
OUT
CK
CK
IN
OUT
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Perchegrave questa soluzione egrave sbagliata (3)
FFDD Q
Q
IN OUT
CK
CK
IN
OUT
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 5
Progettare un rete che controlla se gli ultimi trecaratteri che si sono presentati sullrsquoingressoIN[70] mentre il segnale VAL era a livello logico 1sono stati FFh (primo carattere della sequenza) 27h e30h Nel caso sia rilevata la sequenza FF-27-30 nelperiodo di clock successivo a quello dellrsquoultimocarattere ricevuto (30h) deve essere asseritalrsquouscita OUT e rimanere tale fino a che non vieneasserito il segnale (asincrono) di reset A_RESET Inseguito ad un reset deve riprendere immediatamente ilcontrollo della sequenza in ingresso come se non fossestato ricevuto alcun carattere
VAL
A_RESET
IN[70]
CK
OUTVAL
A_RESETIN[70]
OUT
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
CK
IN[7hellip0]
A_RESET
VAL
30h FFh FFh 27h 55h 30h 30h 16h 80h
OUT (1) (2) (3)
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
374D Q
Q
0
1
VAL
8 8374
D Q
Q
0
1
VAL
8 8
30h
IN[7hellip0]
27h FFh
8
VAL
FFDD Q
Q
1
0OUT
R
RR
A_RESET
A_RESET
A_RESET
Il segnale EN condiziona lultimo carattere della sequenza
CK CK
CK
DEC_30 DEC_27 DEC_FF
OEOE
0 0
Soluzione 61
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
30h
27h
FFh
IN[7hellip0]
8
Soluzione 62
FFDD Q
QR
0
1
VAL
CKFFD
D Q
QR
0
1
VAL
CK
FFDD Q
QR
0
1
VAL
CK
DEC_30
DEC_27 DEC_27_1T
DEC_FF DEC_FF_2T
A_RESET
A_RESET A_RESET
FFDD Q
Q
1
0
OUT
R
A_RESETCK
DEC_30VAL
DEC_27_1TDEC_FF_2T
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione 63
CK A_RESET
LOAD
ENABLE
0 0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
Una soluzione alternativa utilizzando un contatore dotato di comando di LOAD
Cegrave un problemahellip
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I1
I0O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
ATTESO_FF
30h
IN[7hellip0]
27h
FFh
8
DEC_30
DEC_27
DEC_FF
LOAD = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
ENABLE = ATTESO_FFmiddotVALmiddotDEC_FF + ATTESO_27middotVALmiddotDEC_27 + ATTESO_30middotVALmiddotDEC_30
nella soluzione della pagina precedente cosa accade se icaratteri ricevuti (con VAL=1) sono FF-FF-27-30
DEC_FF
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizi
E6-1) Riprogettare la rete dellesercizio 6 in modo cheOUT assuma il valore logico 1 in seguito allaricezione anche non consecutiva (con VAL=1) deicaratteri FFh 27h e 30h
Ad esempio OUT=1 se i caratteri ricevuti (mentreVAL=1) sono stati FF-7A-80-9F-27-B2-30-hellip
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 6
Modificare lesercizio precedente in modo che in seguito al rilevamento della sequenza luscita 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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
374D Q
Q
0
1
EN
8 8374
D 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
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione 72
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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 allesercizio 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 dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizi
E6-1) Riprogettare la rete dellesercizio 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 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 7
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
ENA_RESET
IN[70]
CK
OUTOUTENA_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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
374D Q
Q
0
1
EN
8 8374
D 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 lultimo carattere della sequenza
CK CK
CK
FFDD Q
QR
A_RESETCK
Soluzione 81
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
CK A_RESET
LOAD
ENABLE
0
COUNTERX4
EN
A_RES
Q1
Q0
LI1 I0
DEC24
I0
I1O1
O0
O3
O2
EN
1
OUT
ATTESO_30
ATTESO_27
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
ENABLE = (ATTESO_FFmiddotENmiddotDEC_FF + ATTESO_27middotENmiddotDEC_27 + ATTESO_30middotENmiddotDEC_30)OUT_1
DEC_FF
Soluzione 82
FFDDQ
QR
A_RESETCK
OUT_1
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 8
Progettare una rete dotata di tre ingressi E AI A_RES e unuscita OUT Il segnale di ingresso AIinfluisce sulla rete solo se contemporaneamente E=1 Luscita 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 assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se AI=0 ed E=1 Dopo avere rilevato cinque eventi la rete deve riprendere immediatamente lrsquoanalisi degli ingressi
EAI
A_RESETCLOCK
OUTOUTEAI
A_RES
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
AILOAD
CLOCK
0 0
AI
A_RES
A_RESET
Soluzione 91
EIl conteggio egrave bloccato (EN=0) anche con E=1 se il contatore si trova nello stato 000 e il comando DOWN egrave asserito (AI=0)
STATO_0 = O2middotO1middotO0CONTEGGIO_INDIETRO = (AI)ENABLE_COUNTER = Emiddot(STATO_0middotCONTEGGIO_INDIETRO)
LOAD = OUT = O2middotO0
ENABLE_COUNTER O2O1O0
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Contatore modulo 8 con comando di UPDOWN
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
COUNTERX 8
EN
UD
LOAD
I2 I1 I0 O2O1O0
EAI
OUT
OUT
CLOCK
0 0
AI
O2O1O0
AI
A_RES
A_RESET
Soluzione 92
E
O1 non egrave necessario
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
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 93
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 9
Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione
RAM (12K)
EPROM (16K)
0000h
2FFFh
C000h
FFFFh
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)
1111 1111 1111 1111 (FFFFh)
0010 1111 1111 1111 (2FFFh)
1100 0000 0000 0000 (C000h)
RAM_1 (8k)
RAM_2 (2k)
RAM_3 (2k)
EPROM (16k)
0001 1111 1111 1111 (1FFFh)
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)
0010 1000 0000 0000 (2800h)
CS_RAM_1=A15middotA13
CS_RAM_2=A15middotA13middot A11CS_RAM_3=A15middotA13middot A11
CS_EPROM=A15
Segnali di decodifica
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
- Il segnale CS_EPROM si attiva per ogni indirizzo maggioreo uguale di 8000h (seconda metagrave dello spazio diindirizzamento) 0000h
C000h
FFFFh
8000h
Indirizzi di memoria con A15=1
CS_EPROM=A15
NOTA- La codifica semplificata implica lattivazione deisegnali di selezioni anche per indirizzi diversi daquelli in cui sono realmente presenti i dispositivi di memoria
EPROM (16K)
EPROM (16K)
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
- Il segnale CS_RAM_1 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=0
0000h
FFFFh
8000h
CS_RAM_1=A15middotA13
RAM_1 (8k)
A15A12 A11A8 A7A4 A3A0
0000 0000 0000 0000 (0000h)0001 1111 1111 1111 (1FFFh)
A15A12 A11A8 A7A4 A3A0
0100 0000 0000 0000 (4000h)0101 1111 1111 1111 (5FFFh)
Quindi CS_RAM_1=1 per entrambi i seguenti intervalli di memoria
1FFFh
4000hRAM_1 (8k)
5FFFh
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
- Il segnale CS_RAM_2 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0
0000h
FFFFh
8000h
CS_RAM_2=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 0000 0000 0000 (2000h)0010 0111 1111 1111 (27FFh)A15A12 A11A8 A7A4 A3A0
0011 0000 0000 0000 (3000h)0011 0111 1111 1111 (37FFh)
Quindi CS_RAM_2=1 per i seguenti quattro intervalli di memoria
2000h
4000h
6000h
A15A12 A11A8 A7A4 A3A0
0110 0000 0000 0000 (6000h)0110 0111 1111 1111 (67FFh)A15A12 A11A8 A7A4 A3A0
0111 0000 0000 0000 (7000h)0111 0111 1111 1111 (77FFh)
RAM_2 (2k)RAM_2 (2k) 3000h
RAM_2 (2k)RAM_2 (2k) 7000h
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
- Il segnale CS_RAM_3 si attiva per ogni indirizzo compresotra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1
0000h
FFFFh
CS_RAM_3=A15middotA13middotA11
A15A12 A11A8 A7A4 A3A0
0010 1000 0000 0000 (2800h)0010 1111 1111 1111 (2FFFh)A15A12 A11A8 A7A4 A3A0
0011 1000 0000 0000 (3800h)0011 1111 1111 1111 (3FFFh)
Quindi CS_RAM_3=1 per i seguenti quattro intervalli di memoria
2800h
6800h
A15A12 A11A8 A7A4 A3A0
0110 1000 0000 0000 (6800h)0110 1111 1111 1111 (6FFFh)A15A12 A11A8 A7A4 A3A0
0111 1000 0000 0000 (7800h)0111 1111 1111 1111 (7FFFh)
RAM_3 (2k)RAM_3 (2k) 3800h
RAM_3 (2k)RAM_3 (2k) 7800h
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
0000h
FFFFh
2800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
2000h
3800h RAM_2 (2k)RAM_3 (2k)
3000h
4000h
6800h RAM_2 (2k)RAM_3 (2k)
RAM_1 (8k)
6000h
7800h RAM_2 (2k)RAM_3 (2k)
7000h
EPROM (16K)
EPROM (16K)
8000h
C000h
Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata Nella figura seguente sono indicati solo gli indirizzi iniziali
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 11
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare nello parte bassa dello spazio di indirizzamento32k di RAM e nella parte alta 32k di EPROM
Nel sistema sono presenti anche due dispositivi di IO denominati D1 (dotato di due registri interni) e D2 (dotato di quattro registri interni)
- mappare in memoria anche i due dispositivi di IO D1 eD2 agli indirizzi 2000h e 1000h
Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO si scrivano i CS in forma semplificata di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi ldquosottrattirdquodai dispositivi di IO alla memoria
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione
RAM 1 chip da 32KBRAM (00000h-gt07FFFh)CS_RAM = BA19middotCS_D1middotCS_D2
EPROM 1 chip da 32KBEPROM (F8000h ndash FFFFFh)CS_EPROM = BA19
D1 Mappato in memoria allindirizzo 02000h occupa 2 locazioni (A0)nello spazio di indirizzamento
CS_D1 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middot BA5middotBA4middotBA3middotBA2middotBA1
D2 Mappato in memoria allindirizzo 01000h occupa 4 locazioni (A1A0) nello spazio di indirizzamento
CS_D2 = BA19middotBA14middotBA13middotBA12middotBA11middotBA10middotBA9middotBA8middotBA7middotBA6middotBA5middotBA4middotBA3middotBA2
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 12
Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit
- mappare 32k di RAM nella parte bassa dello spazio diindirizzamento 32k di RAM a partire dallindirizzo 1C000h e 64k EPROM nella parte alta dello spazio diindirizzamento
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
RAM_1 (32k)
RAM_2 (32k)
EPROM (64k)
00000h
10000h
20000h
30000h
F0000h
1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111
FFFFFh
Soluzione
00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111
F0000h 1111 0000 0000 0000 0000
FFFFFh 1011 1111 1111 1111 1111
CS_RAM_1=A19middotA17middotA16
CS_RAM_2=A19middot(A17 + A16)
CS_EPROM=A19
CS_RAM_2=A19middotCS_RAM_1
oppure
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 13
Progettare una rete che genera il codice Johnson a 3 bit (000-gt100-gt110-gt111-gt011-gt001-gt000-gthellip)
IN
A_RESET
CK
OUT1
OUT2
OUT0
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
FFDD Q
QR
A_RESET
OUT2OUT1OUT0
CK
NOTA- Poicheacute configurazioni adiacenti del codice Johnsondifferiscono di un solo bit loutput del contatore puograveessere utilizzato per generare forme donda prive dialee
Soluzione
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 14
Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello) 100-gt010-gt001-gt100-gthellip La rete egrave dotata di un comando di start asincrono (A_START)
A_START
CK
OUT1
OUT2
OUT0
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
FFDD Q
QR
FFDD Q
QR
FFDD Q
QR
A_START
OUT2OUT1OUT0
CK
Soluzione
S S S
1
1 1
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 15
Progettare un contatore modulo 2n-1 utilizzando uno shift-register a n bit
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
FFDD Q
QR
FFDD Q
QR
A_RESET
OUT1OUT0
CK
S S
1 1
Soluzione
Nel caso n=2
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 16
Progettare una rete che trasferisce in un FFD un bit memorizzato in un registro edge triggered a 4 bit Il bit da trasferire egrave individuato mediante i due segnali di selezione S1 ed S0 La scrittura nel registro a 4 bit egrave abilitata dal segnale WER mentre la scrittura nel FFD egrave abilitata dal segnale WEF
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione
Reg4 bit
WER
IN[30]
OUT1
4
OE
WE
D[30]
O3
O2
O1
O0
3
2
1
0
S1S0
0
1 FFDD Q
Q
WEF
CK
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio 17
Progettare una rete sincrona che quando il segnale ENABLE egrave attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WEe OE) verso uno dei quattro flip-flop denominati FF3 FF2 FF1 FF0 nellipotesi che
- sia presente oltre ai segnali che codificanola sorgente (S1S0) e la destinazione (D1D0) del trasferimento anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nelregistro
- il collegamento tra tutte le quattro uscite delregistro edge triggered e gli ingressi dei flip-flopdeve essere realizzato mediante un unico filo
- se il segnale ENABLE non egrave attivo le uscite delregistro a 4 bit devono essere elettricamentedisconnesse dal resto della rete
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Soluzione
Reg4 bit
IN[30]
OUT0
4
OE
WE
D[30]
O3
O2
O1
O0
FF0D Q
Q
CK
FF1D Q
Q
OUT1
FF2D Q
Q
FF3D Q
Q
OUT2
OUT3Percorso logico dei dati nel caso S1S0 = 11D1D0 = 10ENABLE = 1
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Reg4 bit
WER
IN[30]
OUT0
1
4
OE
WE
D[30]
O3
O2
O1
O0
S1S0
0
1 FFDD Q
Q
WEFCK
DEC24
3
2
10I0
I1
ENABLE EN
D1D0
DEC24
32
10I0
I1
ENABLE EN
0
1 FFDD Q
Q
OUT1
0
1 FFDD Q
Q
0
1 FFDD Q
Q
OUT2
OUT3DEC3DEC2DEC1DEC0
DEC0
DEC1
DEC2
DEC3
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state
Esercizio
E possibile modificare la soluzione dellesercizioprecedente in modo da utilizzare un MUX a 4 vie e unsolo buffer tri-state in sostituzione dei 4 buffer tri-state