Professional Documents
Culture Documents
Elettronica
Digitale
* + ⊕ ⊗
Vcc
OR Out
R
Vcc Out
AND R
Vcc Out
R
NOT
Vcc Out
R
NOR
Vcc Out
R
NAND
AND-OR-NOT
NAND-NAND
NOR-NOR
CD
AB 00 01 11 10
00 0 0 1 0
Z ( A, B, C , D) = AB + CD + BC
01 0 0 1 1
11 1 1 1 1
10 0 0 1 0
CD
AB 00 01 11 10
00 0 0 0 0
Z ( A, B, C , D) = AC + A BD + BCD
01 0 1 1 1
11 1 1 0 1
10 1 1 0 0
CD
AB 00 01 11 10
00 0 0 1 0
01 1 1 1 0 Z ( A, B, C , D) = A BC + A CD + ABC + AC D
11 0 1 1 1
10 0 1 0 0
CD
AB 00 01 11 10
00 0 0 1 1
01 0 1 1 0 Z ( A, B, C , D) = AC D + BC D + A CD + B CD
11 1 1 0 0
10 1 0 0 1
00 0 0 1 1
01 1 0 0 1
Z ( A, B, C , D) = A BC + ABC + ABD + AB D
11 0 0 1 1
10 1 0 0 1
CD
AB 00 01 11 10
00 1 0 1 0 Z ( A, B, C , D) = AB + BC + BD + A C D + A CD + AB C D
01 1 1 1 1
11 1 0 1 1
10 0 1 0 0
CD
AB 00 01 11 10
00 1 1 0 1
01 0 1 1 1 Z ( A, B, C , D) = BD + A B C + A CD + AC D + AB C
11 1 1 1 0
10 1 0 1 1
CD
AB 00 01 11 10
00 0 1 1 0
01 0 0 0 1
Z ( A, B, C , D) = AD + B D + ABC + A BCD
11 1 1 1 0
10 0 1 1 0
00 1 0 0 1
01 1 1 1 1
Z ( A, B, C , D) = BD + A B + B D
11 0 1 1 0
10 1 0 0 1
CD
AB 00 01 11 10
00 0 0 1 1
01 0 1 1 1 Z ( A, B, C , D) = AC + BD + A C
11 1 1 1 0
10 1 1 0 0
CD
AB 00 01 11 10
00 1 0 0 1
01 1 1 0 1
11 1 0 1 0 Z ( A, B, C , D) = C D + A D + A BC + ABCD
10 1 0 0 0
CD
AB 00 01 11 10
00 0 1 0 1
01 1 0 1 0
Z ( A, B, C , D) = ( A ⊗ B ) ⊗ (C ⊗ D)
11 0 1 0 1
10 1 0 1 0
CD
AB 00 01 11 10
00 0 0 0 x
01 1 1 0 0 Z ( A, B, C , D) = BC + AD + AB C
11 1 x 0 x
10 1 0 1 x
CD
AB 00 01 11 10
00 1 0 x 1
01 0 1 x 0 Z ( A, B, C , D) = AD + B D + A BD
11 1 0 x x
10 1 0 x x
CD
AB 00 01 11 10
00 1 1 1 0
01 0 x 1 0 Z ( A, B, C , D) = A D + B C + AC D
11 1 0 0 0
10 x x 0 x
CD
AB 00 01 11 10
00 1 1 0 1
01 0 0 1 0 Z ( A, B, C , D) = B C + B D + BCD
11 x x x x
10 x x 0 1
00 x 0 x 0
01 0 1 1 1 Z ( A, B, C , D) = AC + AD + A BD + A BC
11 1 1 0 1
10 1 1 0 x
CD
AB 00 01 11 10
00 1 1 1 0
01 0 x 0 x Z ( A, B, C , D) = B C + B D + AC D
11 1 0 0 0
10 x x x x
CD
AB 00 01 11 10
00 1 1 1 0
01 0 x 1 x
Z ( A, B, C , D) = B C + A D + AC D
11 1 0 0 0
10 x x x x
CD
AB 00 01 11 10
00 0 1 x 0
01 0 x 1 0 Z ( A, B, C , D) = A D + AD + AB C
11 1 0 x x
10 1 1 0 x
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
[ ]
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
Sommatore:
A B S C
S = somma 0 0 0 0
C = riporto 0 1 1 0
1 0 1 0
1 1 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 B Ci S Co
0 0 0 0 0
0 0 1 1 0 Ci = riporto precedente
0 1 0 1 0 S = somma
0 1 1 0 1 Co = riporto successivo
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
A B S P
S = differenza 0 0 0 0
P = prestito 0 1 1 1
1 0 1 0
1 1 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:
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 S2 Z1 Z2 Z3 Z4
0 0 A nand B 1 0 0
0 1 1 A nor B 0 0
1 0 1 1 A and B 0
1 0 1 1 0 A or B
I3 I2 I1 I0 A1 A0 I1I0
0 0 0 0 0 0 I3I2 00 01 11 10
0 0 0 1 0 0 00 0 0 1 1
0 0 1 0 0 1
0 0 1 1 0 1 01 0 0 0 0 A0
0 1 0 0 1 0
0 1 0 1 1 0
11 1 1 1 1
0 1 1 0 1 0 10 1 1 1 1
0 1 1 1 1 0
1 0 0 0 1 1 I1I0
1 0 0 1 1 1 I3I2 00 01 11 10
1 0 1 0 1 1 00 0 0 0 0
1 0 1 1 1 1
A1
1 1 0 0 1 1 01 1 1 1 1
1 1 0 1 1 1
1 1 1 0 1 1
11 1 1 1 1
1 1 1 1 1 0 10 1 1 1 1
A0 = I 3 + I1I 2
A1 = I 2 + I 3
k1 1
k2 2
1 n0
n0 3
2 n1
k3 4
3 n2
n1 5
4 n3
n2 6
n3 7
P3
P2 3 --> 8
DECODER
7 6 5 4 3 2 1 0
P1
BCD 8421 CORRECT OUTPUT
n0
n1
n2
n3
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 La tabella descrive una macchina combinatoria
3 0 0 1 1 0 1 1 0 avente quattro ingressi per il codice BCD 8421 e
4 0 1 0 0 0 1 1 1 quattro uscite per il corrispondente codice BCD
5 0 1 0 1 1 0 0 0 Eccesso-3.
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
B1B0 B1B0
B3B2 00 01 11 10 B3B2 00 01 11 10
00 0 0 0 0 00 0 1 1 1
01 0 1 1 1 01 1 0 0 0
11 x x x x 11 x x x x
10 1 1 x x 10 0 1 x x
B1B0 B1B0
B3B2 00 01 11 10 B3B2 00 01 11 10
00 1 0 1 0 00 1 0 0 1
01 1 0 1 0 01 1 0 0 1
11 x x x x 11 x x x x
10 1 0 x x 10 1 0 x x
E1 = B0 B1 + B 0 B1 E0 = B 0
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 La tabella descrive una macchina combinatoria
0 0 0 1 1 0 0 0 0 avente quattro ingressi per il codice BCD Eccesso-3
1 0 1 0 0 0 0 0 1 e quattro uscite per il corrispondente codice BCD
2 0 1 0 1 0 0 1 0 8421.
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
E1E0 E1E0
E3E2 00 01 11 10 E3E2 00 01 11 10
00 x x 0 x 00 x x 0 x
01 0 0 0 0 01 0 0 1 0
11 1 x x x 11 0 x x x
10 0 0 1 0 10 1 1 0 1
B3 = E 0 E1E 3 + E 2 E 3 B 2 = E 0 E1E 2 + E 0 E 2 + E 1E 2
E1E0 E1E0
E3E2 00 01 11 10 E3E2 00 01 11 10
00 x x 0 x 00 x x 0 x
01 0 1 0 1 01 1 0 0 1
11 0 x x x 11 1 x x x
10 0 1 0 1 10 1 0 0 1
B1 = E 0 E1E 3 + E 2 E 3 B0 = E 0
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 La tabella descrive una macchina combinatoria
3 0 0 1 1 0 0 1 0 avente quattro ingressi per il codice BCD 8421 e
4 0 1 0 0 0 1 1 0 quattro uscite per il corrispondente codice BCD
5 0 1 0 1 1 1 1 0 GRAY.
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
B1B0 B1B0
B3B2 00 01 11 10 B3B2 00 01 11 10
00 0 0 0 0 00 0 0 0 0
01 0 1 1 1 01 1 1 0 0
11 x x x x 11 x x x x
10 1 1 x x 10 0 0 x x
G3 = B3 + B0 B 2 + B1B 2 G 2 = B1B 2
B1B0 B1B0
B3B2 00 01 11 10 B3B2 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
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 La tabella descrive una macchina combinatoria
2 0 0 1 1 0 0 1 0 avente quattro ingressi per il codice BCD GRAY e
- 0 1 0 0 x x x x quattro uscite per il corrispondente codice BCD
- 0 1 0 1 x x x x 8421.
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
G1G0 G1G0
G3G2 00 01 11 10 G3G2 00 01 11 10
00 0 0 0 0 00 0 0 0 0
01 x x x 0 01 x x x 1
11 x x x 0 11 x x x 1
10 1 1 0 0 10 0 0 1 1
B3 = G 1G3 B 2 = G 2 + G1G3
G1G0 G1G0
G3G2 00 01 11 10 G3G2 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
Esercizio: Realizzare un contatore binario sincrono in avanti con modulo 5 e privo di protezione
antiblocco.
Qn → Qn+1 J K
0 0 0 x
0 1 1 x
1 0 x 1
1 1 x 0
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 0 0 1 0 0 x x x x
1 x x x x 1 1 x x x
J 2 = Q0Q1 K2 =1
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 0 1 x x 0 x x 1 0
1 0 x x x 1 x x x x
J1 = Q0 K1 = Q0
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 1 x x 1 0 x 1 1 x
1 0 x x x 1 x x x x
J0 = Q2 K0 =1
111
000
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.
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:
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 0 1 x x 0 x x 1 0
1 0 x x x 1 x x x x
J1 = Q0 K1 = Q0
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 1 x x 1 0 x 1 1 x
1 0 x x x 1 x x x x
J 0 = Q1 + Q 2 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 111
011 010
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.
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 0 1 x x 0 x x 1 0
1 0 0 x x 1 x x 1 1
J 1 = Q0Q 2 K1 = Q0 + Q 2
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 1 x x 1 0 x 1 1 x
1 0 x x 0 1 x 1 1 x
J0 = Q2 K0 =1
000
100 001
011 010
Una possibile scelta è visibile è proposta nella seguente tabella di transizione degli stati:
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 0 0 1 0 0 x x x x
1 x x x x 1 1 0 0 0
J 2 = Q0Q1 K 2 = Q 0Q 1
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 0 1 x x 0 x x 0 1
1 0 0 x x 1 x x 1 1
J 1 = Q0Q 2 K1 = Q 0 + Q 2
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 1 x x 0 0 x 0 0 x
1 0 x x 0 1 x 1 0 x
J 0 = Q 1Q 2 K 0 = Q 1Q 2
101
110
111 100
011 000
010
001
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 x 1 0 0 0 x x x x
1 x x x x 1 1 0 0 0
J 2 = Q1 K 2 = Q 0Q 1
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 x 1 x x 0 x x 0 1
1 1 0 x x 1 x x 0 1
J1 = Q 0 + Q 2 K1 = Q 0
Q1Q0 Q1Q0
Q2 00 01 11 10 Q2 00 01 11 10
0 x x x 1 0 x 0 1 x
1 1 x x 1 1 x 1 1 x
J0 =1 K 0 = Q1 + Q 2
010 001
1011 1010
00 0 0 0 0 00 x x x x
01 0 0 1 0 01 x x x x
11 x x x x 11 0 1 1 0
10 x x x x 10 0 1 1 0
J 3 = Q0Q1Q 2 K 3 = Q0
Q1Q0 Q1Q0
Q3Q2 00 01 11 10 Q3Q2 00 01 11 10
00 0 0 1 0 00 x x x x
01 x x x x 01 0 0 1 0
11 x x x x 11 0 0 1 0
10 0 0 1 0 10 x x x x
J 2 = Q0Q1 K 2 = Q0Q1
Q1Q0 Q1Q0
Q3Q2 00 01 11 10 Q3Q2 00 01 11 10
00 0 1 x x 00 x x 1 0
01 0 1 x x 01 x x 1 0
11 0 0 x x 11 x x 1 0
10 0 0 x x 10 x x 1 0
J 1 = Q0Q 3 K1 = Q0
Q1Q0 Q1Q0
Q3Q2 00 01 11 10 Q3Q2 00 01 11 10
00 1 x x 1 00 x 1 1 x
01 1 x x 1 01 x 1 1 x
11 1 x x 1 11 x 1 1 x
10 1 x x 1 10 x 1 1 x
J0 =1 K0 =1
Si evidenzia la particolare semplicità del circuito grazie alla opportuna scelta delle transizioni
assegnate agli stati non utilizzati.
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 BCD-
7segmenti e, contemporaneamente, inibire il funzionamento degli altri due pulsanti ad eccezione di
quello per il reset generale.
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.
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 N Lunghezza
4 3 15
5 3 31
6 5 63
7 6 127
9 5 511 1 2 3 N M
10 7 1023
11 9 2047
15 14 32767
20 17 1048575
25 22 33554431
31 28 2147483647
35 33 34359738367
39 35 549755813887
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 N1 N2 N3 Lunghezza
8 4 5 6 255
16 4 13 15 65535
24 17 22 23 16777215
Nelle figure seguenti sono proposti i circuiti di due generatori di numeri pseudo casuali
rispettivamente ad 8 e 16 bit.
Step Q1 Q2 Q3 Q4 CCW
1 ON OFF ON OFF
2 ON OFF OFF ON
3 OFF ON OFF ON
4 OFF ON ON OFF CW
Q1
t
Q2
t
Q3
t
Q4
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
Q1 = Q1 Q 2 = Q 1 Q3 = Q 0 Q4 = Q 0
Q1 = 1 1 0 0
Q0 = 0 1 1 0
Dalle quali otterremo i seguenti grafi degli stati di due distinti contatori:
01 01
00 CCW 11 00 CW 11
10 10
Q1 Q0 Q1’ Q0’ J1 K1 J0 K0
1 0 1 1 x 0 1 x
1 1 0 1 x 1 x 0
0 1 0 0 0 x x 1
0 0 1 0 1 x 0 x
J1 = Q 0 K1 = Q0 J 0 = Q1 K 0 = Q1
Q1 Q0 Q1’ Q0’ J1 K1 J0 K0
1 0 1 1 x 1 0 x
1 1 0 1 0 x 1 x
0 1 0 0 1 x x 0
0 0 1 0 x 0 x 1
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.