Esercizi di Elettronica Digitale - "E. Fermi"

Transcript

Esercizi di Elettronica Digitale - "E. Fermi"
Esercizi di
Elettronica
Digitale
A.C. Neve – Esercizi Digitali
1
Porte logiche Elementari
A
0
0
1
1
B
0
1
0
1
AND
OR
NAND
NOR
EXOR
EXNOR
0
0
0
1
0
1
1
1
1
1
1
0
1
0
0
0
0
1
1
0
1
0
0
1
*
+
⊕
⊗
Reti logiche con interruttori
Vcc
OR
Out
R
AND
Out
Vcc
R
Vcc
R
NOT
NOR
Vcc
Vcc
Out
Out
R
R
Out
NAND
Insiemi di operatori Universale
AND-OR-NOT
NAND-NAND
NOR-NOR
A.C. Neve – Esercizi Digitali
2
Reti combinatorie con uscita singola
CD
AB
00
01
11
10
00
01
11
10
0
0
1
0
0
0
1
0
1
1
1
1
0
1
1
0
00
01
11
10
0
0
1
1
0
1
1
1
0
1
0
0
0
1
1
0
00
01
11
10
0
1
0
0
0
1
1
1
1
1
1
0
0
0
1
0
00
01
11
10
0
0
1
1
0
1
1
0
1
1
0
0
1
0
0
1
Z ( A, B, C , D) = AB + CD + BC
CD
AB
00
01
11
10
Z ( A, B, C , D) = AC + A BD + BCD
CD
AB
00
01
11
10
Z ( A, B, C , D) = A BC + A CD + ABC + AC D
CD
AB
00
01
11
10
A.C. Neve – Esercizi Digitali
Z ( A, B, C , D) = AC D + BC D + A CD + B CD
3
CD
AB
00
01
11
10
00
01
11
10
0
1
0
1
0
0
0
0
1
0
1
0
1
1
1
1
00
01
11
10
1
1
1
0
0
1
0
1
1
1
1
0
0
1
1
0
00
01
11
10
1
0
1
1
1
1
1
0
0
1
1
1
1
1
0
1
00
01
11
10
0
0
1
0
1
0
1
1
1
0
1
1
0
1
0
0
Z ( A, B, C , D) = A BC + ABC + ABD + AB D
CD
AB
00
01
11
10
Z ( A, B, C , D) = AB + BC + BD + A C D + A CD + AB C D
CD
AB
00
01
11
10
Z ( A, B, C , D) = BD + A B C + A CD + AC D + AB C
CD
AB
00
01
11
10
A.C. Neve – Esercizi Digitali
Z ( A, B, C , D) = AD + B D + ABC + A BCD
4
CD
AB
00
01
11
10
00
01
11
10
1
1
0
1
0
1
1
0
0
1
1
0
1
1
0
1
00
01
11
10
0
0
1
1
0
1
1
1
1
1
1
0
1
1
0
0
00
01
11
10
1
1
1
1
0
1
0
0
0
0
1
0
1
1
0
0
00
01
11
10
0
1
0
1
1
0
1
0
0
1
0
1
1
0
1
0
Z ( A, B, C , D) = BD + A B + B D
CD
AB
00
01
11
10
Z ( A, B, C , D) = AC + BD + A C
CD
AB
00
01
11
10
Z ( A, B, C , D) = C D + A D + A BC + ABCD
CD
AB
00
01
11
10
A.C. Neve – Esercizi Digitali
Z ( A, B, C , D) = ( A ⊗ B ) ⊗ (C ⊗ D)
5
Reti combinatorie non completamente specificate
CD
AB
00
01
11
10
00
01
11
10
0
1
1
1
0
1
x
0
0
0
0
1
x
0
x
x
00
01
11
10
1
0
1
1
0
1
0
0
x
x
x
x
1
0
x
x
00
01
11
10
1
0
1
x
1
x
0
x
1
1
0
0
0
0
0
x
00
01
11
10
1
0
x
x
1
0
x
x
0
1
x
0
1
0
x
1
Z ( A, B, C , D) = BC + AD + AB C
CD
AB
00
01
11
10
Z ( A, B, C , D) = AD + B D + A BD
CD
AB
00
01
11
10
Z ( A, B, C , D) = A D + B C + AC D
CD
AB
00
01
11
10
A.C. Neve – Esercizi Digitali
Z ( A, B, C , D) = B C + B D + BCD
6
CD
AB
00
01
11
10
00
01
11
10
x
0
1
1
0
1
1
1
x
1
0
0
0
1
1
x
00
01
11
10
1
0
1
x
1
x
0
x
1
0
0
x
0
x
0
x
00
01
11
10
1
0
1
x
1
x
0
x
1
1
0
x
0
x
0
x
00
01
11
10
0
0
1
1
1
x
0
1
x
1
x
0
0
0
x
x
Z ( A, B, C , D) = AC + AD + A BD + A BC
CD
AB
00
01
11
10
Z ( A, B, C , D) = B C + B D + AC D
CD
AB
00
01
11
10
Z ( A, B, C , D) = B C + A D + AC D
CD
AB
00
01
11
10
A.C. Neve – Esercizi Digitali
Z ( A, B, C , D) = A D + AD + AB C
7
Analisi di reti combinatorie
f ( A, B, C ) = C ⋅ ( B ⋅ ( A + B + C ) ⋅ C ) = C ⋅ ( B ⋅ ( A + B + C ) ⋅ C = C ⋅ ( B + ( A + B + C ) + C ) =
C ⋅ ( B + A B C + C ) = C B + A B C C + CC = C B ⋅ (1 + A ) = C B = C B = C + B
f ( A, B, C , D) = A B + D ⋅ ( B + C ) = A + B + B D + CD = A + B ⋅ (1 + D) + CD = A + B + CD
A.C. Neve – Esercizi Digitali
8
f ( A, B, C ) = ( A + B + C ) ⋅ ( AB + A B + A BC ) = ( A + B + C ) + ( AB + A B + A BC ) =
= A B C + ( AB ⋅ A B ⋅ A BC ) = A B C + ( A + B ) ⋅ ( A + B) ⋅ A BC = A B C + ( A A + A B + AB + B B) ⋅ A B C =
A B C + A BA B C + AB A B C = A B C
[
]
f ( A, B, C ) = ( A + B) ⋅ AB ⋅ B + C = ( A + B) + AB ⋅ B + C = ( AB + AB) ⋅ B + C =
AB B + ( A + B ) ⋅ B + C = AB + A B + B + C = ( A + A ) ⋅ B + B + C = B + B + C = B + C = BC
A.C. Neve – Esercizi Digitali
9
Circuiti combinatori con uscita multipla
Sommatore:
La funzione espletata da un sommatore a due bit è descritta dalla seguente tabella:
A
0
0
1
1
S = somma
C = riporto
B
0
1
0
1
S C
0 0
1 0
1 0
0 1
S = A B + AB = A ⊕ B
C = AB
Il circuito proposto è detto sommatore semplice (Half Adder) in quanto non tiene conto di eventuali
riporti precedenti.
La tabella di verità di un sommatore completo (Full Adder) è invece la seguente:
A
0
0
0
0
1
1
1
1
B Ci
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
S Co
0 0
1 0
1 0
0 1
1 0
0 1
0 1
1 1
Ci = riporto precedente
S = somma
Co = riporto successivo
S = A B Ci + A BCi + AB C i + ABCi = Ci ⋅ ( A B + AB) + C i ⋅ ( A B + AB ) =
= Ci ⋅ ( A ⊕ B) + C ⋅ ( A ⊕ B) = C ⊕ ( A ⊕ B)
Co = A BCi + AB Ci + ABC i + ABC = ( A B + AB ) ⋅ Ci + AB ⋅ (Ci + C i ) = AB + Ci ⋅ ( A ⊕ B)
Nella figura seguente è proposto il circuito di un Full Adder.
A.C. Neve – Esercizi Digitali
10
Sottrattore:
La funzione espletata da un sottratore a due bit è descritta dalla seguente tabella:
S = differenza
P = prestito
A
0
0
1
1
B
0
1
0
1
S P
0 0
1 1
1 0
0 0
S = A B + AB = A ⊕ B
P = AB
Il circuito proposto è detto sottrattore semplice (Half Subtractor) in quanto non tiene conto di
eventuali prestiti precedenti.
La tabella di verità di un sottrattore completo (Full Subtractor) è invece la seguente:
A.C. Neve – Esercizi Digitali
11
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
Pi
0
1
0
1
0
1
0
1
S Po
0 0
1 1
1 1
0 1
1 0
0 0
0 0
1 1
Pi = prestito precedente
S = differenza
Po = prestito successivo
S = A B Pi + A BP i + AB P i + ABPi =
Po = A B Pi + A BP i + A BPi + ABPi =
= Pi ⋅ ( A B + AB) + P i ⋅ ( A B + AB ) =
= Pi ⊕ ( A ⊕ B )
= A B ⋅ ( Pi + P i ) + Pi ⋅ ( A B + AB) =
= A B + Pi ⋅ ( A ⊗ B)
Nella figura seguente è proposto il circuito di un Full Subtractor.
A.C. Neve – Esercizi Digitali
12
Esercizio: Descrivere la funzione espletata dal seguente circuito
Il circuito proposto si comporta come una piccola ALU a due bit in grado di espletare le quattro
funzioni logiche elementari AND, OR, NAND e NOR. Gli ingressi sono A e B. I segnali di
selezione sono S1 ed S2.
S1
0
0
1
1
S2
0
1
0
0
Z1
A nand B
1
1
1
Z2
1
A nor B
1
1
Z3
0
0
A and B
0
Z4
0
0
0
A or B
Esercizio: Utilizzando un decodificatore, realizzare un generatore di parità a tre bit:
A.C. Neve – Esercizi Digitali
13
Esercizio: Realizzare, con porte logiche, un codificatore a priorità con quattro ingressi
I3
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
I2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
I1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
I0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
A1 A0
0 0
0 0
0 1
0 1
1 0
1 0
1 0
1 0
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 0
I1I0
I3I2
00
01
11
10
00
0
0
1
1
01
0
0
0
0
11
1
1
1
1
10
1
1
1
1
00
01
11
10
00
0
0
0
0
01
1
1
1
1
11
1
1
1
1
10
1
1
1
1
A0
I1I0
I3I2
A1
A0 = I 3 + I1I 2
A1 = I 2 + I 3
A.C. Neve – Esercizi Digitali
14
Esercizio: Realizzare un circuito che accetti in ingresso una parola in codice BCD8421 con codifica
Hamming, ne effettui il controllo d’errore ed eventualmente anche la correzione ed emetta in uscita
la parola corretta.
k1
k2
n0
k3
n1
n2
n3
1
2
3
4
5
6
7
1
2
3
4
n0
n1
n2
n3
Circuito per la rilevazione e correzione di errore
per codici BCD 8421 in codifica Hamming
HAMMING CODE INPUT
n3 n2 n1 k3 n0 k2 k1
P3
P2
3 --> 8
DECODER
7 6 5 4 3 2 1 0
n0
n1
n2
n3
A.C. Neve – Esercizi Digitali
BCD 8421 CORRECT OUTPUT
P1
15
Esercizio: Realizzare un convertitore di codice da BCD 8421 in BCD Eccesso-3.
N B3 B2 B1 B0 E3 E2 E1 E0
0 0 0 0 0 0 0 1 1
1 0 0 0 1 0 1 0 0
2 0 0 1 0 0 1 0 1
3 0 0 1 1 0 1 1 0
4 0 1 0 0 0 1 1 1
5 0 1 0 1 1 0 0 0
6 0 1 1 0 1 0 0 1
7 0 1 1 1 1 0 1 0
8 1 0 0 0 1 0 1 1
9 1 0 0 1 1 1 0 0
- 1 0 1 0 x x x x
- 1 0 1 1 x x x x
- 1 1 0 0 x x x x
- 1 1 0 1 x x x x
- 1 1 1 0 x x x x
- 1 1 1 1 x x x x
La tabella descrive una macchina combinatoria
avente quattro ingressi per il codice BCD 8421 e
quattro uscite per il corrispondente codice BCD
Eccesso-3.
B1B0
B3B2
B1B0
00
01
11
10
00
0
0
0
0
01
0
1
1
11
x
x
10
1
1
00
01
11
10
00
0
1
1
1
1
01
1
0
0
0
x
x
11
x
x
x
x
x
x
10
0
1
x
x
E 3 = B3 + B0 B 2 + B1B 2
B3B2
E 2 = B0 B 2 + B1B 2 + B 0 B1B 2
B1B0
B3B2
00
01
11
10
00
1
0
1
0
01
1
0
1
11
x
x
10
1
0
E1 = B0 B1 + B 0 B1
A.C. Neve – Esercizi Digitali
B1B0
B3B2
00
01
11
10
00
1
0
0
1
0
01
1
0
0
1
x
x
11
x
x
x
x
x
x
10
1
0
x
x
E0 = B 0
16
Esercizio: Realizzare un convertitore di codice da BCD Eccesso-3 in BCD 8421.
N E3 E2 E1 E0 B3 B2 B1 B0
- 0 0 0 0 x x x x
- 0 0 0 1 x x x x
- 0 0 1 0 x x x x
0 0 0 1 1 0 0 0 0
1 0 1 0 0 0 0 0 1
2 0 1 0 1 0 0 1 0
3 0 1 1 0 0 0 1 1
4 0 1 1 1 0 1 0 0
5 1 0 0 0 0 1 0 1
6 1 0 0 1 0 1 1 0
7 1 0 1 0 0 1 1 1
8 1 0 1 1 1 0 0 0
9 1 1 0 0 1 0 0 1
- 1 1 0 1 x x x x
- 1 1 1 0 x x x x
- 1 1 1 1 x x x x
La tabella descrive una macchina combinatoria
avente quattro ingressi per il codice BCD Eccesso-3
e quattro uscite per il corrispondente codice BCD
8421.
E1E0
E3E2
E1E0
00
01
11
10
00
x
x
0
x
01
0
0
0
11
1
x
10
0
0
00
01
11
10
00
x
x
0
x
0
01
0
0
1
0
x
x
11
0
x
x
x
1
0
10
1
1
0
1
B3 = E 0 E1E 3 + E 2 E 3
E3E2
B 2 = E 0 E1E 2 + E 0 E 2 + E 1E 2
E1E0
E3E2
00
01
11
10
00
x
x
0
x
01
0
1
0
11
0
x
10
0
1
B1 = E 0 E1E 3 + E 2 E 3
A.C. Neve – Esercizi Digitali
E1E0
E3E2
00
01
11
10
00
x
x
0
x
1
01
1
0
0
1
x
x
11
1
x
x
x
0
1
10
1
0
0
1
B0 = E 0
17
Esercizio: Realizzare un convertitore di codice da BCD 8421 in BCD GRAY.
N B3 B2 B1 B0 G3 G2 G1 G0
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
5 0 1 0 1 1 1 1 0
6 0 1 1 0 1 0 1 0
7 0 1 1 1 1 0 1 1
8 1 0 0 0 1 0 0 1
9 1 0 0 1 1 0 0 0
- 1 0 1 0 x x x x
- 1 0 1 1 x x x x
- 1 1 0 0 x x x x
- 1 1 0 1 x x x x
- 1 1 1 0 x x x x
- 1 1 1 1 x x x x
La tabella descrive una macchina combinatoria
avente quattro ingressi per il codice BCD 8421 e
quattro uscite per il corrispondente codice BCD
GRAY.
B1B0
B3B2
00
01
11
10
00
0
0
0
0
01
0
1
1
11
x
x
10
1
1
B1B0
00
01
11
10
00
0
0
0
0
1
01
1
1
0
0
x
x
11
x
x
x
x
x
x
10
0
0
x
x
00
01
11
10
G3 = B3 + B0 B 2 + B1B 2
B3B2
G 2 = B1B 2
B1B0
B3B2
B1B0
00
01
11
10
00
0
0
1
1
00
0
1
0
1
01
1
1
1
1
01
0
0
1
0
11
x
x
x
x
11
x
x
x
x
10
0
0
x
x
10
1
0
x
x
G1 = B1 + B 2
A.C. Neve – Esercizi Digitali
B3B2
G 0 = B 0 B3 + B 0 B1B 2 + B 0 B1B 2 + B0 B1B 2 B 3
18
Esercizio: Realizzare un convertitore di codice da BCD GRAY in BCD 8421.
N G3 G2 G1 G0 B3 B2 B1 B0
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
3 0 0 1 0 0 0 1 1
2 0 0 1 1 0 0 1 0
- 0 1 0 0 x x x x
- 0 1 0 1 x x x x
4 0 1 1 0 0 1 0 0
- 0 1 1 1 x x x x
9 1 0 0 0 1 0 0 1
8 1 0 0 1 1 0 0 0
6 1 0 1 0 0 1 1 0
7 1 0 1 1 0 1 1 1
- 1 1 0 0 x x x x
- 1 1 0 1 x x x x
5 1 1 1 0 0 1 0 1
- 1 1 1 1 x x x x
La tabella descrive una macchina combinatoria
avente quattro ingressi per il codice BCD GRAY e
quattro uscite per il corrispondente codice BCD
8421.
G1G0
G3G2
00
01
11
10
00
0
0
0
0
01
x
x
x
11
x
x
10
1
1
G1G0
00
01
11
10
00
0
0
0
0
0
01
x
x
x
1
x
0
11
x
x
x
1
0
0
10
0
0
1
1
00
01
11
10
B3 = G 1G3
G3G2
B 2 = G 2 + G1G3
G1G0
G3G2
G1G0
00
01
11
10
00
0
0
1
1
00
0
1
0
1
01
x
x
x
0
01
x
x
x
0
11
x
x
x
0
11
x
x
x
1
10
0
0
1
1
10
1
0
1
0
B1 = G1G 2
A.C. Neve – Esercizi Digitali
G3G2
B 0 = G 2G3 + G 0G1G3 + G 0G 1G3 + G 0G1G 2G 3 + G 0G1G3
19
Esercizio:
Realizzare un convertitore da CODICE GRAY in BINARIO LINEARE
Realizzare un convertitore da BINARIO LINEARE in CODICE GRAY
A.C. Neve – Esercizi Digitali
20
Reti sequenziali
Esercizio: Realizzare un contatore binario sincrono in avanti con modulo 5 e privo di protezione
antiblocco.
Un contatore modulo 5 richiede l’utilizzo di tre flip-flop in quanto 23>5.
Vengono utilizzati del flip-flop JK la cui tabella di transizione inversa è la seguente.
Qn →
0
0
1
1
J
0
1
x
x
Qn+1
0
1
0
1
K
x
x
1
0
L’evoluzione degli stati è descritta dalla seguente tabella :
Clock
0
1
2
3
4
-
Stato presente
Stato futuro
Q2 Q1 Q0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Q’2 Q’1 Q’0
0 0 1
0 1 0
0 1 1
1 0 0
0 0 0
x x x
x x x
x x x
J2
0
0
0
1
x
x
x
x
K2
x
x
x
x
1
x
x
x
J1
0
1
x
x
0
x
x
x
K1
x
x
0
1
x
x
x
x
J0
1
x
1
x
0
x
x
x
Q1Q0
Q1Q0
Q2
K0
x
1
x
1
x
x
x
x
00
01
11
10
0
0
0
1
0
1
x
x
x
x
Q2
00
01
11
10
0
x
x
x
x
1
1
x
x
x
K2 =1
J 2 = Q0Q1
Q1Q0
Q2
00
01
11
10
0
0
1
x
x
1
0
x
x
x
Q1Q0
Q2
00
01
11
10
0
x
x
1
0
1
x
x
x
x
J1 = Q0
K1 = Q0
Q1Q0
Q2
00
01
11
10
0
1
x
x
1
1
0
x
x
x
J0 = Q2
A.C. Neve – Esercizi Digitali
Q1Q0
Q2
00
01
11
10
0
x
1
1
x
1
x
x
x
x
K0 =1
21
Il relativo circuito risulta il seguente:
Il grafo che descrive l’evoluzione degli stati è invece il seguente:
111
Come si può notare, la scelta pur casuale delle
condizioni non specificate, è stata tale da non
generare alcun anello di conteggio secondario e
quindi il contatore è antiblocco.
000
100
001
011
010
110
101
Si evidenzia che, con una scelta sfortunata dei sottocubi sulle mappe di Karnaugh il risultato finale
sarebbe risultato fallimentare come si può notare in seguito:
A.C. Neve – Esercizi Digitali
22
Q1Q0
Q1Q0
Q2
00
01
11
10
0
0
0
1
0
1
x
x
x
x
Q2
00
01
11
10
0
x
x
x
x
1
1
x
x
x
J 2 = Q0Q1
K 2 = Q 0Q 1
Q1Q0
Q2
00
01
11
10
0
0
1
x
x
1
0
x
x
x
Q1Q0
Q2
00
01
11
10
0
x
x
1
0
1
x
x
x
x
J1 = Q0
K1 = Q0
Q1Q0
Q2
00
01
11
10
0
1
x
x
1
1
0
x
x
x
Q1Q0
Q2
J 0 = Q1 + Q 2
00
01
11
10
0
x
1
1
x
1
x
x
x
x
K 0 = Q1 + Q 2
Con queste scelte si ottiene ancora il contatore richiesto che ha però il seguente grafo degli stati:
000
110
100
001
101
011
111
010
Il contatore così ottenuto presenta però un pericoloso anello di conteggio secondario.
Una tecnica più affidabile per impostare il progetto di un contatore sincrono consiste nell’assegnare,
fin dall’inizio, le transizioni degli stati non utilizzati in modo da confluire rapidamente nell’anello
di conteggio principale come si può notare nella tabella successiva.
In questo caso, gli stati non utilizzati vengono fatti confluire tutti nello stato iniziale 000.
A.C. Neve – Esercizi Digitali
23
Clock
0
1
2
3
4
-
Stato presente
Stato futuro
Q2 Q1 Q0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Q’2 Q’1 Q’0
0 0 1
0 1 0
0 1 1
1 0 0
0 0 0
0 0 0
0 0 0
0 0 0
J2
0
0
0
1
x
x
x
x
K2
x
x
x
x
1
1
1
1
J1
0
1
x
x
0
0
x
x
K1
x
x
0
1
x
x
1
1
J0
1
x
1
x
0
x
0
x
K0
x
1
x
1
x
1
x
1
Q1Q0
Q1Q0
Q2
00
01
11
10
0
0
0
1
0
1
x
x
x
x
Q2
00
01
11
10
0
x
x
x
x
1
1
1
1
1
K2 =1
J 2 = Q0Q1
Q1Q0
Q2
00
01
11
10
0
0
1
x
x
1
0
0
x
x
Q1Q0
Q2
00
01
11
10
0
x
x
1
0
1
x
x
1
1
J 1 = Q0Q 2
K1 = Q0 + Q 2
Q1Q0
Q1Q0
Q2
00
01
11
10
0
1
x
x
1
1
0
x
x
0
J0 = Q2
A.C. Neve – Esercizi Digitali
Q2
00
01
11
10
0
x
1
1
x
1
x
1
1
x
K0 =1
24
Il relativo diagramma degli stati è il seguente:
101
111
110
000
100
001
011
A.C. Neve – Esercizi Digitali
010
25
Esercizio: Realizzare un contatore sincrono modulo 6 i cui stati si evolvano in codice Gray.
Sono necessari tre flip-flop.
Risultando di tipo Gray, il codice di uscita dovrà essere monoprogressivo e ciclico per cui sarà
necessaria una particolare attenzione nella scelta degli stati da scartare.
Una possibile scelta è visibile è proposta nella seguente tabella di transizione degli stati:
Clock
0
1
2
3
4
5
-
Stato presente
Stato futuro
Q2 Q1 Q0
0 0 0
0 0 1
0 1 1
1 1 1
1 0 1
1 0 0
0 1 0
1 1 0
Q’2 Q’1 Q’0
0 0 1
0 1 1
1 1 1
1 0 1
1 0 0
0 0 0
0 0 0
1 0 0
J2
0
0
1
x
x
x
0
x
K2
x
x
x
0
0
1
x
0
J1
0
1
x
x
0
0
x
x
K1
x
x
0
1
x
x
1
1
J0
1
x
x
x
x
0
0
0
K0
x
0
0
0
1
x
x
x
ATTENZIONE AL RIEMPIMENTO DELLE MAPPE
Q1Q0
Q1Q0
Q2
00
01
11
10
0
0
0
1
0
1
x
x
x
x
Q2
00
01
11
10
0
x
x
x
x
1
1
0
0
0
J 2 = Q0Q1
K 2 = Q 0Q 1
Q1Q0
Q2
00
01
11
10
0
0
1
x
x
1
0
0
x
x
Q1Q0
Q2
00
01
11
10
0
x
x
0
1
1
x
x
1
1
J 1 = Q0Q 2
K1 = Q 0 + Q 2
Q1Q0
Q2
00
01
11
10
0
1
x
x
0
1
0
x
x
0
J 0 = Q 1Q 2
A.C. Neve – Esercizi Digitali
Q1Q0
Q2
00
01
11
10
0
x
0
0
x
1
x
1
0
x
K 0 = Q 1Q 2
26
Il grafo degli stati è il seguente:
101
110
111
100
011
000
010
001
A.C. Neve – Esercizi Digitali
27
Esercizio: Realizzare un contatore binario sincrono all’indietro con modulo 7
Sono necessari tre flip-flop.
In questo esempio, lo stato non utilizzato è quello 000.
La tabella di transizione degli stati risulta la seguente:
Clock
0
1
2
3
4
5
6
-
Stato presente
Stato futuro
Q2 Q1 Q0
1 1 1
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
0 0 0
Q’2 Q’1 Q’0
1 1 0
1 0 1
1 0 0
0 1 1
0 1 0
0 0 1
1 1 1
x x x
J2
x
x
x
x
0
0
1
x
K2
0
0
0
1
x
x
x
x
J1
x
x
0
1
x
x
1
x
K1
0
1
x
x
0
1
x
x
J0
x
1
x
1
x
1
x
x
K0
1
x
1
x
1
x
0
x
ATTENZIONE AL RIEMPIMENTO DELLE MAPPE
Q1Q0
Q1Q0
Q2
00
01
11
10
0
x
1
0
0
1
x
x
x
x
Q2
00
01
11
10
0
x
x
x
x
1
1
0
0
0
K 2 = Q 0Q 1
J 2 = Q1
Q1Q0
Q2
00
01
11
10
0
x
1
x
x
1
1
0
x
x
Q1Q0
Q2
00
01
11
10
0
x
x
0
1
1
x
x
0
1
J1 = Q 0 + Q 2
K1 = Q 0
Q1Q0
Q2
00
01
11
10
0
x
x
x
1
1
1
x
x
1
J0 =1
A.C. Neve – Esercizi Digitali
Q1Q0
Q2
00
01
11
10
0
x
0
1
x
1
x
1
1
x
K 0 = Q1 + Q 2
28
Il relativo grafo degli stati è il seguente:
100
101
110
011
111
010
A.C. Neve – Esercizi Digitali
000
001
29
Esercizio: Realizzare un contatore binario sincrono in avanti con modulo 10 e privo di anelli
secondari di conteggio.
Sono necessari quattro flip-flop.
Una conveniente assegnazione degli stati esclusi risulta essere la seguente:
0110
0111
1100
0101
1101
0100
0011
1011
1010
Stato presente
1000
0010
1001
0000
1111
0001
1110
Stato futuro
Clock Q3 Q2 Q1 Q0 Q’3 Q’2 Q’1 Q’0 J3 K3 J2 K2 J1 K1 J0 K0
0
0 0 0 0
0 0 0 1
0 x
0 x
0 x
1 x
1
0 0 0 1
0 0 1 0
0 x
0 x
1 x
x 1
2
0 0 1 0
0 0 1 1
0 x
0 x
x 0
1 x
3
0 0 1 1
0 1 0 0
0 x
1 x
x 1
x 1
4
0 1 0 0
0 1 0 1
0 x
x 0
0 x
1 x
5
0 1 0 1
0 1 1 0
0 x
x 0
1 x
x 1
6
0 1 1 0
0 1 1 1
0 x
x 0
x 0
1 x
7
0 1 1 1
1 0 0 0
1 x
x 1
x 1
x 1
8
1 0 0 0
1 0 0 1
x 1
0 x
0 x
1 x
9
1 0 0 1
0 0 0 0
x 1
0 x
0 x
x 1
1 0 1 0
1 0 1 1
x 0
0 x
x 0
1 x
1 0 1 1
0 1 0 0
x 1
1 x
x 1
x 1
1 1 0 0
1 1 0 1
x 0
x 0
0 x
1 x
1 1 0 1
0 1 0 0
x 1
x 0
0 x
x 1
1 1 1 0
1 1 1 1
x 0
x 0
x 0
1 x
1 1 1 1
0 0 0 0
x 1
x 1
x 1
x 1
A.C. Neve – Esercizi Digitali
30
Q1Q0
Q1Q0
Q3Q2
00
01
11
10
00
x
x
x
x
0
01
x
x
x
x
x
x
11
0
1
1
0
x
x
10
0
1
1
0
00
01
11
10
00
0
0
0
0
01
0
0
1
11
x
x
10
x
x
Q3Q2
K 3 = Q0
J 3 = Q0Q1Q 2
Q1Q0
Q1Q0
Q3Q2
00
01
11
10
00
x
x
x
x
x
01
0
0
1
0
x
x
11
0
0
1
0
1
0
10
x
x
x
x
00
01
11
10
00
0
0
1
0
01
x
x
x
11
x
x
10
0
0
Q3Q2
K 2 = Q0Q1
J 2 = Q0Q1
Q1Q0
Q1Q0
Q3Q2
00
01
11
10
00
x
x
1
0
x
01
x
x
1
0
x
x
11
x
x
1
0
x
x
10
x
x
1
0
00
01
11
10
00
0
1
x
x
01
0
1
x
11
0
0
10
0
0
Q3Q2
K1 = Q0
J 1 = Q0Q 3
Q1Q0
Q1Q0
Q3Q2
00
01
11
10
00
x
1
1
x
1
01
x
1
1
x
x
1
11
x
1
1
x
x
1
10
x
1
1
x
00
01
11
10
00
1
x
x
1
01
1
x
x
11
1
x
10
1
x
J0 =1
A.C. Neve – Esercizi Digitali
Q3Q2
K0 =1
31
Come si può notare, il circuito finale è dotato di una uscita ausiliaria di riporto per il collegamento
in cascata di più contatori (decadi di conteggio), di un ingresso di reset generale e di un ingresso di
abilitazione al conteggio.
Si evidenzia la particolare semplicità del circuito grazie alla opportuna scelta delle transizioni
assegnate agli stati non utilizzati.
A.C. Neve – Esercizi Digitali
32
Esercizio: Progettare un sistema che sia in grado di gestire tre pulsanti per tre concorrenti di un
telequiz e funzioni nel seguente modo:
Quando un concorrente schiaccia il suo pulsante prima degli altri due, si accende su un display il
numero ad esso associato (1,2,3) e contemporaneamente viene inibito il funzionamento degli altri
due pulsanti. Il sistema deve essere poi dotato di un quarto pulsante per il presentatore il cui
azionamento faccia spegnere totalmente il display e riabiliti il funzionamento dei tre pulsanti.
In linea di principio, il sistema dovrebbe utilizzare un numero di flip-flop almeno uguale al numero
di concorrenti. Le uscite dei flip-flop, adeguatamente codificate dovrebbero pilotare un driver BCD7segmenti e, contemporaneamente, inibire il funzionamento degli altri due pulsanti ad eccezione di
quello per il reset generale.
Una possibile soluzione è proposta nel circuito seguente.
Il sistema può essere resettato attivando il pulsante di RESET il quale genera uno zero logico sigli
ingressi di clear dei tre flip-flop.
In queste condizioni, le tre uscite Q 1, Q 2, Q 3 sono all’1 logico abilitando cos’ le tre porte AND a
lasciar passare gli impulsi provenienti dai tre pulsanti.
L’attivazione di uno qualsiasi dei tre pulsanti manderà all’1 logico l’uscita Q del flip-flop associato
ed a zero quella negata la quale, a sua volta, adrà a bloccare le uscite delle tre porte AND e quindi la
funzionalità dei restanti pulsanti.
A.C. Neve – Esercizi Digitali
33
Esercizio: Generatore digitale di numeri peudo casuali.
La generazione di numeri pseudo casuali si ottiene facendo uso di registri a scorrimento (shift
register) retroazionati riportando cioè in ingresso un segnale proveniente dalla combinazione dei bit
di uscita.
Un registro a scorrimento di M bit viene pilotato con un clock a frequenza fo.
L’ingresso del registro a scorrimento viene pilotato dall’uscita di una porta ex-OR i cui ingressi
sono collegati alle uscite del registro a scorrimento (N e M) una delle quali è sempre l’ultimo bit M.
La lunghezza massima della sequenza di numeri così ottenibile è pari a 2M-1 poiché lo stato formato
da tutti zero bloccherebbe la generazione dei numeri.
Questo valore della lunghezza della sequenza può essere ottenuto solo con una opportuna scelta dei
valori di N ed M.
Una volta generata l’intera sequenza, questa tornerà a ripetersi in modo periodico.
La tabella seguente descrive i valori di M ed N e le relative lunghezze delle sequenze ottenibili.
M
4
5
6
7
9
10
11
15
20
25
31
35
39
N
3
3
5
6
5
7
9
14
17
22
28
33
35
Lunghezza
15
31
63
127
511
1023
2047
32767
1048575
33554431
2147483647
34359738367
549755813887
1
2
3
N
M
Nel caso in cui si volessero utilizzare dei registri di dimensione multipla di 8 bit, si dovranno
utilizzare più di due linee di retroazione come descritto dalla seguente tabella.
M
8
16
24
N1
4
4
17
N2
5
13
22
N3
6
15
23
Lunghezza
255
65535
16777215
Nelle figure seguenti sono proposti i circuiti di due generatori di numeri pseudo casuali
rispettivamente ad 8 e 16 bit.
A.C. Neve – Esercizi Digitali
34
A.C. Neve – Esercizi Digitali
35
Esercizio: Realizzare il circuito di pilotaggio di un motore passo-passo unipolare.
Un motore passo-passo unipolare è
costituito da quattro avvolgimenti la cui
alimentazione consente lo spostamento o
il bloccaggio del rotore.
L’alimentazione delle quattro fasi, per
mezzo della modalità Full Step, deve
avvenire secondo opportune sequenze
applicate attraverso i quattro transistor
che operano in regime ON-OFF.
Nella tabella seguente è descritta la
sequenza degli stati assunti dai quattro
avvogimenti:
Step
1
2
3
4
Q1
ON
ON
OFF
OFF
Q2
OFF
OFF
ON
ON
Q3
ON
OFF
OFF
ON
Q4
OFF
ON
ON
OFF
CCW
CW
Il relativo diagramma temporale è il seguente:
Q1
t
Q2
t
Q3
t
Q4
t
CW
CCW
A secondo dell’evoluzione della sequenza degli stati, la rotazione potrà essere oraria (CW) oppure
antiorario (CCW).
Dal diagramma temporale si può anche notare che: lo stato Q2 è il negato dello stato Q1 e lo stato
Q4 è invece il negato dello stato Q3. Ciò implica che, le quattro fasi potranno essere prelevate dalle
uscite di solo due flip-flop e che i segnali da generare saranno soltanto Q1 e Q3
A.C. Neve – Esercizi Digitali
36
Ai fini della progettazione del contatore le quattro fasi ora esaminate saranno così indicate:
Q1 = Q1 Q 2 = Q 1
Q3 = Q 0
Q4 = Q 0
Le uscite dei due flip-flop avranno le seguenti sequenze temporali:
Q1 = 1 1 0 0
Q0 = 0 1 1 0
Dalle quali otterremo i seguenti grafi degli stati di due distinti contatori:
01
00
01
11
CCW
00
10
CW
11
10
La tabella di transizione del primo contatore (CCW) è la seguente:
Q1
1
1
0
0
Q0
0
1
1
0
Q1’
1
0
0
1
Q0’
1
1
0
0
J1 K1
x
0
x 1
0 x
1 x
J0 K0
1 x
x 0
x 1
0 x
Dalla quale si ottiene:
J1 = Q 0
K1 = Q0
J 0 = Q1
K 0 = Q1
La tabella di transizione del secondo contatore (CW) è la seguente:
Q1
1
1
0
0
Q0
0
1
1
0
Q1’
1
0
0
1
Q0’
1
1
0
0
J1 K1
x
1
0 x
1 x
x 0
J0 K0
0 x
1 x
x 0
x 1
Dalla quale si ottiene:
J1 = Q0
K1 = Q 0
J 0 = Q1
K 0 = Q1
Osservando i risultati ottenuti per i due tipi di contatori, si può notare dalle simmetrie dei valori che
non sarà necessario realizzare due circuiti separati ma, basterà aggiungere un selezionatore sulle
uscite dei due fòip-flop così da poter riportare sugli ingressi K le uscite Q o Q negata. L’ingresso J è
invece uguale al valore di K negato. L’ingresso si selezione sarà utilizzato per controllare il verso di
rotazione del motore. Nella figura seguente è proposto lo schema completo.
A.C. Neve – Esercizi Digitali
37
Un circuito alternativo ma più efficiente è invece il seguente.
A.C. Neve – Esercizi Digitali
38