Sei sulla pagina 1di 117

Reti Logiche

Il primo passo nell’ele ronica digitale

Marco Alessandrini

C.d.L. in Ingegneria Ele ronica e delle Telecomunicazioni


Seconda Facoltà di Ingegneria – Sede di Cesena
Università degli Studi di Bologna

CC ⃝
BY: ⃝
$ ⃝
=
\

Quest’opera è stata rilasciata so o la licenza Creative Commons A ribuzione-Non commerciale-


Non opere derivate 2.5 Italia. Per leggere una copia della licenza visita il sito web
h p://creativecommons.org/licenses/by-nc-nd/2.5/it/

o spedisci una le era a Creative Commons, 171 Second Street, Suite 300, San Francisco, Cali-
fornia, 94105, USA.

È consentito riprodurre e distribuire liberamente il presente testo, senza apporvi modifiche e


mantenendo sempre riconoscibile il nome degli autori, purché non a scopo di lucro, senza scopi
commerciali (dire amente o indire amente) e per esclusivo uso personale.
È possibile pubblicare il file o sue parti su siti internet, purché sia citato in maniera evidente
l’autore.
Per qualunque informazione, problematica, suggerimento o reclamo utilizzare l’indirizzo di posta
ele ronica marcalessandrini@gmail.com.

Quest’opera è impaginata con XEL TEX e compilata con MiKTEX. Nessuna responsabilità è assunta
in caso di dipendenza da parte del le ore.

Prima versione (incompleta): 2008


Prima edizione: Febbraio 2015
Che cos’è il genio? È fantasia, intuizione,
colpo d’occhio e rapidità di esecuzione.
– “Amici Miei”(1975) –
Indice

Acronimi 7

Premessa 11

1 Reti logiche 13
1.1 Qualche informazione preliminare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.1 Prerequisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.2 Percorso di apprendimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Informazione e segnali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Esercizio 1.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.1 Codifiche binarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.2 Trasmissione dei segnali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Operazioni logiche. Algebra di Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1 Tabella di verità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.2 Analisi e sintesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.3 Proprietà degli operatori e teoremi di equivalenza . . . . . . . . . . . . . . . 22
Esercizio 1.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.4 Forme canoniche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.3.5 Espressioni generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Esercizio 1.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4 Modelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4.1 Tempo di propagazione e transitori . . . . . . . . . . . . . . . . . . . . . . . 27
1.4.2 Macchina combinatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.4.3 Macchine sequenziali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.5 Strumenti di analisi e sintesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Esercizio 1.d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Esercizio 1.e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Esercizio 1.f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2 Reti combinatorie 39
2.1 Reti di costo minimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1.1 Espressioni minime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2 Mappa di Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.1 Regole per le mappe di Karnaugh . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.2 k-mappe per più di 4 variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.3 Raggruppamenti Re angolari . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 2.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Esercizio 2.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.4 Eliminazione di alee statiche . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.2.5 Dimostrazione di secondo e terzo teorema dell’assorbimento con k-mappe . 46
2.2.6 Operazioni algebriche con k-mappe . . . . . . . . . . . . . . . . . . . . . . . 46
Esercizio 2.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Esercizio 2.d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.3 Porte logiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.3.1 Analisi e sintesi con porte logiche . . . . . . . . . . . . . . . . . . . . . . . . 48
2.3.2 Sintesi con soli NAND o NOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Esercizio 2.e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Esercizio 2.f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Esercizio 2.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.4 Circuiti logici notevoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4.1 Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4.2 Encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.4.3 MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Esercizio 2.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Esercizio 2.i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Esercizio 2.j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.4.4 Half Adder (HA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.4.5 Sommatore Full Adder (FA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.4.6 Implicazione logica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Esercizio 2.k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.5 Circuiti programmabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.5.1 ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Esercizio 2.l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Esercizio 2.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
2.5.2 PLA e PAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Esercizio 2.n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.5.3 PLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Esercizio 2.o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

3 Reti asincrone 73
3.1 Memorie binarie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.1.1 Latch SR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.1.2 Latch CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2 Eliminazione delle corse critiche e codifica degli stati . . . . . . . . . . . . . . . . . 77
3.2.1 Creazione di una codifica anti-corsa critica . . . . . . . . . . . . . . . . . . . 77
3.3 Procedimento di analisi delle reti asincrone . . . . . . . . . . . . . . . . . . . . . . . 79
3.4 Procedimento di sintesi delle reti asincrone . . . . . . . . . . . . . . . . . . . . . . . 80
Esercizio 3.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Esercizio 3.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Esercizio 3.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

4 Reti sincrone 89
4.1 Flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.2 Procedimento di analisi delle reti sincrone . . . . . . . . . . . . . . . . . . . . . . . . 91
Esercizio 4.a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.3 Procedimento di sintesi delle reti sincrone . . . . . . . . . . . . . . . . . . . . . . . . 96
4.3.1 Sintesi con flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Esercizio 4.b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Esercizio 4.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Esercizio 4.d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

6 Indice
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 4.e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.4 Contatore binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Esercizio 4.f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Esercizio 4.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Esercizio 4.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Esercizio 4.i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.5 Registro accumulatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.6 Registro a scorrimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.6.1 Universal Shift Register (USR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

Elenco delle figure 112

Elenco delle tabelle 114

Riferimenti bibliografici 115

Indice analitico 116

Indice 7
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

8 Indice
Acronimi

ARQ Automatic Repeat reQuest PLD Programmable Logic Device


ASCII American Standard Code for Information PS Prodo o di Somme
Interchange
PSP Prodo o di Somme di Prodo i
BCD Binary-Coded Decimal
PSPS Prodo o di Somme di Prodo i di Somme
CD Controller-Data
RAM Random Access Memory
CE Chip Enable
ROM Read Only Memory
CO Carry Out
RR Raggruppamento Re angolare
FA Full Adder
SI Serial Input
FEC Forward Error Correction
SO Serial Output
FF Flip-flop
HA Half Adder SP Somma di Prodo i

MRD Machine Readable Data SPS Somma di Prodo i di Somme

MUX Multiplexer SPSP Somma di Prodo i di Somme di Prodo i

OE Output Enable SR Set-Reset

PAL Programmable Array Logic USR Universal Shift Register

PLA Programmable Logic Array WE Write Enable


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

10 Indice
Premessa

Se non sai risolvere un problema,


allora ce n’è uno più semplice
che puoi risolvere: trovalo.

G P

Lo studio delle reti logiche è il primo affrontato dai giovani ingegneri dell’informazione. Per
gli argomenti che tra a, è propedeutico a una serie di altri insegnamenti successivi: Calcolatori
ele ronici, Ele ronica dei sistemi digitali e i vari corsi di Ele ronica.
Mancare la comprensione delle linee principali sulle reti logiche significa precludersi la via
principale al successo in questi esami. Il problema è la mancanza di materiale soddisfacente che
sia reperibile e comprensibile. Qui vorrei tentare di fornire il mio approccio alla materia, che si è
rivelato tu o sommato soddisfacente.
Il materiale qui riportato è tra o da appunti universitari, con l’integrazione di riferimenti di
livello tecnico inferiore per facilitare la comprensione. Gli esercizi svolti hanno una importanza
decisiva per capire come scegliere tra opportunità che si presentano durante la creazione di un
proge o.
In vari casi, argomenti sviluppati con difficoltà in sede universitaria sono spiegati dai docenti
di scuola superiore ome endo alcuni de agli, per perme ere agli studenti di capire di cosa si
stia parlando. Nonostante il parere contrario di alcuni docenti, non è de o che la semplificazione
sia un male assoluto: si paga il prezzo di sopprimere alcuni de agli, per o enere in cambio la
padronanza degli argomenti. Questo è l’obie ivo di questo manuale o.
CAPITOLO 1

Reti logiche

La logica è l’ultimo rifugio della gente


priva di immaginazione.

O W

Sommario
In questo capitolo introduttivo sono esposte tutte le basi per iniziare lo studio dei circuiti logici.
Ci si sofferma su alcune proprietà dell’algebra binaria, con esempi rilevanti. Sono accennate
alcune particolarità delle reti logiche, poi approfondite nei capitoli successivi.

1.1 Qualche informazione preliminare


Definizione 1.1 . Una rete logica è una macchina a stati finiti, nella quale i simboli di ingresso, uscita
e stato sono espressi in notazione binaria.

Questa definizione sarà ripresa per spiegare i conce i che contiene e richiamare alcuni requisiti
necessari al corso. Nel fra empo, si può individuare una serie di contenuti che dovranno esser noti
al termine del corso. Un minimo sindacale comprende:
• classificazione di segnali;
• codice binario e codifiche binarie;
• macchine a stati finiti;
• metodi di studio e rappresentazione delle macchine;
• reti combinatorie;
• reti sequenziali asincrone;
• reti sequenziali sincrone.
La stru ura dei capitoli cerca di seguire l’ordine con rigore, evitando i salti e le lacune che carat-
terizzano troppi manuali di Reti Logiche (come quello di Laschi [8]).
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
1.1.1 Prerequisiti
A titolo di prerequisiti è richiesto di saper manipolare espressioni binarie ed operare con l’al-
gebra binaria. Se ciò non fosse possibile occorre a rezzarsi, aiutandosi con i paragrafi successivi.
È richiesta la conoscenza e la padronanza degli elementari strumenti matematici, in particolare
la tra azione di espressioni polinomiali e la conservazione dell’equivalenza.
Tu e le altre nozioni basilari sono fornite all’inizio del corso, cioè nel seguito di questo capitolo.

1.1.2 Percorso di apprendimento


Le reti logiche sono difficili perché sono espandibili: quando si aggiungono elementi esse si
complicano, cambiano fisionomia e si trasformano in reti del tu o differenti.
Il punto di partenza è lo studio delle porte logiche, che realizzano le più comuni operazioni al-
gebriche binarie. Si può risolvere un’espressione complessa combinando porte logiche in maniera
opportuna, in maniera analoga agli strumenti matematici di uso comune.
Quando si aggregano molte porte logiche, secondo particolari conformazioni standard, si ot-
tengono delle reti combinatorie. Queste hanno la proprietà di saper elaborare i dati, ma solo quelli
presenti all’ingresso in quell’istante di tempo. Non sono dotate di memoria. Inoltre, soffrono di
alcuni mali ereditati dalle porte logiche, come i ritardi di propagazione e le alee.
Per introdurre un conce o di memoria, si aggiungono alcune porte logiche in retroazione alla
rete combinatoria. Si o iene una rete sequenziale. La rete sequenziale può essere asincrona, se i se-
gnali in ingresso agiscono appena sono inviati, oppure sincrona, se l’accesso dei segnali è scandito
e regolato da un segnale di controllo esterno (clock).
Per i vari tipi di rete sono previsti strumenti di analisi (per studiare le reti) e sintesi (per crearle,
a partire da cara eristiche tecniche predeterminate). Ogni rete presenta vantaggi rispe o a quel-
la precedente, di cui costituisce uno sviluppo, ma pure svantaggi che devono essere risolti, con
le tecniche conosciute o sfru ando le cara eristiche di altre reti o degli stessi componenti. L’i-
dea principale è che, partendo dal piccolo mondo dei gate, si possa ampliare il loro utilizzo per
realizzare grandi macchine capaci di risolvere problemi complessi.

1.2 Informazione e segnali


L’ele ronica si occupa della manipolazione dei segnali. Un segnale è la variazione di una gran-
dezza fisica. I segnali dell’ele ronica sono ele rici, so o forma di tensione o corrente.
Se siamo interessati a tu i gli infiniti valori assunti dal segnale nel tempo, allora lo conside-
riamo analogico; se, invece, ci interessano solo alcuni livelli discreti del segnale o alcune sue fasce
di valori, allora lo interpretiamo come digitale o logico. Un segnale non è analogico o digitale per
natura: è l’utente che sceglie, a seconda delle esigenze, di considerarne tu i i valori o solo alcuni.
Si tra a solo di una interpretazione, di una modalità di le ura.
Di solito, un segnale digitale amme e due livelli di valori: uno alto (valore logico 1) e uno basso
(0). Questo tipo di segnale è de o binario e i suoi valori sono de i bit. Il bit è la quantità minima di
informazione, perché può valere solo 0 oppure 1.
L’informazione è trasportata dal segnale, che funge da ve ore fisico.

Definizione 1.2 (Informazione). L’informazione è una diminuzione dell’incertezza.

L’informazione più piccola è la scelta tra due alternative che si ha nel bit: il grado di incertezza
è del 50% ( 21 ) ed è pari all’informazione ricevuta (1 − 12 = 21 ).

14 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 1.a

Determinare l’informazione fornita dal lancio di un dado a sei facce.

1
Su un dado a sei facce si ha un’incertezza di 6 per ogni lancio, quindi:

1 5
1 −
|{z} =
6
|{z} 6
|{z}
100%
incertezza informazione

Il lancio di un dado fornisce maggiori informazioni rispe o a quelle fornite da un bit ( 56 > 21 ).
Teorema 1 . Maggiore è la quantità di possibilità, minore è l’incertezza, maggiore è l’informazione.

Corollario 2 . Quando un evento ha tantissime diverse possibilità, ognuna di esse è così poco probabile che
il venirne a conoscenza è fonte di grande informazione.

Sulla base di questo fa o è possibile classificare i segnali digitali e analogici:


• il segnale analogico può trasportare grandi quantità di informazioni, le quali però sono
disturbate dal rumore;
• il segnale digitale può trasportare solo poche (di solito due) alternative di informazione, le
quali però sono sicure e prote e dal rumore.
Il proge ista deve valutare l’opportunità di trasportare molti dati in contrapposizione all’uso di
un ve ore di informazioni robusto contro il rumore.

Definizione 1.3 (Rumore). Il rumore è un fenomeno ele romagnetico, dovuto alle cara eristiche
fisiche dei mezzi (cavi, macchine, strumenti) utilizzati, che si sovrappone al segnale ideale.

Se si considera il segnale come analogico invece di leggere il valore vero si finisce per vedere
un valore alterato dalla somma col rumore (che è aleatorio e dunque ha valore sconosciuto). Al
contrario, sommando rumore al segnale digitale è più difficile che esso cambi il suo livello, perché
corrisponde a una fascia ampia di possibili valori e il rumore deve essere molto forte per causare
un passaggio di stato.
Il corso di Reti Logiche si occupa solo di segnali digitali e delle tecniche per aumentare la
quantità di dati trasportabili, analizzabili e processabili dalle macchine.

1.2.1 Codifiche binarie


Per trasme ere un segnale digitale si ado a un codice, affinché il destinatario del messaggio
possa comprendere quel che gli sta comunicando il mi ente. Questo codice non è unico: ne esi-
stono molti tipi diversi a seconda degli impieghi e delle circostanze di cui tener conto (fisiche,
stru urali, informative, …).
Fissati quanti n bit si vogliono utilizzare, allora si avranno tanti codici per rappresentare una
stessa informazione. La quantità di questi codici è:
2n !
C=
(2n − M )!
M è il numero di informazioni da rappresentare.

1.2 - Informazione e segnali 15


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Ridondanza. Un codice è ridondante se il numero di bit trasmessi è superiore al numero di bit
stre amente necessari alla comunicazione del messaggio. Al contrario, un codice non ridondante
(o irridondante) trasme e un numero di bit pari a quello minimo necessario alla comprensione.
Si può scegliere un codice ridondante per utilizzare i bit in eccesso come controllo d’errore:
esistono varie tecniche1 per rilevare o correggere gli errori in trasmissione, qualora il canale di
trasmissione sia disturbato, so oposto a perdite o a rischio d’errore. Si paga pegno sulla quantità
di dati da trasme ere (dunque sull’economicità) per rendere più affidabile la comunicazione.

Notazioni esadecimale e o ale. Esprimere un numero secondo le potenze di 8 o 16 sembra una


cosa molto lontana dai dati binari. In realtà, 8 e 16 sono potenze di 2. Lavorando di matematica
si scopre che è possibile convertire un numero binario in esadecimale o in o ale, raccogliendono
le cifre in gruppi e convertendo questi ultimi. In tabella 1.1 è riportata la corrispondenza tra le
qua ro notazioni nelle basi 2, 8, 10 e 16.
Per convertire in esadecimale, raccolgo le cifre a gruppi di 4 (partendo dalle meno significative) e
converto ogni gruppo nel corrispondente esadecimale. Ad esempio:

(10|1101|0011|1010|1011)bin = (2| D |3| A| B)hex


(110|1100|0111|0101)bin = (6| D |C |7|5)hex

È agevole convertire numeri molto lunghi senza nessun ausilio ele ronico, perché è sufficiente
convertire in binario e poi raggruppare in esadecimale. Convertire in base o ale è lo stesso identico
discorso, salvo che i raggruppamenti sono da fare a gruppi di 3. Per esempio, riproponendo i casi
precedenti:

(101|101|001|110|101|011)bin = (5|5|1|6|5|3)oct
(110|110|001|110|101)bin = (6|6|1|6|5)oct

Dec Hex Oct B3 B2 B1 B0


0 0 0 0 0 0 0
1 1 1 0 0 0 1
2 2 2 0 0 1 0
3 3 3 0 0 1 1
4 4 4 0 1 0 0
5 5 5 0 1 0 1
6 6 6 0 1 1 0
7 7 7 0 1 1 1
8 8 10 1 0 0 0
9 9 11 1 0 0 1
10 A 12 1 0 1 0
11 B 13 1 0 1 1
12 C 14 1 1 0 0
13 D 15 1 1 0 1
14 E 16 1 1 1 0
15 F 17 1 1 1 1

Tabella 1.1: Corrispondenza tra notazioni decimale, esadecimale, o ale e binaria

Codice BCD. Il codice Binary-Coded Decimal (BCD) è un metodo di espressione dei numeri deci-
mali in formato binario. Al contrario del codice binario puro, col quale il numero decimale viene
1 Queste tecniche, tra le quali si possono ricordare il controllo di parità, il Forward Error Correction (FEC), l’Automatic

Repeat reQuest (ARQ), … sono studiate nei corsi di Telecomunicazioni.

16 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
semplicemente convertito (per cui ad esempio 13dec = 1101bin ), il BCD suddivide il numero da
convertire nelle singole cifre decimali, convertendo queste ultime col corrispondente binario a 4
bit. Questo significa che, ad esempio, se devo convertire un numero decimale a 5 cifre in BCD, il
risultato è a 5 · 4 = 20 bit. A fronte dello spreco di circa 1/6 dei bit, c’è il guadagno di una facile
conversione a mano anche di numeri decimali imponenti. In tabella 1.2 è illustrata la corrispon-
denza tra codice BCD e numeri decimali. Se, ad esempio, volessi convertire il numero 478 302 in
BCD:
4|7|8|3|0|2 = 0100
|{z} | 0111
|{z} | 1000
|{z} | 0011
|{z} | 0000
|{z} | 0010
|{z}
4 7 8 3 0 2

Dec B3 B2 B1 B0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 X X X X
11 X X X X
12 X X X X
13 X X X X
14 X X X X
15 X X X X

Tabella 1.2: Codice BCD

Codice per display a se e segmenti. Per visualizzare cifre esadecimali si utilizzano spesso i di-
splay a se e segmenti. Sono gli stessi che si trovano in alcuni vecchi registratori, televisori, calcola-
trici e in tu i i dispositivi più moderni che usano cifre a cristalli liquidi. La stru ura dei segmenti
è in figura 1.1. Per o enere le cifre si devono accendere i segmenti in accordo con la tabella di
verità 1.3.

Figura 1.1: Display a se e segmenti

Codice Gray. Il codice Gray è un codice esistente in tu e le lunghezze (in tabella 1.4 ne sono
riportate le versioni a 2, 3 e 4 bit), la cui cara eristica fondamentale e apprezzatissima è che si
modifica un solo bit tra una configurazione e la successiva. Questo è molto importante per evita-
re errori, specie in casi (meccanici) in cui il cambiamento contemporaneo di oltre un bit sarebbe
difficile o impossibile, e mal interpretato dalla macchina; col codice Gray se cambia un bit è tu o

1.2 - Informazione e segnali 17


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Hex a b c d e f g
0 1 1 1 1 1 1 0
1 0 1 1 0 0 0 0
2 1 1 0 1 1 0 1
3 1 1 1 1 0 0 1
4 0 1 1 0 0 1 1
5 1 0 1 1 0 1 1
6 1 0 1 1 1 1 1
7 1 1 1 0 0 0 0
8 1 1 1 1 1 1 1
9 1 1 1 1 0 1 1
A 1 1 1 0 1 1 1
B 1 0 1 1 1 1 1
C 1 0 0 1 1 1 0
D 0 1 1 1 1 0 1
E 1 0 0 1 1 1 1
F 1 0 0 0 1 1 1

Tabella 1.3: Codice a se e segmenti

a posto, se ne cambia più d’uno per volta c’è stato un errore. Il codice è circolare, cioè la proprietà
della modifica di un solo bit esiste anche tra l’ultima configurazione in tabella e la prima.

Codice ASCII. L’American Standard Code for Information Interchange (ASCII) è una codifica me-
diante 7 bit che utilizziamo tu e le volte che scriviamo un testo al computer: tramite esso sono
definiti 27 = 128 comandi, alcuni obsoleti di gestione del computer (si usavano ai tempi del DOS),
altri che codificano i cara eri alfanumerici e alcuni simboli. Per questo è utilizzato nelle tastiere
ed è memorizzato nei supporti magnetici.

2| 6 2{z5 2}4 2| 3 22 {z 21 2}0


peso forte peso debole

1.2.2 Trasmissione dei segnali


La trasmissione dei segnali può essere classificata in base al numero di comunicazioni contem-
poranee.

Definizione 1.4 (Trasmissione in parallelo). Tu i i segnali sono trasmessi in contemporanea, cia-


scuno ha un proprio canale dedicato.

Definizione 1.5 (Trasmissione in serie). Tu i i segnali condividono lo stesso canale trasmissivo,


quindi la trasmissione è basata sull’alternanza dei segnali nell’uso del mezzo.

Definizione 1.6 (Trasmissione in serie-parallelo). I mezzi sono più di uno ma in numero minore
rispe o ai segnali, quindi c’è condivisione dei mezzi ma velocità di trasmissione superiore al caso
in serie.

In figura 1.2 è illustrato il caso di una trasmissione a o o segnali e i tempi necessari se essa è
operata in serie o in parallelo.

18 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Gray a 2 bit (b) Gray a 3 bit (c) Gray a 4 bit
Dec B1 B0 Dec B2 B1 B0 Dec B3 B2 B1 B0
0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 1 1 0 0 0 1
2 1 1 2 0 1 1 2 0 0 1 1
3 1 0 3 0 1 0 3 0 0 1 0
4 1 1 0 4 0 1 1 0
5 1 1 1 5 0 1 1 1
6 1 0 1 6 0 1 0 1
7 1 0 0 7 0 1 0 0
8 1 1 0 0
9 1 1 0 1
10 1 1 1 1
11 1 1 1 0
12 1 0 1 0
13 1 0 1 1
14 1 0 0 1
15 1 0 0 0

Tabella 1.4: Codice Gray

Figura 1.2: Tipi di trasmissione in serie e parallelo

1.2 - Informazione e segnali 19


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
1.3 Operazioni logiche. Algebra di Boole
L’algebra di Boole è l’insieme delle regole che perme ono di analizzare proposizioni, rappre-
sentandole mediante simboli (funzioni logiche). Queste proposizioni sono formulate in modo da
essere vere o false, secondo i principi della logica binaria.

Teorema 3 . Tu e le variabili, dipendenti o indipendenti, di un sistema logico binario hanno due soli valori
possibili: 0 (falso) e 1 (vero).

Gli operatori logici booleani sono elencati nella tabella 1.5. Accanto al simbolo schematico sono
riportate le notazioni matematiche, da utilizzare nelle espressioni.

Gate Simbolo Notazioni Denominazione

NOT x′ x̄ ⌉x Negazione / Complemento

AND x·y xy x∧y x&y Prodo o logico

OR x+y x∨y Somma logica

NAND x↑y Prodo o logico negato

NOR x↓y Somma logica negata

EX-OR x⊕y Somma modulo 2

EX-NOR x≡y Equivalenza

Tabella 1.5: Operazioni logiche

1.3.1 Tabella di verità


In logica, per esprimere i legami funzionali tra le variabili si usano le tabelle di verità. Esse
riportano tu i i possibili valori assunti dalle variabili indipendenti e, in corrispondenza di ciascuna
combinazione, il valore assunto dalle variabili dipendenti.

Tabelle di verità degli operatori booleani. Le tabelle di verità degli operatori sono riportate
nella tabella 1.6. Si nota facilmente come NAND, NOR ed EX-NOR siano la composizione del NOT con
gli altri tre operatori. Questo de aglio sarà poi definito in seguito.

Espressioni canoniche dell’EX-OR. L’EX-OR ha le seguenti espressioni canoniche:

a ⊕ b = ab̄ + āb
( )
= ( a + b) ā + b̄
Lo schema logico che realizza l’EX-OR è in figura 1.3.

Espressioni canoniche dell’EX-NOR. Le espressioni canoniche dell’EX-NOR si ricavano negando


quelle dell’EX-OR:
a ≡ b = ab + āb̄
Lo schema logico che realizza l’EX-NORè in figura 1.3.

20 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) EX-OR (b) EX-NOR

Figura 1.3: Realizzazione a gate di EX-OR e EX-NOR

(a) NOT (b) AND (c) OR


x x̄ x y x·y x y x+y
0 1 0 0 0 0 0 0
1 0 0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1

(d) NAND (e) NOR (f) EX-OR (g) EX-NOR


x y x↑y x y x↓y x y x⊕y x y x≡y
0 0 1 0 0 1 0 0 0 0 0 1
0 1 1 0 1 0 0 1 1 0 1 0
1 0 1 1 0 0 1 0 1 1 0 0
1 1 0 1 1 0 1 1 0 1 1 1

Tabella 1.6: Tabelle di verità degli operatori binari

Condizione di indifferenza. Un circuito presenta in uscita una condizione di indifferenza se:


• si richiede agli ingressi una prestazione fisicamente impossibile (per esempio: premere il
tasto 12 in una tastiera a 10 tasti);
• si presenta agli ingressi una condizione logicamente impossibile (per esempio: serbatoio
contemporaneamente pieno e vuoto).
Le condizioni di indifferenza si denotano con una X, oppure con un tra ino (–) o una barre a (/)
e servono per minimizzare il circuito. Per questo motivo, è importante includerle sia nelle tabelle
di verità, sia nelle mappe di Karnaugh (sezione 2.2).

1.3.2 Analisi e sintesi


Visto il significato della tabella di verità, è necessario capire come operare con le porte logiche.
Prima di tu o bisogna:
• scegliere le funzioni da descrivere (operazione);
• individuare le porte logiche;
• stabilire le regole di composizione delle operazioni;
• definire la relazione tra formula e schema.
I de agli su questo procedimento sono nei paragrafi successivi.

Definizione 1.7 (Sintesi). Il processo di sintesi parte dalla tabella di verità per dedurre una formula
e, da questa, uno schema logico.

1.3 - Operazioni logiche. Algebra di Boole 21


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Definizione 1.8 (Analisi). Il processo di analisi parte dallo schema logico per dedurre una formula
e, da questa, una tabella di verità.

1.3.3 Proprietà degli operatori e teoremi di equivalenza


Considerando i bit x, y, . . . , si possono definire una serie di proprietà e alcuni teoremi. Alcuni
sono già noti, altri di dire a derivazione logica e matematica, altri ancora si dimostrano per via
algebrica.

Teorema 4 (di unicità). Una espressione logica descrive una sola funzione booleana completa.

Definizione 1.9 . Ogni espressione descrive uno schema logico, con gate in serie e/o parallelo.

Teorema 5 (di dualità). Data un’espressione algebrica che risulti verificata, scambiando AND con OR (e vi-
ceversa) e 0 con 1 (e viceversa) si o iene una seconda diversa espressione algebrica, che risulta pure verificata
ed equivalente alla prima. Le due espressioni sono duali.

Nota 1.3.1 – Nel seguito di questo manuale sono enunciati teoremi o definizioni in forma doppia e distinta, ma similare.
Si tratta di casi di dualità, esplicitati per comodità di comprensione, anche se non sarebbe necessaria la ripetizione. Come
regola generale è riportata solo la forma principale (facente capo a somme di prodotti), considerando la duale sottintesa
salvo diversa indicazione.

Definizione 1.10 . Per completezza, date le porte logiche AND, OR, EX-OR, sono definiti gli operatori
inversi che derivano dalla serie delle stesse con una porta NOT:

NOR= OR
NAND = AND

EX-NOR = EX-OR

Teorema 6 . Tu i gli operatori booleani sono commutativi.

Teorema 7 . I soli operatori AND, OR ed EX-OR sono associativi.

Definizione 1.11 (Proprietà distributiva). AND e OR godono della proprietà distribuitiva, uno rispe o
all’altro e viceversa:

( x · y) + ( x · z) = x · (y + z) e ( x + y) · ( x + z) = x + (y · z)

Definizione 1.12 (Elementi neutri). L’elemento neutro per l’AND è 1 (x · 1 = x), per l’OR è 0 (x + 0 =
x).

Definizione 1.13 (Elementi preponderanti). L’elemento assorbente per l’AND è 0 (x · 0 = 0), per l’OR è
1 (x + 1 = 1).

Definizione 1.14 (Involuzione). Due negazioni affermano: x̄¯ = x.

22 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Definizione 1.15 (Idempotenza). Poiché si tra a di operazioni a un solo bit, anche il risultato sarà
a un solo bit. Se si fa l’AND o l’OR di un bit rispe o a se stesso, il risultato è il bit stesso (cfr. tabelle
di verità 1.5(b) e 1.5(c)):
x+x = x e x·x = x

Definizione 1.16 (Limitazione). Per le cara eristiche binarie2 :

x · x̄ = 0 e x + x̄ = 1

Definizione 1.17 (Combinazione). Dalla definizione di limitazione:

xy + x ȳ = x

Dimostrazione. Raccogliendo e applicando la definizione:

xy + x ȳ = x · (y + ȳ) =
= x·1 =
=x

Teorema 8 (Primo t. dell’assorbimento). Vale la relazione: x + xy = x.

Dimostrazione. Utilizzando le proprietà delle operazioni:

a + ab = a · (1 + b)
= a·1
=a

È anche possibile dimostrare visivamente l’uguaglianza usando un diagramma di Venn


(figura 1.4).

Figura 1.4: Diagramma di Venn del teorema dell’assorbimento (I)

Teorema 9 (Secondo t. dell’assorbimento). Vale la relazione: x + x̄y = x + y.

Dimostrazione. Per dimostrare agilmente il teorema è necessario utilizzare le mappe di


Karnaugh (sezione 2.2). La dimostrazione è riportata a pagina 46.

Teorema 10 (Terzo t. dell’assorbimento). Vale la relazione:

xy + x̄z + yz = xy + x̄z
2 Tra andosi della stessa variabile in forma vera e falsa, si tra a sempre di moltiplicare (o sommare) un 1 per uno 0,
visto che x vale 1 oppure 0. Allora 1 · 0 = 0 e 1 + 0 = 1.

1.3 - Operazioni logiche. Algebra di Boole 23


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Dimostrazione. Anche per dimostrare questo teorema è necessario utilizzare le mappe
di Karnaugh (sezione 2.2). La dimostrazione è riportata a pagina 46.

Teorema 11 (Primo t. di De Morgan). Il negato di un prodo o logico equivale alla somma dei negati dei
singoli fa ori:
x · y · z · . . . = x̄ + ȳ + z̄ + . . .

Teorema 12 (Secondo t. di De Morgan). Il negato di una somma logica equivale al prodo o dei negati
dei singoli addendi:
x + y + z + . . . = x̄ · ȳ · z̄ · . . .

Corollario 13 (Espressione unica dei teoremi di De Morgan). Dopo aver legato i termini della fun-
zione con un’unica operazione logica (o soli AND, o soli OR), si nega tu a la funzione; quindi si cambia
l’operazione logica che lega i termini (AND con OR, o viceversa) e si spezza la negazione complessiva in tante
singole negazioni sui singoli termini.

Teorema 14 (del consenso). Si può semplificare una somma logica di tre termini riconoscendo che uno di
essi è ridondante:
xy + x̄z + yz = xy + x̄z

Corollario 15 (Forma duale del teorema del consenso). Si può semplificare un prodo o logico di tre
somme logiche riconoscendo che una di esse è ridondante:

( x + y) · ( x̄ + z) · (y + z) = ( x + y) · ( x̄ + z)

Esercizio 1.b

Valutare le espressioni ( x ↓ y) ↑ z̄ e ( x + y) + z per ogni configurazione dei bit x, y, z. Confrontare, al


termine, le due tabelle di verità.

Valutare per ogni configurazione significa costruire una tabella con 2n righe, in cui n è il numero di variabili
(nel nostro caso 3). Tutte le righe, nel complesso, devono coprire i valori numerici compresi tra 0 e 2n − 1:
nel nostro caso i valori vanno tra 0 e 7 (in binario). Ci sono vari metodi per costruirla senza dimenticare
valori per strada, l’importante comunque è che siano tutti presenti.
Per ogni riga (combinazione di ingresso) si calcola il valore della funzione assegnata, realizzata con operatori
binari. In questo caso, la soluzione è riportata in tabella 1.7. Si può notare, oltre che l’uguaglianza tra le due
funzioni, che si tratta della funzione OR tra le tre variabili (la seconda funzione è un OR palese). La prima
funzione è un OR al quale è stato applicato il teorema di De Morgan:

( x + y) + z = ( x + y) + z
= x + y · z̄
= ( x ↓ y) · z̄
= ( x ↓ y) ↑ z̄

24 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
x y z ( x ↓ y) ↑ z̄ ( x + y) + z
0 0 0 1↑1=0 0+0=0
0 0 1 1↑0=1 0+1=1
0 1 0 0↑1=1 1+0=1
0 1 1 0↑0=1 1+1=1
1 0 0 0↑1=1 1+0=1
1 0 1 0↑0=1 1+1=1
1 1 0 0↑1=1 1+0=1
1 1 1 0↑0=1 1+1=1

Tabella 1.7: [Esercizio 1.b] Tabelle di verità (soluzione)

1.3.4 Forme canoniche


Definizione 1.18 (Somma di Prodo i (SP)). In ogni mintermine appare ogni variabile. Le variabili
appaiono in forma vera se valgono 1, in forma negata se valgono 0.

Definizione 1.19 (Prodo o di Somme (PS)). In ogni maxtermine appare ogni variabile. Le variabili
appaiono in forma vera se valgono 0, in forma negata se valgono 1.

Le notazioni simboliche relative alle forme canoniche sono in tabella 1.8.

i identificativo della configurazione binaria, su tabella di verità


m (i ) mintermine che vale 1 per la configurazione i
M (i ) maxtermine che vale 0 per la configurazione i
∑n m (i ) somma di mintermini, in n variabili
∏ n M (i ) somma di maxtermini, in n variabili

Tabella 1.8: Notazioni simboliche delle configurazioni binarie

1.3.5 Espressioni generali


Teorema 16 (di espansione di Shannon). Data un’espressione in n variabili E( x1 , . . . , xn ), si può
estrarre una qualunque variabile di E:

E( x1 , . . . , xn ) = x̄n · E( x1 , . . . , 0) + xn · E( x1 , . . . , 1) (primo t. di espansione)


E( x1 , . . . , xn ) = [ xn + E( x1 , . . . , 0)] + [ x̄n + E( x1 , . . . , 1)] (secondo t. di espansione)

Nota 1.3.2 – Il primo teorema di espansione indica che ogni funzione in m variabili si può realizzare con un MUX, con
n − 1 bit di indirizzo.

Definizione 1.20 (Espressione generale SP). Applicando n volte il primo teorema di espansione di
Shannon si o iene una somma logica di tu i i mintermini. Ogni mintermine è moltiplicato col valore
della funzione per la quale esso vale 1:

2n −1
F ( x1 , . . . , x n ) = ∑ m (i ) · F (i )
i =0

1.3 - Operazioni logiche. Algebra di Boole 25


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Definizione 1.21 (Espressione generale PS). Applicando n volte il secondo teorema di espansione
di Shannon si o iene un prodo o logico di tu i i maxtermini. Ogni maxtermine è sommato al valore
della funzione per la quale esso vale 0:

2n −1
F ( x1 , . . . , x n ) = ∏ ( M(i ) + F (i ))
i =0

Nota 1.3.3 – L’espressione generale Somma di Prodotti (SP) si realizza con un MUX, avente n bit d’indirizzo (variabili
indipendenti) e 2n vie d’ingresso (valore della funzione per la configurazione binaria che la seleziona).

Esercizio 1.c

Quanti e quali mintermini ha la funzione F ( A, B, C, D ) = D (C + B)? Perché è utile calcolarla quando i


segnali D, C, B, A trasportano configurazioni del codice BCD (nel quale A è il bit di minor peso)?

Si compila la tabella 1.9 calcolando la funzione F per ogni combinazione delle quattro variabili. Si nota che
F = 1 in corrispondenza delle combinazioni proibite per la codifica BCD. Si tratta, perciò, di una funzione di
verifica della correttezza del codice BCD, senza possibilità di correzione dell’errore.

D C B A F = D (C + B) BCD

0 0 0 0 0 0
0 0 0 1 0 1
0 0 1 0 0 2
0 0 1 1 0 3
0 1 0 0 0 4
0 1 0 1 0 5
0 1 1 0 0 6
0 1 1 1 0 7
1 0 0 0 0 8
1 0 0 1 0 9
1 0 1 0 1 X
1 0 1 1 1 X
1 1 0 0 1 X
1 1 0 1 1 X
1 1 1 0 1 X
1 1 1 1 1 X

Tabella 1.9: [Esercizio 1.c] Tabella di verità (soluzione)

1.4 Modelli
Tu e le reti logiche sono riconducibili a modelli, più o meno complessi, dei quali ricalcano le
cara eristiche fondamentali.

26 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
1.4.1 Tempo di propagazione e transitori
Il ritardo di propagazione dei gate causa problemi nel funzionamento e limita la massima
velocità di elaborazione.

Definizione 1.22 (Transitorio). Fase di funzionamento della macchina durante la quale gli ingressi
modificano il proprio valore e la rete ricalcola il valore delle uscite.

Definizione 1.23 (Regime). Fase di funzionamento della macchina durante la quale gli ingressi sono
costanti e l’uscita si è stabilizzata sul valore previsto per quella configurazione degli ingressi.

La risposta di un dispositivo alla modifica degli ingressi non avviene in modo istantaneo. Di
solito, i ritardi sono diversi quando il segnale cambia stato con un fronte di salita (tempo τLH ) e
quando lo fa su un fronte di discesa (tempo τHL ).
La durata del transitorio non è costante, perché dipende dal percorso del segnale lungo i ga-
te. Una rete logica complessa ha percorsi interni di lunghezza diversa, dagli ingressi alle uscite.
Questa mancanza di uniformità complica il metodo per determinare il ritardo di propagazione
all’interno della rete (figura 1.5(a)). Per calcolare il ritardo di una rete logica in modo facile, senza
complicazioni e stando dalla parte del sicuro, di solito si usa il metodo del caso peggiore: si trova
il percorso di lunghezza maggiore (figura 1.5(b)), si sommano i ritardi τ dei singoli gate su questo
percorso e si definisce tale ritardo come quello dell’intera rete (figura 1.5(c)).

(a) Lunghezza dei percorsi di ritardo a raverso cascate di


porte logiche

(b) Scelta del caso peggiore (c) Ritardo totale della cascata di porte logiche

Figura 1.5: Definizione del ritardo totale di una rete logica

Si può modellare una porta logica reale come cascata di un gate ideale (con uscita Z) e di un
blocco di ritardo di propagazione t p , con uscita complessiva z(t) (figura 1.6):

Z = F ( x1 , . . . , x n )
z(t) = Z (t − t p )

Ci sono due modelli di ritardo.

1.4 - Modelli 27
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
tp
x1
x2 Z ritardo di z
… gate
propagazione
xn

Figura 1.6: Schema a blocchi di una porta logica reale

Definizione 1.24 (Ritardo puro). Traslazione rigida nel tempo del segnale di uscita, di una quantità
t p , per cui z(t + t p ) = Z (t) (figura 1.7(a)).

Definizione 1.25 (Ritardo inerziale). Impulsi di durata inferiore a t p (glitch) si manifestano sull’u-
scita Z del gate ideale, senza causare effe i sull’uscita z(t) del dispositivo reale (figura 1.7(b)).

(a) Ritardo puro (b) Ritardo inerziale

Figura 1.7: Ritardo puro e ritardo inerziale

Per evitare comportamenti indesiderati, il segnale in ingresso al gate deve mantenere il proprio
valore per un tempo superiore a t p .
Durante il transitorio, l’uscita può comportarsi in tre modi differenti: può essere sogge a a
ritardo puro o soffrire di alea statica o dinamica.

Definizione 1.26 (Ritardo puro). Situazione in cui l’uscita cambia valore al termine del transitorio,
mentre durante il transitorio mantiene il vecchio valore (figura 1.8(a)).

Definizione 1.27 (Alea). Situazione in cui l’ingresso può a ivare percorsi con differenti tempi di
propagazione in modo imprevedibile, quando si presentano variazioni di più segnali d’ingresso
nello stesso istante di tempo.

Definizione 1.28 (Alea statica). Situazione in cui l’uscita assume per qualche istante un altro valore,
mentre invece dovrebbe rimanere costante (figura 1.8(b)).

Definizione 1.29 (Alea dinamica). Situazione in cui l’uscita varia più volte prima di assestarsi sul
valore finale (figura 1.8(c)).

Un esempio di comportamento dell’alea statica è visibile sulla porta logica OR (figura 1.9): quan-
do gli ingressi cambiano valore nello stesso istante, sulla porta reale si a iva per primo l’ingresso

28 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Ritardo puro (b) Alea statica (c) Alea dinamica

Figura 1.8: Ritardo puro, alea statica e alea dinamica

con meno ritardo di propagazione, causando un glitch sull’uscita prima che la vera uscita stabile
sia disponibile.
Il compito del proge ista è decidere quando è acce abile una situazione del genere. Si possono
proge are macchine che evitino di avere modifiche istantanee di più ingressi oppure macchine
a stati che rendano stabili particolari situazioni critiche. Alcuni casi, invece, sono da evitare in
assoluto: per esempio, non deve esserci mai glitch su una rete combinatoria che aggiorna lo stato
di una rete asincrona, altrimenti si finisce per rendere stabile uno stato interno errato.

(a) Transizione 10–11–01 (b) Transizione 10–00–01

Figura 1.9: Conseguenze dell’alea statica su una porta OR

1.4.2 Macchina combinatoria


Definizione 1.30 (Macchina combinatoria). Una macchina combinatoria propone in uscita un ri-
sultato che è funzione istantanea dei valori presenti sugli ingressi.

La macchina combinatoria reale soffre del ritardo di propagazione dall’ingresso verso l’uscita:
bisogna a endere un certo tempo tra il comando e la risposta. Gli ingressi della macchina combi-
natoria devono essere mantenuti costanti per un tempo superiore a entrambi i ritardi dovuti alla
natura reale della stessa:

• τp : ritardo di presentazione del risultato in uscita;

• τu : ritardo di acquisizione dell’uscita da parte degli stadi successivi.

1.4 - Modelli 29
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Se due simboli successivi sono emessi agli istanti tn e tn+1 , vale allora la relazione:

tn+1 − tn ≥ τp + τu

La situazione appena descri a è in figura 1.10(a). Per continuare a utilizzare la macchina com-
binatoria nella versione ideale, si può associarla a uno stadio di ritardo τp posto alla sua uscita
(figura 1.10(b)).

Definizione 1.31 (Throughput). Ritmo massimo di funzionamento dovuto agli effe i della propa-
gazione dei segnali all’interno della macchina combinatoria reale.

(a) Ritardi sull’uscita (b) Schema ideale con ritardo in cascata

Figura 1.10: Macchina combinatoria reale

L’ingresso deve essere mantenuto per un tempo maggiore di τp + τn . Oltre al tempo di propa-
gazione, nella formula compare τn , che è il ritardo di acquisizione.

1.4.3 Macchine sequenziali


Definizione 1.32 (Macchina sequenziale). Una macchina sequenziale ha l’uscita che dipende sia
dagli ingressi presenti, sia dalla sequenza di quelli passati. La funzione di memoria dello stato
può essere assunta da un ritardo, posizionato in un ramo di retroazione tra uscite e ingressi delle
macchine combinatorie che calcolano la funzione d’uscita.

Le macchine sequenziali si distinguono in due categorie:


macchina asincrona: a un simbolo in ingresso corrisponde un simbolo in uscita;
macchina sincrona: a un simbolo in ingresso corrisponde una sequenza cronologica di simboli in
uscita.
La macchina sequenziale asincrona (figura 1.11(a)) è abilitata a leggere i segnali in ingresso in
ogni istante, non appena essi si manifestano. Alla velocità di esecuzione si contrappone il problema
della corsa critica: se due segnali in ingresso cambiano nello stesso istante, per motivi fisici uno
sarà recepito prima dell’altro, seppur per differenze temporali microscopiche. Questa differenza è
sufficiente a stabilire l’incertezza sul risultato finale, perché se sarà le o prima un ingresso si avrà
un risultato, mentre se sarà le o prima l’altro ingresso il risultato cambia (per la natura sequenziale
della macchina). Questo inconveniente può essere risolto con la modifica di solo un segnale per
volta in ingresso (via poco praticata) o, più spesso, ado ando una macchina sincrona.
Il processo interno della macchina asincrona avviene con ritardo, a raverso passaggi di stato
secondo lo schema cronologico in figura 1.12. La legenda delle variabili utilizzate è riportata in
tabella 1.10.
Per correggere il problema della macchina asincrona si inserisce il clock a scandire gli ingressi:
la le ura è effe uata solo in corrispondenza di un fronte del clock. In questo modo, durante i pe-
riodi di non le ura arrivano tu i i segnali, anche in ordine casuale e non allo stesso istante; quando

30 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Macchina asincrona (b) Macchina sincrona

Figura 1.11: Macchine sequenziali

Figura 1.12: Tempistica della macchina asincrona

t istante di cambiamento dell’ingresso (i1 → i2 )


α stato stabile presente
β stato futuro (dovuto a i2 )
u1 simbolo di uscita (prima di t)
u2 simbolo di uscita futuro
F, G macchine combinatorie

Tabella 1.10: Grandezze cara eristiche della macchina asincrona

1.4 - Modelli 31
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
il clock lo consente, gli ingressi sono le i tu i contemporaneamente e si ha l’interpretazione cor-
re a. Il clock funzione come una sbarra che, quando abbassata, blocca tu i i segnali; quando si
alza, gli ingressi partono tu i assieme, e allo stesso modo li interpreta la macchina. Eventuali stati
intermedi (provocati dall’arrivo prima di un segnale piu osto che di un altro) non sono rilevati.
Questa modifica è alla base della macchina sincrona (figura 1.11(b)).
I simboli di ingresso sono modificati solo in corrispondenza degli istanti di sincronismo tn . I
vari tn distano tra loro un tempo T0 , prefissato. Durante gli intervalli T0 si ha una situazione in cui
ingresso, stato e uscita sono costanti. Per distinguere gli intervalli si usa una notazione in apice:
per esempio, lo stato in due istanti successivi si identifica come sn (stato corrente) e sn+1 (stato
futuro). Le relazioni tra ingressi e uscite sono riportate in tabella 1.11.

F, G macchine combinatorie
tn istante di sincronismo
i ingresso della macchina sequenziale
s∗ uscita di G
sn ingresso a uale di F, G (nell’istante n)
s n + 1 ∗ n
= s = G (sn , i n ) ingresso futuro di F, G (nell’istante n + 1)
un = F (sn , i n ) simbolo di uscita della macchina F

Tabella 1.11: Grandezze cara eristiche della macchina sincrona

Il ritardo nella macchina sequenziale. Lo strumento per memorizzare i dati all’interno del-
la macchina sequenziale è il flip-flop, oppure il registro composto da una sequenza di flip-flop.
Questi strumenti perme ono di mantenere il dato fino alla transizione di stato successiva, quindi
implicitamente introducono il ritardo desiderato per il funzionamento della macchina.

1.5 Strumenti di analisi e sintesi


Due strumenti sono molto utilizzati, in coppia, nello studio delle macchine ad automi: la tabella
di flusso e il diagramma degli stati. Entrambi saranno approfonditi con l’uso, nei capitoli seguenti.

Tabella di flusso. Si tra a di una tabella vera e propria, con righe e colonne. Sulle colonne sono
riportati i simboli dell’alfabeto di ingresso (cioè tu e le possibili combinazioni dei valori), mentre
sulle righe sono indicati gli stati della macchina.
Ogni casella indica cosa succede allo stato corrispondente (cioè lo stato presente) quando viene
a ivato l’ingresso indicato nell’intestazione di colonna. La casella rimanda allo stato futuro che si
raggiunge con quegli ingressi assieme all’uscita proposta allo stesso momento (modello di Mealy).
Se, invece, a ogni stato corrisponde un’uscita specifica, non è necessario riportarla in ogni casella
perché è sufficiente scrivere solo lo stato futuro (modello di Moore).

Diagramma degli stati. Si tra a di un grafo in cui ogni nodo rappresenta uno stato, mentre sul
ramo è riportata la transizione da uno stato al successivo.
In ogni nodo devono entrare tanti rami quanti ne escono. Il numero di rami in uscita da un nodo
è pari al numero di combinazioni di valori possibili per le variabili di ingresso.
Ogni ramo descrive una transizione tra due stati. Se il ramo si richiude sullo stato da cui origina,
rappresenta una stabilità di quello stato.
Il grafo di un automa soddisfacente non deve avere uno stato di partenza e uno di fine, ma deve
essere stre amente connesso per poter funzionare all’infinito nel tempo. Con qualsiasi combina-
zione degli ingressi ci deve essere una transizione da uno stato a un altro stato.

32 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Definizione 1.33 (Automa minimo). Tra le infinite possibili descrizioni di un automa tramite mac-
china a stati, l’automa minimo è quello che ha il minor numero di stati.

Il grafo deriva dire amente dalla tabella di flusso, proponendosi come alternativa visuale mi-
gliore per evidenziare i passaggi di stato. La tabella di flusso, al contrario, dispone le informazioni
in modo razionale ed è più utile per effe uare certi tipi di calcoli di sintesi. Per questo, a seconda
che la tabella di flusso segua il modello di Mealy o di Moore, ci sono due tipi di grafo.

(a) Diagramma di Mealy (b) Diagramma di Moore

Figura 1.13: Tipi di diagrammi degli stati

Grafo degli stati di Mealy Nel modello secondo Mealy ogni stato non coincide necessariamen-
te con un’uscita. La transizione da uno stato all’altro, dunque, si cara erizza con gli ingressi che
la provocano e le uscite conseguenti: questi due dati vanno riportati sul ramo della transizione,
separati da una virgola o da una barra (figura 1.13(a)).
Se l’uscita cambia valore nel passaggio da uno stato stabile all’altro e questa situazione non è vieta-
ta dalle specifiche del proge o, bisogna inserire una condizione d’indifferenza sull’uscita in quella
transizione. Al contrario, se l’uscita non varia valori tra due stati stabili, è errato inserire delle con-
dizioni d’indifferenza.
Il modello di Mealy è molto frequente perché svincola gli stati dall’avere un’uscita fissa corrispon-
dente. Sarà dunque molto ricorrente negli esercizi che saranno proposti.

Grafo degli stati di Moore Seguendo il modello di Moore, le uscite sono funzioni delle com-
binazioni delle variabili interne nello stato corrente. In altre parole, a ogni stato corrisponde una
sola uscita fissa. Ciò significa che le transizioni sono individuate dai soli simboli di ingresso che
la provocano, mentre all’interno del nodo oltre a indicare il nome dello stato va segnato il valore
delle uscite, separate con una virgola o una barra, oppure tra parentesi (figura 1.13(b)).

Definizione 1.34 (Grafo primitivo). Un grafo è primitivo se ogni modifica di ingresso produce una
modifica di stato. Ogni nodo è stabile per una sola condizione d’ingresso.

Si può far sì che, al variare di un ingresso, lo stato resti costante e cambi la sola uscita. Questo
metodo riduce il numero di stati e, talvolta, il numero di retroazioni. Si o iene così un grafo non
primitivo.

Definizione 1.35 (Grafo non primitivo). Un grafo è non primitivo se ha meno stati di quello primi-
tivo e si rimane nello stesso stato per più ingressi.

Un procedimento è a uabile a stati equivalenti, sulla tabella di flusso.

Lemma 17 . Due o più righe della tabella di flusso possono essere compresse in una unica se, per ogni
ingresso, esse hanno identici simboli di stato futuro e di uscita (a meno di condizioni di indifferenza).

1.5 - Strumenti di analisi e sintesi 33


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 1.d

Un editor riceve in ingresso, uno dopo l’altro, i caratteri di una stringa. Di norma li deve riprodurre imme-
diatamente sull’uscita; l’unica eccezione è l’occorrenza, in ingresso, della sequenza RETE, che deve essere
sostituita in uscita dalla sequenza RETI. Ai fini dell’elaborazione richiesta si adotti, in ingresso ed in uscita,
l’alfabeto {E,R,T,*}, in cui * rappresenta ogni carattere diverso da E, R oppure T.
Impiegando il modello di Mealy, completare il grafo (figura 1.14(a)) e tracciare la corrispondente tabella
di flusso.
Individuare un automa di Mealy equivalente al precedente, ma dotato di soli quattro stati interni
(figura 1.14(b)).

(a) Grafo di Mealy (b) Grafo rido o

Figura 1.14: [Esercizio 1.d] Diagrammi degli stati da completare

Si tratta, individuata la parola RETE, di sostituirne in uscita l’ultima E con una I. Come primo passo va
rilevato, sull’ingresso, ogni singola lettera, nell’ordine; quando è individuata, la si propone in uscita. Quando,
dopo aver trovato R, E, T nell’ordine, arriva una E, in uscita si propone I.
Chiamiamo lo stato più a sinistra S0 , e gli altri da S1 a S4 nell’ordine. La stabilità riportata indica che, per
ogni carattere diverso da R, il riconoscitore non svolge attività perché non interessato. Quando arriva R, si
passa a S1 emettendo in uscita R.
Da S1 si passa a S2 quando arriva una E. Se arriva ancora una R rimaniamo qua (perché, per ogni nuova
R, la precedente è inutile, ma la nuova potrebbe essere l’inizio di una nuova parola RETE). Se arriva una
qualsiasi altra lettera, torniamo a S0 perché la parola RETE non è formabile.
Da S2 si passa a S3 (emettendo T) quando arriva T in ingresso. Se arriva una R, si torna a S1 (è il caso
precedente; vale anche per S3 ), mentre con altre lettere si torna a S0 (idem). Il passaggio da S3 a S4 è
analogo, con la differenza che se S3 rileva in ingresso E va in S4 emettendo non E, bensì I.
Una volta in S4 vi resteremo con qualunque simbolo, fuorché R che ci riporterà ad S1 per iniziare una nuova
(eventuale) lettura della parola RETE. La soluzione è il grafo in figura 1.15(a).
Poiché lo stato S4 e lo stato S0 si equivalgono completamente (per qualsiasi configurazione d’ingresso si
ottiene la stessa sequenza degli stati), si può eliminare lo stato S4 . La transizione avviene da S3 a S0 sia
quando trova la E finale (in uscita ci sarà I), sia quando trova un altro carattere (che emetterà in uscita,
ricominciando daccapo il tentativo di rintracciamento di RETE). La soluzione è il grafo in figura 1.15(b).
La tabella di flusso si ricava dalle transizioni, con relative uscite, del grafo ridotto (figura 1.15(c)).

Esercizio 1.e

Bisogna automatizzare l’apertura e la chiusura di una porta sulla base delle seguenti specifiche:
• la porta deve essere di norma tenuta chiusa;
• il valore 1 di un sensore P, che rileva la presenza di una persona sulla soglia, determina o un
movimento di apertura o il mantenimento di porta completamente aperta.

34 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Diagramma degli stati (b) Diagramma degli stati rido o

(c) Tabella di flusso

Figura 1.15: [Esercizio 1.d] (soluzione)

Un attuatore idraulico consente di muovere la porta (figura 1.16): il comando a = 1 la apre ed il comando
c = 1 la chiude. I due comandi devono essere attivi solo durante il movimento della porta ed uno solo
alla volta. Il sensore A individua se la porta è aperta del tutto (A = 1) oppure no (A = 0). Il sensore C
individua se la porta è chiusa del tutto (C = 1) oppure no (C = 0).
Decidete di realizzare il controllo della porta con una macchina combinatoria.
Tabulare la relazione ingresso/uscita. Quali configurazioni d’ingresso sono impossibili?
Nel precedente progetto riscontrate un comportamento indesiderato ogniqualvolta la porta comincia ad
aprirsi e la persona avanza subito per entrare. Cosa succede? Quale frase deve essere aggiunta alla specifica
per eliminare il comportamento indesiderato?
Come è fatto il grafo degli stati?
Come è fatta la tabella di flusso?

Figura 1.16: [Esercizio 1.e] Porta automatica

La tabella di verità della macchina combinatoria che opera il movimento della porta automatica è in tabel-
la 1.12. Le configurazioni con A = C = 1 sono impossibili, perché segnalano la porta aperta e chiusa allo
stesso momento.
Una situazione indesiderata avviene per A = C = P = 0: la porta è né del tutto aperta né del tutto chiusa,
con assenza di persona alla soglia, per cui viene comandata la chiusura. I valori di A e C non lasciano
capire se la porta si sta aprendo o chiudendo, per cui si può solo supporre quale sarà il comportamento. Per
considerare lo stato passato della porta bisogna progettare una macchina sequenziale asincrona a due stati.
La nuova specifica deve essere del tipo ”Se la porta è in fase di apertura, essa deve continuare ad aprirsi del

1.5 - Strumenti di analisi e sintesi 35


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
tutto, indipendentemente dal valore rilevato dal sensore P”.
Il grafo degli stati e la relativa tabella di flusso sono in figura 1.17. Nel grafo si distinguono due stati: uno
stato A di apertura della porta e uno stato B di chiusura.
• Di norma, l’automa è stabile in A (porta chiusa).
• Quando una persona è alla soglia (P = 1), l’automa comanda a = 1 per aprire la porta ma resta nello
stato A (A = C = 0). Passa allo stato B solo quando la porta è completamente aperta (A = 1): se
ci sono presenze non comanda nulla, mentre se non rileva presenze comanda la chiusura (c = 1).
• L’automa resta in stato B finché la porta deve restare aperta (perché è presente una persona alla
soglia, cioè P = 1) e quando la porta è aperta ma non ci sono persone da far passare (è ancora A = 1
ma P = 0, quindi diventa c = 1).
• L’automa resta ancora in B quando la porta è a mezza via in fase di chiusura (A = C = P = 0 e
c = 1).
• L’automa passa allo stato A quando una nuova persona si presenta alla soglia durante la chiusura,
cioè mentre A = C = 0 (interrompe la chiusura e comanda l’apertura con a = 1).
• L’automa passa allo stato A quando la chiusura è completa (C = 1) e non deve essere aperta per
assenza di persone, perché A è lo stato stabile per la porta chiusa.
È controversa la situazione dello stato B con gli ingressi A = 0, C = 1 e P = 1. Questa combinazione degli
ingressi è propria della porta chiusa con persona che si presenta alla soglia. Poiché la transizione B → A
avviene quando C = 1, è improbabile che proprio in quell’istante avvenga anche P = 1. Anche nel caso
accadesse, tuttavia, lo stato di destinazione sarebbe sempre A, dove esiste una configurazione stabile 011, 10
che comanda l’inizio dell’apertura della porta (e in questo rispetta la specifica). Ha senso ignorare questa
transizione, lasciando che sia il primo segnale che arriva (tra C = 1 e P = 1) a decidere in che modo
impostare l’uscita a durante la transizione verso A.

A C P a c Situazione
0 0 0 0 1 (Situazione indesiderata)
0 0 1 1 0 Porta a metà, da aprire per presenza
0 1 0 0 0 Porta chiusa, da mantenere chiusa per non presenza
0 1 1 1 0 Porta chiusa, da aprire per presenza
1 0 0 0 1 Porta aperta, da chiudere per non presenza
1 0 1 0 0 Porta aperta, da mantenere aperta per presenza
1 1 0 X X Porta sia aperta sia chiusa (impossibile)
1 1 1 X X Porta sia aperta sia chiusa (impossibile)

Tabella 1.12: [Esercizio 1.e] Tabella di verità (soluzione)

Figura 1.17: [Esercizio 1.e] Grafo degli stati e tabella di flusso (soluzione)

36 1 - Reti logiche
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 1.f

Una carreggiata di una strada a due direzioni di marcia è interrotta per lavori in corso ed è necessario
utilizzare l’altra a senso alternato. A tal fine vengono installati (figura 1.18(a)):
• due semafori, ciascuno con due lampade V, R e un segnale di comando S (S = 1 comanda il verde,
S = 0 comanda il rosso);
• due rilevatori di presenza automobile, che forniscono due segnali sincroni X1 e X2 (il valore 1 indica
che nel precedente intervallo T0 è stata rilevata almeno un’automobile);
• una macchina sincrona M azionata dallo stesso clock dei rilevatori ed incaricata di generare i valori
di S1 , S2 esaminando i valori assunti da X1 , X2 in ogni intervallo elementare.
Comportamento di M:
• in assenza di auto, entrambi i semafori devono avere il rosso acceso;
• se nell’intervallo successivo c’è un solo sensore a 1, il verde deve apparire solo sul semaforo davanti
a cui è ferma l’auto;
• se le auto in attesa sono due, il verde deve essere dato alla direzione di marcia che da più tempo
non lo ha avuto;
• una situazione di verde deve essere mantenuta negli intervalli successivi solo se c’è un’altra auto
che vuole procedere nello stesso senso e a patto che non ce ne sia una che vuole procedere in
senso opposto; in quest’ultimo caso deve essere dato il rosso su entrambe le direzioni per un tempo
sufficiente a garantire che anche l’ultima auto entrata nel tratto a senso unico possa uscirne senza
incrociare traffico nella direzione opposta.
Il tratto a senso unico è lungo 500 metri e la prescritta velocità di percorrenza è di 30 km/h. Quanti minuti
deve durare il rosso su entrambe le direzioni, per garantire lo smaltimento del traffico in corso sul tratto a
senso alternato?
Assumendo tale durata come periodo del clock, tracciare il grafo degli stati e la tabella di flusso.

(a) Situazione iniziale del sistema (b) Grafo degli stati (soluzione)

Figura 1.18: [Esercizio 1.f] Semaforo per senso unico alternato

1.5 - Strumenti di analisi e sintesi 37


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Il tempo che serve a percorrere il tratto alla velocità imposta è pari a un minuto:
0, 5 km 1
T0 = = h = 1 min
30 km/h 60
Il grafo degli stati è in figura 1.18(b). In esso sono evidenziate le transizioni che portano verso ai due stati che
autorizzano il transito (B per il transito da sinistra, D per il transito da destra). Il grafo è simmetrico, perché
il comportamento deve essere equivalente per il transito da entrambe le direzioni. Gli stati A e C servono
per tenere memoria dell’ultima auto passata e della direzione di provenienza, per autorizzare il transito dalla
parte opposta come da specifica.
La tabella di flusso 1.13 si ottiene inserendo i dati nel grafo in corrispondenza delle variabili di stato
dell’automa.

S n +1 , u n +1 ( X1 X2 )n = 00 ( X1 X2 )n = 01 ( X1 X2 )n = 10 ( X1 X2 )n = 11
A A,00 D,01 B,10 D,01
B A,00 A,00 B,10 A,00
C C,00 D,01 B,10 B,10
D C,00 D,01 C,00 C,00

Tabella 1.13: [Esercizio 1.f] Tabella di flusso (soluzione)

38 1 - Reti logiche
CAPITOLO 2

Reti combinatorie

Insisti che esiste qualcosa


che una macchina non può fare.
Quando mi dirai precisamente che cosa,
allora potrò sempre realizzare
una macchina che faccia solo questo.

J N

Sommario
In questo capitolo si approfondiscono i metodi per lavorare sui circuiti logici, da applicare sui
circuiti combinatori più semplici. Per far questo, si specificano le caratteristiche delle porte
logiche che realizzano i comportamenti degli operatori binari. Nella seconda parte si studiano i
circuiti combinatori a comportamento variabile, perché programmabili dal costruttore o dall’u-
tenza, notando che si tratta di circuiti basati su porte logiche, pur se in numero molto maggiore
e con possibilità di impiego più estese.

2.1 Reti di costo minimo


Per o enere uno stesso risultato si possono utilizzare reti diverse. Tra queste, una sola è quella
più efficente e più vantaggiosa dal punto di vista proge uale ed economico.
Il proge ista deve ricercare:

1. massima velocità di elaborazione, dunque minimo transitorio;

2. minimo numero di gate, possibilmente semplici (tipo AND o OR);

3. minimo numero di collegamenti, cioè di ingressi per ogni gate (fan-in), perché le porte logi-
che con fan-in alto sono molto costose e difficili da reperire.

Esistono alcuni indicatori (in tabella 2.1) per valutare un circuito logico, secondo i parametri ap-
pena descri i.
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Ngate numero di gate
Nconn numero di connessioni
Ncasc numero di gate in cascata (sul percorso più lungo)

Tabella 2.1: Indicatori per rete combinatoria

2.1.1 Espressioni minime


Definizione 2.1 (Espressione normale). Espressione SP o PS.

Definizione 2.2 (Espressione minima). Espressione normale della rete di costo minimo.

Definizione 2.3 (Implicante). L’implicante di una funzione completa in n variabili è il prodo o di


n (o meno) di quelle variabili. Vale 1 per le configurazioni in cui la funzione vale 1 (figura 2.1).

Definizione 2.4 (Implicante primo). Prodo o non più riducibile, che deve conservare tu i i le erali
per implicare la funzione.

L’implicante primo si ricava dalla prima forma canonica, applicando la proprietà di combina-
zione finché possibile.

Definizione 2.5 (Implicato). L’implicato di una funzione completa in n variabili è la somma di n (o


meno) di quelle variabili. Vale 0 per le configurazioni in cui la funzione vale 0 (figura 2.1)

L’implicato primo si ricava dalla seconda forma canonica, applicando la proprietà di combi-
nazione finché possibile.

Definizione 2.6 (Implicato primo). Somma non più riducibile che deve contenere tu i i le erali per
essere implicata dalla funzione.

Definizione 2.7 (Espressione irridondante). Espressione SP o Prodo o di Somme (PS) che deve
mantenere tu i i termini per non perdere l’equivalenza.

L’espressione è resa irridondante applicando il teorema del consenso.

Figura 2.1: Implicanti e implicati

Teorema 18 . L’espressione minima SP è una somma irridondante di implicanti primi.

Teorema 19 . L’espressione minima PS è un prodo o irridondante di implicati primi.

40 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.2 Mappa di Karnaugh
Per trovare una espressione, minima o ridondante, relativa a una macchina della quale abbiamo
la tabella di verità, è comodo utilizzare il metodo delle mappe di Karnaugh (o k-mappe).
La k-mappa è una rappresentazione su due dimensioni della tabella di verità. Ciò si o iene
suddividendo le variabili tra i due assi, per un totale di non oltre 4 variabili (2 per 2). La particola-
rità sta nelle configurazioni delle variabili indipendenti, quando presenti a coppie: celle adiacenti
devono avere coordinate che differiscono per un solo bit. Più intuitivamente, celle adiacenti hanno
un lato in comune (quindi non un angolo, in diagonale). Il codice Gray codifica due variabili A e
B con le seguenti coordinate ordinate:

00 01 11 10

L’ultima configurazione (10) differisce di un bit dalla prima (00), quindi c’è circolarità di adiacenza.
Questo consente di tra are caselle opposte su una riga (o colonna) come adiacenti. Alcuni tipi di
mappa possibili sono riportati in figura 2.2.

(a) k-mappa a 2 (b) k-mappa a 3 variabili (c) k-mappa a 4 variabili


variabili

Figura 2.2: Esempi di k-mappe

Le celle devono essere riempite con i valori della tabella di verità del problema, quindi con
0 oppure 1, seguendo gli indirizzi delle celle in accordo con le variabili. Una cella che contiene
un 1 indica un mintermine, mentre se contiene uno 0 indica un maxtermine. Gli implicanti si
o engono raggruppando le caselle con valore 1 in re angoli di area potenza di 2. Lo stesso vale
per gli implicati, o enuti in modo duale raggruppando celle con valori 0.

2.2.1 Regole per le mappe di Karnaugh


Ogni mappa ha 2n caselle, ciascuna contraddistinta da una combinazione dei valori assunti
dalle n variabili usate per l’indirizzamento. Per minimizzare una funzione si devono seguire le
regole elencate di seguito.

Nota 2.2.1 – Se si cerca l’espressione Somma di Prodotti (SP) si raggruppano gli 1; se si cerca la Prodotto di Somme (PS)
si raggruppano gli 0. Nella procedura si fa riferimento alla copertura degli 1, considerando che quella degli 0 si svolge in
maniera uguale.

1. Inserire gli 1, gli 0 e le condizioni di indifferenza nelle caselle, seguendo le indicazioni di


indirizzo della tabella di verità.

2. Raggruppare gli 1 che risultano adiacenti in gruppi di uno, due, qua ro, o o o sedici (quindi
2n ) elementi.

3. I raggruppamenti devono avere forma quadrata o re agolare con dimensione una potenza
del 2 (quindi non da sei elementi, o dodici).

2.2 - Mappa di Karnaugh 41


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
4. Ogni 1 deve essere partecipe di almeno un raggruppamento; quindi un 1 può essere com-
preso in più raggruppamenti diversi.

5. Non sono ammessi raggruppamenti di sole X. Non è obbligatorio raggruppare tu e le X, ma


solo quelle utili per rispe are il punto successivo della procedura.

6. I raggruppamenti devono essere di estensione massima e in numero minimo. Per raggiunge-


re questo scopo si possono raccogliere anche le X, purché in raccoglimenti che comprendano
almeno un 1.

7. Per identificare l’indirizzo di ogni raggruppamento, si scrivono le variabili che non cambiano
valore entro quel raggruppamento, ignorando quelle che cambiano. Le variabili di indirizzo
che restano costanti vanno scri e in forma vera se hanno valore 1 (0 per PS) e in forma negata
se hanno valore 0 (1 per PS).

8. Avendo raggruppato degli 1 si scrive la forma SP (viceversa la PS).

2.2.2 k-mappe per più di 4 variabili


Non si possono utilizzare mappe con oltre 4 variabili, perché diventerebbero tridimensionali e
oltre. Si può esternalizzare una variabile e assegnare una mappa a ogni valore di quella variabile.
Le adiacenze di una k-mappa multipla vanno ricercate non solo all’interno della singola map-
pa, ma pure tra una mappa e l’altra.

Definizione 2.8 (So omappe adiacenti). Due so omappe sono adiacenti se le configurazioni delle
variabili esterne sono adiacenti, dunque differiscono solo per un bit.

Teorema 20 . Sono adiacenti le celle che occupano la stessa posizione in so omappe adiacenti.

k-mappa con 5 variabili. Con 5 variabili, se ne impostano 4 sulla mappa e poi la si sdoppia,
scrivendola due volte: a una mappa si assegna la quinta variabile con valore 0, all’altra con valore
1 (figura 2.3). Quando si traccia un raggruppamento o si scrive un mintermine (o maxtermine)
bisogna tenere conto anche del valore della variabile esterna.
In k-mappe a 5 variabili, poiché le so omappe sono solo due esse sono sempre adiacenti; le celle
adiacenti si trovano come in figura 2.4(a).

Figura 2.3: k-mappa a 5 variabili

42 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
k-mappa con 6 variabili. Per le k-mappe con 6 variabili le variabili esterne sono 2. Le mappe non
sono tu e adiacenti tra loro, ma sono tre per tre coi criteri usuali. In figura 2.4(a) sono riportati
due esempi di celle adiacenti sulle qua ro so omappe che costituiscono un’unica mappa globale
a sei variabili.

(a) k-mappa a 5 variabili (b) k-mappa a 6 variabili

Figura 2.4: Celle adiacenti in k-mappe a 5 e 6 variabili

2.2.3 Raggruppamenti Re angolari


Definizione 2.9 (Raggruppamento Re angolare). Un Raggruppamento Re angolare (RR) di ordine
p è un insieme di 2 p celle.

Alcune proprietà degli RR sono:


• un RR di celle con valore 1 è un implicante (RR(1));
• un RR(1) che non è incluso in un RR(1) di ordine superiore è un implicante primo;
• un RR di celle con valore 0 è un implicato (RR(0));
• un RR(0) che non è incluso in un RR(0) di ordine superiore è un implicato primo.
Implicanti e implicati possono contenere anche condizioni di indifferenza.
Se le celle di un RR sono tu e incluse in altri RR, allora questo RR è ridondante e di solito è
inutile.

Definizione 2.10 (Copertura degli uno). La copertura degli uno (1) di una k-mappa è l’insieme dei
RR(1) che racchiudono tu e le celle di valore 1.

Nota 2.2.2 – La copertura degli uno definisce l’espressione normale SP associata alla k-mappa.

Definizione 2.11 (Copertura degli zero). La copertura degli zero (0) di una k-mappa è l’insieme dei
RR(0) che racchiudono tu e le celle di valore 0.

Nota 2.2.3 – La copertura degli zero definisce l’espressione normale PS associata alla k-mappa.

2.2 - Mappa di Karnaugh 43


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Le coperture sono minime se gli insiemi contengono il minimo numero di RR ed essi sono di
dimensione massima.

Esercizio 2.a

Data la tabella di verità (tabella 2.2), determinarne la mappa di Karnaugh e le espressioni minime SP e PS.

A B C S
0 0 0 1
0 0 1 X
0 1 0 0
0 1 1 X
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 0

Tabella 2.2: [Esercizio 2.a] Tabella di verità

La mappa di Karnaugh si ottiene riempiendo una mappa da 8 caselle, come quella in figura 2.5(a). A
seconda dei casi bisogna ricercare i RR(1) per l’espressione SP (figura 2.5(b)) o la RR(0) per la PS (figura
2.5(c)). Siccome sono presenti condizioni di indifferenza, le si può utilizzare per avere rettangoli di grandezza
maggiore, evitando tanti piccoli rettangoli minori che complicano le espressioni e non consentono di ottenere
quelle minime. In ogni caso, anche utilizzando rettangoli più piccoli, è possibile operare algebricamente
(utilizzando le proprietà dell’algebra di Boole) per ridurre le espressioni in forma minima. Dalla figura 2.5(b)
si ricava un quadrato in cui le coordinate rimangono costanti (a 0) per la variabile B, e variano per le altre
due. Poiché variabili che cambiano in un raggruppamento rettangolare si escludono dall’espressione, allora
S = B̄.
Dalla figura 2.5(c) si deduce lo stesso, con la differenza che (avendo raccolto degli zeri) si ragiona in logica
negata. Poiché rimane costante sempre B, ma con valore 1, allora S = B̄ ancora una volta. Questo conferma
a maggior ragione che espressioni minime SP e PS di una stessa macchina sono uguali: in caso di espressioni
meno banali di quella appena vista, è sufficiente applicare il teorema di De Morgan o le altre proprietà per
testare l’uguaglianza. Per dimostrare che anche raggruppamenti minori possono portare alla giusta soluzione,
vediamo sulla figura 2.5(b) che le quattro caselle del RR corrispondono alla somma dei prodotti:

S = Ā B̄C̄ + Ā B̄C + A B̄C̄ + A B̄C


= Ā B̄ + A B̄
= B̄

Se invece proviamo col prodotto delle somme (ricordando che siamo in logica negata):

S = ( A + B̄ + C )( Ā + B̄ + C )( A + B̄ + C̄ )( Ā + B̄ + C̄ )
= ( A + B̄)( Ā + B̄)
= A Ā + A B̄ + B̄ Ā + B̄
= 0 + B̄( A + Ā + 1)
= B̄

44 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Mappa di Karnaugh (b) Ricerca dell’espres- (c) Ricerca dell’espres-
sione SP sione PS

Figura 2.5: [Esercizio 2.a] Ricerca delle espressioni minime tramite k-mappa (soluzione)

Esercizio 2.b

Tracciare sulla mappa la funzione F = ∑4 m(1, 3, 5, 7, 8, 9, 12, 13). (Nota bene: per individuare i mintermini,
si deve considerare X1 come bit di maggior peso.)
1. Individuare graficamente tutti gli implicati primi.
2. Scrivere le espressioni corrispondenti.
3. Evidenziare quali dei RR tracciati non sono essenziali per la copertura.
4. Scrivere l’espressione minima SP.
5. Individuare l’espressione minima PS.

La funzione F rappresenta i valori 1 che devono essere posti in corrispondenza dei valori decimali del
mintermine m, da rappresentare con quattro bit nel formato X1 X2 X3 X4 (cfr. tabella 1.8).
1. Gli implicati primi indicati nella mappa di figura 2.6(c). Essi sono i RR che coprono gli zeri della
funzione.
2. Le espressioni corrispondenti ai tre implicati primi sono: X1 + X4 , X̄1 + X̄3 , X̄3 + X4 .
3. I RR non essenziali per la copertura sono evidenziati con sfondo azzurro in figure 2.6(b) (implicante
X̄3 X4 ) e 2.6(c) (implicato X̄3 + X4 ). I termini relativi a questi RR sono utili per una progettazione
anti-alea.
4. L’espressione minima SP si ricava dalla mappa in figura 2.6(b): F = X̄1 X4 + X1 X̄3 .
5. L’espressione minima PS si ricava dalla mappa in figura 2.6(c): F = ( X1 + X4 ) · ( X̄1 + X̄3 ).

(a) k-mappa (b) Implicanti primi per (c) Implicati primi per
espressione SP espressione PS

Figura 2.6: [Esercizio 2.b] Mappa di Karnaugh e RR (soluzione)

2.2 - Mappa di Karnaugh 45


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.2.4 Eliminazione di alee statiche
È possibile determinare un metodo per eliminare l’alea statica, se sono verificate due condizioni
fondamentali:

• gli ingressi della rete combinatoria devono cambiare uno solo per volta (condizione neces-
saria ma non sufficiente);

• il problema di disallineamento tra i segnali d’ingresso e i loro complementi deve essere ri-
solto, perché il ritardo di propagazione della funzione di negazione provoca di sicuro alea
statica.

Il disallineamento si risolve tramite la sintesi opportuna con le k-mappe.

Teorema 21 . Una rete combinatoria deve modificare il valore dei suoi ingressi solo uno alla volta. Tale rete
non ha alea statica se la copertura degli uno è tale che ogni coppia di 1 in celle adiacenti sia racchiusa in un
RR.

Nota 2.2.4 – Vale anche se si fa la copertura degli zeri per l’espressione PS.

Questo significa che bisogna ancora usare RR di dimensioni massime, ma non si devono elimi-
nare quelli inessenziali (ridondanti) come si fa per raggiungere l’espressione minima.
Un esempio di come si elimina l’alea (sul Multiplexer (MUX)) è riportato nell’esercizio 2.h.

2.2.5 Dimostrazione di secondo e terzo teorema dell’assorbimento con k-mappe


In figura 2.7 sono riportate le mappe di Karnaugh relative ai teoremi dell’assorbimento, pre-
sentati a pagina 23.

Secondo teorema dell’assorbimento. La mappa in figura 2.7(a) riporta tu i i mintermini. In ros-


so è evidenziato il mintermine incriminato x̄y: esso è equivalente a y perché, dopo aver riportato
le coperture e quindi avendo indicato gli 1, si può notare che il raggruppamento che genera x̄y
non è di dimensione massima. I RR di dimensione massima, per coprire i tre 1, sono x e y.

Terzo teorema dell’assorbimento. La mappa in figura 2.7(b) riporta tu i i mintermini, stavolta


evidenziando in rosso il mintermine in eccesso yz: esso è ridondante perché, dopo aver riportato
le coperture e quindi avendo indicato gli 1, si può notare che il raggruppamento lo che genera
non rispe a la regola che i RR siano in numero minimo. I suoi 1, infa i, sono già coperti dagli altri
mintermini (con dimensione massima).

Nota 2.2.5 – Il terzo teorema dell’assorbimento dimostra l’equivalenza tra la forma minima di un’espressione e la forma
anti-alea della stessa espressione.

2.2.6 Operazioni algebriche con k-mappe


Si può usare una k-mappa per ridurre un’espressione che potrebbe essere complicata da ma-
nipolare per via algebrica. Il metodo consiste nel calcolare la tabella di verità dell’espressione,
riempire la k-mappa ed effe uare la copertura di zeri o uni per ridurre il numero dei suoi termini.

46 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) II teorema (b) III teorema

Figura 2.7: Dimostrazione dei teoremi dell’assorbimento, con k-mappe

Esercizio 2.c

Ridurre l’espressione bc̄ + ābc + ābc̄.

Si potrebbe anche manipolare per via algebrica:

bc̄ + ābc + ābc̄ = bc̄ + āb · (c + c̄)


= bc̄ + āb

Altrimenti, per via grafica, si riempie la k-mappa con i valori che assume l’espressione, quindi si fa la copertura
degli uni (figura 2.8). Gli implicanti che si ottengono sono āb e bc̄, quindi la soluzione è la medesima.

Figura 2.8: [Esercizio 2.c] Riduzione di un’espressione tramite k-mappa (soluzione)

Esercizio 2.d

Ridurre l’espressione X = āb(c̄d + c) + ā(b̄c̄ + bcd) + a(bc + b̄c̄).

Questa espressione è molto complicata da semplificare per via algebrica. È più facile inserire nella k-mappa i
valori che assume l’espressione per tutte le combinazioni dei quattro ingressi e poi procedere con la copertura
degli uni (figura 2.9(a)) o degli zero (figura 2.9(b)). Le espressioni semplificate sono:

XSP = ābd + bc + b̄c̄


XPS = (b̄ + c + d) · ( ā + b̄ + c) · (b + c̄)

2.2 - Mappa di Karnaugh 47


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Copertura degli uno (b) Copertura degli zero

Figura 2.9: [Esercizio 2.d] Riduzione di un’espressione tramite k-mappa (soluzione)

2.3 Porte logiche


Le porte logiche sono quelle delle funzioni elementari, indicate in tabella 1.5.

Definizione 2.12 (Fan-out). Il fan-out è il numero massimo di ingressi ai quali si può collegare
l’uscita della porta logica.

Definizione 2.13 (Fan-in). Il fan-in è il numero di ingressi della porta logica. Corrisponde al numero
massimo di dati elaborabili dalla porta logica nello stesso istante.

2.3.1 Analisi e sintesi con porte logiche


Il proge o di sintesi di un circuito combinatorio prevede la seguente procedura:
1. leggere la descrizione a parole e identificare ingressi e uscite del sistema;
2. assegnare le variabili;
3. assegnare i valori logici alle variabili;
4. compilare la tabella di verità;
5. estrarre la forma canonica scelta e la relativa minimizzazione algebrica, oppure tracciare le
k-mappe;
6. disegnare il circuito minimo, utilizzando tu i i tipi di porte e considerando il fan-in e il
fan-out delle porte logiche;
7. disegnare il circuito minimo, utilizzando il tipo di porta logica universale migliore (NAND per
la forma SP, NOR per la PS);
8. redarre l’elenco dei componenti necessari e identificare il circuito più conveniente.
L’analisi di un circuito combinatorio prevede gli stessi passi, svolti in ordine inverso.

2.3.2 Sintesi con soli NAND o NOR


Partendo da espressioni SP (o PS) è possibile o enere un circuito combinatorio equivalente, for-
mato da sole porte NAND (rispe ivamente NOR). La conversione può essere effe uata per via pura-
mente algebrica, oppure sfru ando un algoritmo quando la complessità dei calcoli o del circuito
iniziale impedisce una risoluzione agile.

Metodo algebrico. Si nega due volte l’intera espressione algebrica minima, quindi si applica una
volta il teorema di De Morgan e si o iene il circuito a soli NAND o NOR.

48 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Metodo circuitale. Si disegna il circuito con porte AND, OR e NOT, quindi si sostituisce ogni porta
col circuito equivalente realizzato a NAND (per la forma SP) o NOR (per la forma PS). Il circuito in-
cluderà moltissime porte, ma applicando le proprietà dell’algebra di Boole è possibile ridurre il
circuito, semplificando inutili porte NOT poste una di seguito all’altra.
Esiste una via più breve, da usare con cautela: se si sostituisce ogni porta del circuito SP con una
porta NAND (idem per la PS, sostituendo con NOR), il risultato è ancora quello voluto.

Metodo algoritmico (NAND). Per o enere un circuito a soli NAND, partendo da un’espressione SP
(oppure SPS, SPSP, …):

1. Dall’espressione iniziale si ricava un’espressione in cui si esplicitano le parentesi e gli ope-


ratori AND.

2. Si sostituisce ogni AND con un NAND.

3. Si sostituisce ogni OR con un NAND, complementando variabili e costanti elaborate dall’ope-


ratore sostituito.

4. Si traccia lo schema così o enuto.

Metodo algoritmico (NOR). Per o enere un circuito a soli NOR, partendo da un’espressione PS
(oppure PSP, PSPS, …):

1. Dall’espressione iniziale si ricava un’espressione in cui si esplicitano le parentesi e gli ope-


ratori AND.

2. Si sostituisce ogni OR con un NOR.

3. Si sostituisce ogni AND con un NOR, complementando variabili e costanti elaborate dall’ope-
ratore sostituito.

4. Si traccia lo schema così o enuto.

Esercizio 2.e

Sintetizzare un EX-OR utilizzando sole porte NAND.

L’espressione SP che identifica l’EX-OR è ab̄ + āb, quindi si trasforma:

U = ab̄ + āb
= a ↑ b̄ + ā ↑ b
= ( a ↑ b̄) · ( ā ↑ b)
= ( a ↑ b̄) ↑ ( ā ↑ b)

L’espressione SP può essere difficile da trattare, quindi si può sommare una quantità nulla per rendere
meno fastidiosa la presenza delle variabili complementate. Questa quantità, sfruttando una proprietà degli

2.3 - Porte logiche 49


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
operatori, deve essere del tipo x · x̄; si somma una quantità per ogni variabile che serva. Quindi si trasforma
a NAND questa espressione Somma di Prodotti di Somme (SPS):

U = ab̄ + āb = ab̄ + āb + a ā + bb̄


= ( a · ( ā + b̄)) + (b · ( ā + b̄))
= ( a ↑ ( ā + b̄)) + (b ↑ ( ā + b̄))
= ( a ↑ ( ā + b̄)) · (b ↑ ( ā + b̄))
= ( a ↑ ( a · b)) ↑ (b ↑ ( a · b))
= ( a ↑ ( a ↑ b)) ↑ (b ↑ ( a ↑ b))

Lo schema finale SPS è in figura 2.10.

Figura 2.10: [Esercizio 2.e] EX-OR sintetizzato a soli NAND (soluzione)

Esercizio 2.f

Con i componenti indicati in figura 2.11 si devono realizzare un AND a tre ingressi e un OR a tre ingressi. I
segnali provenienti dall’esterno sono disponibili in forma vera e complementata.

Figura 2.11: [Esercizio 2.f] Porte logiche a disposizione per comporre AND e OR a tre ingressi

Un buon metodo per sintetizzare circuiti basati su porte NAND e NOR è negare due volte l’espressione di
partenza e poi manipolarla con le regole dell’algebra di Boole.
Per l’AND a tre ingressi:

A·B·C = A·B·C
= Ā + B̄ + C̄
· B} +C̄
= |A{z
NAND
| {z }
NOR

50 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Per l’OR a tre ingressi:

A+B+C = A+B+C
= Ā · B̄ · C̄
= A + B ·C̄
| {z }
NOR
| {z }
NAND

I due circuiti sono in figura 2.12.

Figura 2.12: [Esercizio 2.f] Sintesi di AND e OR a tre ingressi con NAND e NOR (soluzione)

Esercizio 2.g

Quale tipo di gate consente di ottenere z1 = x2 e z2 = x1 ?

Figura 2.13: [Esercizio 2.g] Porta logica da stabilire

Definisco come y l’uscita del primo blocco intermedio. In tabella 2.3 riporto le relazioni tra x1 , x2 e z1
per mezzo dei valori che assume y (y1 , y2 , y3 , y4 ). Noto che solo due bit sono a 1 in z1 , quindi la porta
logica deve essere un EX-OR oppure un EX-NOR. Entrambe vanno bene allo scopo (tabelle 2.4), quindi la rete
combinatoria può essere realizzata o con tre EX-OR o con tre EX-NOR. La soluzione risolve anche l’uscita x2 ,
perché il problema è duale.

x1 x2 y x1 z1 (= x2 )
0 0 y1 0 0
0 1 y2 0 1
1 0 y3 1 0
1 1 y4 1 1

Tabella 2.3: [Esercizio 2.g] Tabella di verità della porta logica da stabilire (soluzione)

2.3 - Porte logiche 51


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Soluzione con EX-OR (b) Soluzione con EX-NOR
x1 x2 y = x1 ⊕ x2 x1 z1 = y ⊕ x1 x1 x2 y = x1 ≡ x2 x1 z1 = y ≡ x1
0 0 0 0 0 0 0 1 0 0
0 1 1 0 1 0 1 0 0 1
1 0 1 1 0 1 0 0 1 0
1 1 0 1 1 1 1 1 1 1

Tabella 2.4: [Esercizio 2.g] Tabelle di verità della porta logica stabilita (soluzione)

2.4 Circuiti logici notevoli

2.4.1 Decoder

Definizione 2.14 (Decodificatore). Un decodificatore è un generatore di mintermini.

Un decodificatore (in inglese decoder) con n variabili genera 2n mintermini, i quali rappresen-
tano tu e le possibili combinazioni delle variabili e dei loro complementi. Uno schema funzionale
è in figura 2.14(a); la stru ura interna è in figura 2.14(b); la tabella di verità relativa al decoder a 2
variabili (estendibile a n variabili) è in tabella 2.5.
Il principio di utilizzo di un decoder sta, una volta determinato il tipo a seconda del numero
di variabili, nel sommare i mintermini che servono per risolvere il problema con una porta OR.
Quindi, delle 2n uscite, se ne prenderà un numero compreso tra 1 e il totale, per sommarle ed
o enere la forma SP.

(a) Schema funzionale (b) Stru ura interna

Figura 2.14: Schemi di decoder a due variabili

A B m0 m1 m2 m3
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1

Tabella 2.5: Tabella di verità del decoder (a 2 variabili)

52 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.4.2 Encoder
L’encoder compie l’operazione inversa rispe o al decoder, cioè effe ua una codifica ”1 su n”
(figura 2.15): in ingresso sono acce ate solo combinazioni che hanno un solo bit pari a 1, in uscita
è fornito il corrispondente valore in binario (quindi con meno bit). La tabella di verità 2.6 mostra
questo comportamento.
Dall’analisi delle k-mappe che si possono compilare a partire dalla tabella di verità si trovano
le espressioni canoniche dell’encoder:
z1 = x̄2 x1 x̄0 + x2 x̄1 x̄0
z0 = x̄2 x̄1 x0 + x2 x̄1 x̄0

Figura 2.15: Schema funzionale dell’encoder

x2 x1 x0 z1 z0
0 0 0 0 0
0 0 1 0 1
0 1 0 1 0
0 1 1 – – (impossibile)
1 0 0 1 1
1 0 1 – – (impossibile)
1 1 0 – – (impossibile)
1 1 1 – – (impossibile)

Tabella 2.6: Tabella di verità dell’encoder (a 3 variabili)

2.4.3 MUX
Definizione 2.15 (Multiplexer). Un multiplexer è un dispositivo programmabile, la cui funzione
logica d’uscita è una somma dei mintermini selezionati dagli ingressi.

Un Multiplexer (MUX) ha n ingressi di selezione (A, B, C, . . . ), 2n ingressi per i dati (i0 , i1 , …)


e una sola uscita. Gli ingressi per i dati sono anche chiamati variabili di programmazione perché il
loro valore è assegnato dall’utente ed è richiamato impostando l’indirizzo corrispondente sugli
ingressi di selezione (indirizzi). C’è una corrispondenza univoca tra gli indirizzi di selezione e i
dati: impostato un indirizzo, in uscita c’è il dato corrispondente. Gli schemi funzionali di alcuni
MUX con diverso numero di bit d’indirizzo sono in figura 2.16.
Se chiamiamo m0 , m1 , . . . le combinazioni possibili per gli ingressi di selezione, allora la gene-
rica funzione d’uscita del MUX è:
y = m0 i0 + m1 i1 + m2 i2 + . . .
cioè ogni indirizzo corrisponde a una precisa combinazione dei dati in ingresso (tabelle di veri-
tà 2.7). Siccome i dati sono 2n , anche gli addendi della funzione saranno in potenza di 2. A secon-
da del valore assegnato ai dati (i j ) si possono mantenere o eliminare mintermini dall’espressione,
conservando quelli risolutivi del problema.

2.4 - Circuiti logici notevoli 53


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Un bit d’indi- (b) Due bit d’indirizzo (c) Tre bit d’indi-
rizzo rizzo

Figura 2.16: MUX

Ad esempio, in un MUX a 2 variabili (quindi a 4 ingressi) si ha:

m0 = Ā · B̄ m1 = ĀB m2 = A B̄ m3 = AB

(b) MUX a tre bit d’indi-


(a) MUX a un bit d’indirizzo rizzo
A I0 I1 y A B C y
0 0 0 0 (I0 ) 0 0 0 I0
0 0 1 0 (I0 ) 0 0 1 I1
0 1 0 1 (I0 ) 0 1 0 I2
0 1 1 1 (I0 ) 0 1 1 I3
1 0 0 0 (I1 ) 1 0 0 I4
1 0 1 1 (I1 ) 1 0 1 I5
1 1 0 0 (I1 ) 1 1 0 I6
1 1 1 1 (I1 ) 1 1 1 I7

Tabella 2.7: Tabella di verità del MUX

Esempio di sintesi con MUX. Considero un MUX a due bit d’indirizzo. Se assegnassi i0 = i3 = 0
e i1 = i2 = 1, allora avrei o enuto la funzione:

y = m1 + m2 = ĀB + A B̄

che è l’espressione dell’EX-OR.


Utilizzando altri valori sugli ingressi dati è possibile cambiare i mintermini della funzione, ot-
tenendone una nuova e diversa. In tal modo è possibile realizzare funzioni elementari, come in
questo caso, o funzioni più complesse e non esistenti già disponibili.

Alea statica nel MUX. Il MUX soffre di alea statica, se realizzato a partire dall’espressione minima.
Le variazioni sui segnali del circuito sono visibili in figure 1.8(a) e 1.8(b). Negli esercizi 2.h e 2.i si
proge a il MUX per evitare che esso soffra di alea statica.

Esercizio 2.h

Il circuito minimo del MUX, in figura 2.17(b), si ottiene dalla k-mappa 2.17(a).
Disegnare il nuovo circuito immune da alea statica.

54 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) k-mappa (b) Circuito minimo (c) Circuito anti-alea (soluzione)

Figura 2.17: [Esercizio 2.h] Implementazione anti-alea del MUX

L’espressione minima del MUX si ottiene dai RR rossi in figura 2.17(a). Il RR blu è ridondante, quindi il suo
mintermine ha effetto anti-alea.
Il circuito minimo, in figura 2.17(b), ha espressione:

U = ĀI0 + AI1

Aggiungendo il termine ridondante anti-alea si ottiene lo schema di figura 2.17(c):

U = ĀI0 + AI1 + I1 I0

Esercizio 2.i

Si deve realizzare a NOR un selettore a due vie privo di alea statica.


1. Individuare l’espressione PS.
2. Individuare l’espressione Prodotto di Somme di Prodotti (PSP) equivalente.
3. Trasformare a NOR entrambe le espressioni.
4. Tracciare i due schemi logici.

Un selettore a due vie è un MUX a due ingressi, quindi a un bit d’indirizzo. Dalla sua tabella di verità 2.6(a) si
ricava la mappa di Karnaugh 2.18(a) e l’espressione PS anti-alea (quindi senza eliminare i termini ridondanti)
con la copertura degli zeri:
U = ( I0 + A) · ( I1 + Ā) · ( I0 + I1 )
L’espressione PSP si ottiene sviluppando una parte dell’espressione PS per ridurla e ottenerla in forma SP:

U = ( I1 + Ā) · ( I0 + A) · ( I0 + I1 )
= ( I1 + Ā) · ( AI0 + AI1 + I0 + I0 I1 )
( )
= ( I1 + Ā) · A( I0 + I1 ) + I0 (1 + I1 )
( )
= ( I1 + Ā) · A( I0 + I1 ) + I0
= ( I1 + Ā) · ( AI0 + AI1 + I0 )
( )
= ( I1 + Ā) · I0 ( A + 1) + AI1
= ( I1 + Ā) · ( I0 + A · I1 )

2.4 - Circuiti logici notevoli 55


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Trasformo a NOR l’espressione PS (schema in figura 2.18(b)):

U = ( I1 + Ā) · ( I0 + A) · ( I0 + I1 )
= ( I1 ↓ Ā) · ( I0 ↓ A) · ( I0 ↓ I1 )
= ( I1 ↓ Ā) + ( I0 ↓ A) + ( I0 ↓ I1 )
= ( I1 ↓ Ā) ↓ ( I0 ↓ A) ↓ ( I0 ↓ I1 )

Trasformo a NOR l’espressione PSP (schema in figura 2.18(c)):

U = ( I1 + Ā) · ( I0 + A · I1 )
= ( I1 ↓ Ā) · ( I0 ↓ A · I1 )
( )
= ( I1 ↓ Ā) + I0 ↓ Ā + Ī1
( )
= ( I1 ↓ Ā) ↓ ( I0 ↓ Ā ↓ Ī1 )

(a) Mappa di Karnaugh e co- (b) Schema logico PS (c) Schema logico PSP
pertura degli zeri

Figura 2.18: [Esercizio 2.i] Realizzazione di MUX a NOR (soluzione)

Esercizio 2.j

Qual è il comportamento della rete combinatoria indicata in figura 2.19?

Figura 2.19: [Esercizio 2.j] Rete combinatoria con decoder e MUX

La tabella di verità 2.8 permette di risolvere il problema. L’uscita Z del MUX propone il valore dell’uscita
del decoder corrispondente a y2 y1 y0 . Il decoder, però, è pilotato da x2 x1 x0 : quindi, Z = 1 solo quando gli
indirizzi di decoder e MUX sono uguali (X = Y).

56 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
x2 x1 x0 Uscita decoder a iva y2 y1 y0 Ingresso a ivo MUX Z
0 0 0 O0 0 0 0 I0 O0
0 0 1 O1 0 0 1 I1 O1
0 1 0 O2 0 1 0 I2 O2
0 1 1 O3 0 1 1 I3 O3
1 0 0 O4 1 0 0 I4 O4
1 0 1 O5 1 0 1 I5 O5
1 1 0 O6 1 1 0 I6 O6
1 1 1 O7 1 1 1 I7 O7

Tabella 2.8: [Esercizio 2.j] Tabella di verità (soluzione)

2.4.4 Half Adder (HA)

Un Half Adder (HA) è un circuito che effe ua la somma con riporto di due bit, proponendo in
uscita il risultato su due uscite separate (figura 2.20).
La tabella di verità è in tabella 2.9. Da essa si nota che l’espressione della somma è la funzione
EX-OR dei due ingressi, mentre il riporto si o iene dalla funzione AND:

S = A⊕B
R = A·B

L’HA è un sommatore ”a metà” perché non ha la capacità di sommare altro che due bit, per cui il suo
impiego è molto limitato. Una stru ura più complessa che utilizza più HA compone il sommatore
Full Adder (FA).

A B R (riporto) S (somma)
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Tabella 2.9: Tabella di verità del sommatore Half Adder (HA)

Figura 2.20: Stru ura interna dell’Half Adder (HA)

2.4.5 Sommatore Full Adder (FA)

Si può estendere l’HA in modo da sommare anche un precedente riporto r ai due addendi a e
b. La relativa tabella di verità è la 2.10.

2.4 - Circuiti logici notevoli 57


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
r a b R (riporto) S (somma)
m0 0 0 0 0 0
m1 0 0 1 0 1
m2 0 1 0 0 1
m3 0 1 1 1 0
m4 1 0 0 0 1
m5 1 0 1 1 0
m6 1 1 0 1 0
m7 1 1 1 1 1

Tabella 2.10: Tabella di verità del sommatore FA

Risolvendo in modo separato per S e R si trovano le loro espressioni canoniche. Sviluppando


le espressioni SP si o engono relazioni con l’HA:

S = m1 + m2 + m4 + m7
= r̄ āb + r̄ab̄ + r āb̄ + rab
= r̄ ( āb + ab̄) + r ( āb̄ + ab)
= r̄ ( a ⊕ b) + r ( a ⊕ b)
= r ⊕ ( a ⊕ b)
R = m3 + m5 + m6 + m7
= r̄ab + r āb + rab̄ + rab
= ab(r + r̄ ) + r ( āb + ab̄)
= ab + r ( a ⊕ b)

Lo schema logico che rappresenta il FA è in figura 2.21(b). È evidente che si può realizzare un FA
utilizzando due HA connessi in cascata, con l’aggiunta di una porta OR.

(a) Schema fun- (b) Stru ura interna


zionale

Figura 2.21: Full Adder (FA)

Dalle formule si può ricavare uno schema con le porte logiche (secondo i metodi tradizionali,
anche se comporta l’utilizzo di molti gate), ma in questo caso le vie più brevi sono l’utilizzo di un
decoder (figura 2.22(a)) oppure di due MUX (figura 2.22(b)).

2.4.6 Implicazione logica


La funzione di implicazione logica può essere descri a in uno dei modi seguenti:

• la funzione non vale 1 solo se A = 1 e B = 0;

• la funzione vale 1 se A ̸= 1 oppure B = 1.

58 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Sommatore realizzato con decoder

(b) Sommatore realizzato con MUX

Figura 2.22: Sommatore

L’implicazione non è commutativa (tabella 2.11). Infa i la sua espressione algebrica è la seguente:

A ⇒ B = Ā + B

A B A⇒B
0 0 1
0 1 1
1 0 0
1 1 1

Tabella 2.11: Tabella di verità dell’implicazione logica

Esercizio 2.k

Realizzare la funzione a ⇒ b sia con un MUX con due bit d’indirizzo, sia con un MUX con un bit d’indirizzo.

L’implicazione logica si realizza tra due variabili operando la somma ā + b.


La soluzione con un MUX a due bit d’indirizzo è facile, perché è sufficiente usare come indirizzi a e b e
porre ai suoi ingressi i valori previsti dalla tabella di verità dell’implicazione (tabella 2.11). Lo schema di
collegamento dei valori è in figura 2.23(a).

2.4 - Circuiti logici notevoli 59


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
La soluzione con un MUX a un bit d’indirizzo deve essere fatta con l’analisi della tabella di verità 2.11(b).
Si può osservare che, usando la variabile a dell’implicazione come indirizzo del MUX (A = a), allora nascono
delle relazioni tra l’altra variabile b e gli ingressi del MUX:
• quando a = 0, Z deve essere pari a 1 sempre; allora si pone I0 = 1;
• quando a = 1, Z deve essere pari a b sempre; allora si pone I1 = b.
Lo schema di collegamento è in figura 2.23(b).

(b) Asso-
(a) MUX a un ciazione tra
bit d’indiriz- implicazione e
zo uscita del MUX
A Z a b Z
0 I0 0 0 1
1 I1 0 1 1
1 0 0
1 1 1

Tabella 2.12: [Esercizio 2.k] Tabelle di verità e collegamento logico tra A e a (soluzione)

(a) MUX a due bit d’indirizzo (b) MUX a un bit


d’indirizzo

Figura 2.23: [Esercizio 2.k] Circuiti per implicazione logica (soluzione)

60 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.5 Circuiti programmabili
I circuiti programmabili possono realizzare più comportamenti combinatori differenti. L’uten-
te sceglie quello preferito impostando y bit di programmazione (p1 , . . . , py ); le funzioni da scegliere
sono 2y , ognuna di n variabili. Lo schema generico è in figura 2.24.

Figura 2.24: Circuito combinatorio programmabile

2.5.1 ROM
Una memoria di tipo Read Only Memory (ROM) realizza qualunque funzione di n variabili su
ciascuna delle sue uscite. Ogni uscita è generata da una rete, la quale ha espressione generale di
tipo SP. La stru ura di una ROM è in figura 2.25(a).

(a) Stru ura interna (b) Stru ura dei conta i

Figura 2.25: ROM

I bit di programmazione agiscono separatamente sugli AND; i valori dei 2n bit devono essere
fissati per corrispondere ai 2n valori della funzione desiderata. Quindi una ROM è un MUX con molti
ingressi, o meglio un insieme di MUX in parallelo. La differenza sta nel fa o che, nella ROM, i valori
della funzione non sono segnali esterni, ma bit del circuito. Questo fa o porta ad associare i segnali
di programmazione (valori 1 o 0 della funzione) con dei conta i (aperti o chiusi). In figura 2.25(b)
sono evidenziati i diversi tipi di conta o, come rappresentati secondo convenzione.
Le ROM pongono due problemi di proge azione, facilmente risolvibili.

Numero insufficiente di bit d’uscita. Si posizionano tante ROM in parallelo quante ne servono
per avere il giusto numero di uscite (figura 2.26(a)).

Numero insufficiente di bit d’indirizzo. Si opera una selezione a due dimensioni:

• voglio n bit d’indirizzo, ne ho m ma e m < n;

2.5 - Circuiti programmabili 61


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
• allora pongo in parallelo 2n−m ROM, poi seleziono le uscite omonime (su ROM diverse) con
MUX con n − m bit d’indirizzo (figura 2.26(b)).

(a) Estensione delle uscite (b) Estensione degli ingressi

Figura 2.26: Problemi di proge azione delle ROM

Buffer. Lo stadio di uscita di una ROM è composto da buffer, cioè amplificatori a 3 stati di uscita
(figura 2.27). Questi buffer rendono semplice e distribuita la realizzazione del MUX, a pa o di
essere a ivi solo uno per volta. Infa i, l’uscita può valere 0 o 1 come tu e le altre porte logiche,
oppure può essere posta in stato di alta impedenza tramite il comando Output Enable (OE). Questo
stato perme e di unire tu e le uscite di un parallelo di buffer a bus comune e di abilitare solo il
buffer a raverso il quale si vuole leggere il valore che ha a monte.

Figura 2.27: Buffer

Esercizio 2.l

Per un processore con 8 bit di dato (D0 . . . D7 ) e 16 bit d’indirizzo (A0 . . . A15 ) si vuole rendere non volatili
i 32 KiB della memoria principale che sono disposti tra l’indirizzo 8000 H e l’indirizzo FFFF H . Supponiamo
di avere a disposizione ROM da 8192 × 8 bit.

Lo schema risolutivo è in figura 2.28. Per soddisfare le specifiche occorrono quattro ROM, una connessione
a bus comune delle loro uscite e un decoder per abilitarle. Quindi, questo progetto permette di usare i 16
bit di indirizzamento per leggere quattro ROM da 13 bit ciascuna (8 KiB a testa).
Al comando di lettura (MRD = 0), tutte e quattro le ROM si predispongono per estrarre il byte indirizzato
dai bit A0 . . . A12 . La scelta della ROM è demandata al decoder. Solo se l’ingresso di maggior peso (A15 ) ha
valore 1, allora una sola delle sue uscite attive basse Ō4 , Ō5 , Ō6 , Ō7 ha valore zero. Quindi, l’unico dispositivo
che riceve CE = 0 trasferisce il suo contenuto sul bus di lettura.
Il processore ha il compito di porre MRD = 0 ogni volta che modifica l’indirizzo di lettura: questa procedura
serve a evitare che due letture successive causino conflitti elettrici sui conduttori condivisi del bus dei dati.

62 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Figura 2.28: [Esercizio 2.l] Abilitazione di un banco di ROM (soluzione)

Esercizio 2.m

Progettare le abilitazioni del banco di ROM da 32 kB (B=byte) nel caso in cui si disponga di una ROM da
16 kB, una ROM da 8 kB e due ROM da 4 kB (figura 2.29).

Figura 2.29: [Esercizio 2.m] Banco di ROM da abilitare

Si costruisce il piano di indirizzamento (tabella 2.13). ROM di dimensioni diverse usano più o meno bit di
indirizzamento, quindi posso usare la seguente strategia:
1. decido di distinguere le ROM più piccole tramite un bit (A12 ) che non è utilizzato per esse, ma è
invece usato per le ROM più grandi;

2.5 - Circuiti programmabili 63


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2. costruisco la sequenza 0–1–2–4 in codice binario con i bit A14 e A13 , per ordinare le memorie dalla
più piccola alla più grande;
3. imposto A15 = 1 per utilizzare solo quattro uscite del decoder e lasciare libere le altre quattro.
La situazione successiva è in tabella 2.14. Ci concentriamo sulle quattro uscite superstiti del decoder. Si
osserva che:
• sull’uscita Ō4 si può usare A12 per discriminare tra le due ROM; quindi, si progetta un selettore
(tabella 2.14(a));
• l’uscita Ō5 corrisponde agli indirizzi della ROM 2, quindi si può effettuare un collegamento diretto
(il decoder ha le uscite attive basse, quindi non è necessaria logica aggiuntiva per rendere negato il
segnale di comando dei CE);
• per le uscite Ō6 e Ō7 deve essere comandato CE = 0 quando Ō6 = 0 oppure Ō7 = 0: un AND è la
funzione che costruisce questa situazione (tabella 2.14(b)).
Lo schema finale dei collegamenti per l’abilitazione del banco di ROM è in figura 2.30.

ROM A15 A14 A13 A12 A11 . . . A0


ROM 4 (4 KiB) 1 0 0 0 …
ROM 3 (4 KiB) 1 0 0 1 …
ROM 2 (8 KiB) 1 0 1 … …
ROM 1 (16 KiB) 1 1 … … …

Tabella 2.13: [Esercizio 2.m] Costruzione del piano di indirizzamento (soluzione)

Ōi decoder A15 = C A14 = B A13 = A A12 ROM Collegamento a CE


Ō0 ÷ Ō3 0 X X X – N.C.
Ō4 1 0 0 0 ROM 4 (4 KiB) Sele ore (indirizzo A12 )
Ō4 1 0 0 1 ROM 3 (4 KiB) Sele ore (indirizzo A12 )
Ō5 1 0 1 0 ROM 2 (8 KiB) Dire o
Ō4 1 0 1 1 ROM 2 (8 KiB) Dire o
Ō4 1 1 0 0 ROM 1 (16 KiB) AND
Ō4 1 1 0 1 ROM 1 (16 KiB) AND

Ō4 1 1 1 0 ROM 1 (16 KiB) AND


Ō4 1 1 1 1 ROM 1 (16 KiB) AND

Tabella 2.14: [Esercizio 2.m] Piano di indirizzamento e collegamenti (soluzione)

(a) Sele ore per ROM 3 e ROM 4 (b) AND per ROM 1
Ō4 A12 U0 U1 Ō7 Ō6 CE

0 0 0 1 ROM 4 0 0 0 (impossibile)
0 1 1 0 ROM 3 0 1 0
1 0 1 1 ROM non selezionate 1 0 0
1 1 1 1 ROM non selezionate 1 1 1

Tabella 2.15: [Esercizio 2.m] Tabelle di verità delle logiche di comando dei CE (soluzione)

64 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Figura 2.30: [Esercizio 2.m] Abilitazione di un banco di ROM (soluzione)

Soluzione alternativa. C’è un metodo più semplice, basato sulla tabella di verità 2.16:
• si collegano i bit di indirizzo da A11 a A0 a tutte le ROM;
• si collega il bit di indirizzo A12 solo alle ROM maggiori da 16 KiB e 8 KiB;
• si collega il bit di indirizzo A13 solo alla ROM maggiori da 16 KiB;
• si assegnano le uscite del decoder all’abilitazione delle ROM, seguendo un certo criterio:
– quando A14 = A13 = 0, il bit A12 discrimina le due ROM da 4 KiB (collegamenti diretti ai due
CE);

– quando A14 = 0, il bit A13 = 1 identifica la ROM da 8 KiB (il CE è pilotato dall’uscita di un
AND tra le uscite Ō2 e Ō3 );

– il bit A14 = 1 identifica la ROM da 16 KiB (il CE è pilotato dall’uscita di un AND tra le uscite
Ō4 , Ō5 , Ō6 e Ō7 ).
Lo schema di collegamento è in figura 2.31. L’uso degli AND è legittimo perché il comando di CE è attivo
basso e le uscite sono attive basse, mentre l’AND tra più segnali ha l’uscita a 1 solo se tutti i suoi ingressi sono
a 1. Quando nessuna delle uscite che pilotano l’AND è selezionata, allora esse sono tutte a 1 e mantengono
la ROM disattivata; altrimenti, è sufficiente un’uscita del decoder a 1 per porre l’AND a 0 e attivare la ROM.

A14 A13 A12 Ō Collegamento verso le ROM


0 0 0 Ō0 =0 ROM 4 (dire o al CE)
0 0 1 Ō1 =0 ROM 3 (dire o al CE)
0 1 0 Ō2 =0 ROM 2 (AND)
0 1 1 Ō3 =0 ROM 2 (AND)
1 0 0 Ō4 =0 ROM 1 (AND)
1 0 1 Ō5 =0 ROM 1 (AND)
1 1 0 Ō6 =0 ROM 1 (AND)
1 1 1 Ō7 =0 ROM 1 (AND)

Tabella 2.16: [Esercizio 2.m] Tabella di verità (soluzione)

2.5 - Circuiti programmabili 65


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

Figura 2.31: [Esercizio 2.m] Abilitazione di un banco di ROM (soluzione alternativa)

66 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.5.2 PLA e PAL
Generalizzando quanto visto per le ROM, si deduce che una memoria programmabile è com-
posta di una matrice di AND e una matrice di OR. Nelle ROM, l’utente programma la matrice OR,
mentre la matrice AND è lasciata al costru ore. Se sorgono esigenze differenti di programmazione,
esistono tipi alternativi di memoria basati sulla stessa archite ura.

Definizione 2.16 (Programmable Logic Array (PLA)). Una PLA è una memoria sulla quale l’utente
programma entrambe le matrici.

Definizione 2.17 (Programmable Array Logic (PAL)). Una PAL è una memoria sulla quale l’utente
programma la sola matrice AND.

In entrambi i casi, il vantaggio risiede nel numero di AND posti tra le due matrici, che è di molto
inferiore a 2n (con n ingressi). Tale vantaggio economico si paga non potendo realizzare proprio
tu e le funzioni in n variabili.

Figura 2.32: Confronto tra PLA e PAL

Esercizio 2.n

Programmare una PLA e una PAL in modo realizzino in maniera indipendente entrambe le funzioni z( a, b, c, d)
e w( a, b, c, d), di cui sono disponibili le mappe di Karnaugh (figura 2.33).
Entrambe le logiche programmabili hanno quattro linee di ingresso, cinque AND e due OR per le uscite. La
PAL è programmata dal costruttore con due AND sommati sulla prima uscita e i rimanenti tre AND sommati
sulla seconda uscita.

Le funzioni z e w hanno tre implicanti primi a testa:

z = āc̄ + ac + cd¯
w = ab̄c̄ + ābcd + ācd¯

Il problema è che gli AND disponibili sono solo cinque. Bisogna modificare le espressioni delle due funzioni
perché usino implicanti non primi, ma in comune. La copertura di z può essere fatta con due implicanti primi
¯ Questa scelta è vantaggiosa perché ācd¯ è implicante anche
(āc̄ e ac) e con un implicante non primo (ācd).

2.5 - Circuiti programmabili 67


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Figura 2.33: [Esercizio 2.n] Mappe di Karnaugh per programmare PLA e PAL

di w, per cui si può sfruttare l’uscita dell’AND relativo per entrambe le funzioni. Lo schema di collegamento
della PLA è in figura 2.34(a).
La programmazione della PAL è complicato dalla struttura rigida assegnata dal costruttore, che impone di
avere una delle due funzioni realizzata dalla somma di due soli implicanti. Si può notare che il complemento
di z è descritto dalla somma di soli due implicanti:

z̄ = ac̄ + ācd

In questo modo, z̄ può essere programmata nelle prime due colonne della matrice. Le altre tre colonne sono
sufficienti per la programmazione di w. Lo schema di collegamento della PAL è in figura 2.34(b).

(a) Implementazione della PLA (b) Implementazione della PAL

Figura 2.34: [Esercizio 2.n] Realizzazione di funzioni su logiche programmabili (soluzione)

68 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.5.3 PLD
In tempi più moderni, per migliorare le prestazioni e aumentare le possibilità di impiego delle
memorie programmabili, si sono inserite dei circuiti di retroazione all’interno di stru ure più
semplici (come le PLA o le PAL). Queste retroazioni possono essere basate su MUX oppure su flip-
flop.
Le memorie così o enute prendono il nome di Programmable Logic Device (PLD) e hanno una
stru ura generale come riportata in figura 2.35.

Figura 2.35: Stru ura di una PLD

Esercizio 2.o

Programmare la PLD di figura 2.36(b) con le funzioni di stato futuro e d’uscita del semaforo (figura 2.36(a),
corrispondente alla tabella 4.10).

(a) Tabelle di verità del semaforo (b) Stru ura interna della PLD

Figura 2.36: [Esercizio 2.o] Realizzazione di un semaforo con PLD

Per programmare la PLD bisogna compilare le mappe di Karnaugh per ciascuna delle uscite zi e per ciascuno
stato futuro yin+1 , sulla base della tabella di verità fornita (figura 2.37). Dalle mappe si ottengono le seguenti

2.5 - Circuiti programmabili 69


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
espressioni:

z1 = ȳ2 ȳ1 + ȳ2 y1 ȳ0


z2 = ȳ2 y1 y0
z3 = y2
y2n+1 = y2 ȳ1 + y1 y0
y1n+1 = ȳ1 y0 + ȳ2 y1 ȳ0
y0n+1 = ȳ1 ȳ0 + ȳ2 ȳ0

Si nota che ci sono nove implicanti primi a fronte di soli sette AND disponibili. Bisogna riscrivere alcune
espressioni per poter riutilizzare gli implicanti in più casi. In particolare, si può usare un implicante non
primo per y0n+1 e si può fare la copertura degli zeri per z̄1 e ottenerne gli implicanti primi, notando che essi
sono in comune con altre espressioni (tabella 2.17) Dopo questa operazione restano sette implicanti e si può
connettere il tracciato interno della PLD come in figura 2.38.

Figura 2.37: [Esercizio 2.o] Mappe di Karnaugh (soluzione)

Espressione Implicanti primi Sostituzioni In comune


z1 ȳ2 ȳ1 y2 (2°) **
z1 ȳ2 y1 ȳ0 y1 y0 (3°) ***
z2 ȳ2 y1 y0 (4°)
z3 y2 (2°) **
y2n+1 y2 ȳ1 (5°)
y2n+1 y1 y0 (3°) ***
y1n+1 ȳ1 y0 (6°)
y1n+1 ȳ2 y1 ȳ0 (1°) *
y0n+1 ȳ1 ȳ0 (7°)
y0n+1 ȳ2 ȳ0 ȳ2 y1 ȳ0 (1°) *

Tabella 2.17: [Esercizio 2.o] Implicanti primi e riduzione del numero (soluzione)

70 2 - Reti combinatorie
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

Figura 2.38: [Esercizio 2.o] Realizzazione degli implicanti all’interno della PLD (soluzione)

2.5 - Circuiti programmabili 71


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

72 2 - Reti combinatorie
CAPITOLO 3

Reti asincrone

Propongo di considerare questa


domanda: “Le macchine sono in grado di
pensare?”

A T

Sommario
L’obiettivo di questo capitolo è conoscere i latch, cioè le memorie binarie che conservano lo
stato di una rete. L’analisi dei problemi di cui soffrono queste strutture circuitali è il prologo
all’introduzione delle reti sequenziali sincrone. Il tema centrale del capitolo è la progettazione
di automi complessi, considerando vari aspetti tra cui quello determinante della codifica degli
stati per eliminare i problemi di corsa critica.

Si usa la rete asincrona per discriminare e ricordare l’ordine di modifica dei segnali binari in
ingresso. La macchina insegue il variare dell’ingresso, modificando la stabilità dello stato interno.
Lo schema di principio di una rete asincrona è in figura 3.1.

Figura 3.1: Rete asincrona

Un cambiamento sull’ingresso può avere qua ro differenti conseguenze:

• lasciare inalterati stato e uscita;

• modificare l’uscita;

• generare una transizione di stato;

• modificare sia l’uscita sia lo stato.


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Servono due condizioni per il buon funzionamento della macchina asincrona:

Definizione 3.1 (Funzionamento in modo fondamentale). Si può modificare l’ingresso solo quando
il circuito è stabile.

Definizione 3.2 (Adiacenza delle configurazioni d’ingresso). Simboli d’ingresso consecutivi diffe-
riscono (per codifica) di un solo bit.

3.1 Memorie binarie


Definizione 3.3 (Memoria binaria). Una memoria binaria è una rete asincrona capace di ricordare
il valore di un bit.

Lo schema di una memoria binaria è in figura 3.2.

Figura 3.2: Generica memoria binaria

Gli ingressi di una memoria di questo tipo sono studiati affinché si possa memorizzare un 1,
memorizzare uno 0, oppure mantenere in memoria il dato. Queste a ività sono possibili tramite i
comandi dell’alfabeto specifico della macchina. L’uscita è in grado di eme ere il dato memorizza-
to, sia in forma vera, sia in forma complementata. Una memoria binaria di questo tipo è chiamata
latch.

Nota 3.1.1 – Spesso le uscite sono multiple. Si tratta di una questione di convenienza che deriva dalla struttura interna. In
essa è previsto l’impiego della forma complementata. Il costruttore ritiene opportuno e conveniente metterla a disposizione
dell’utente, visto che essa è già presente. In questo modo gli risparmia l’uso di un NOT esterno, in caso di bisogno.

3.1.1 Latch SR
In figura 3.3(b) è rappresentato il latch Set-Reset (SR). Il circuito origina dalla retroazione di
una cascata di due NOR (figura 3.3(a)), considerando anche il ritardo complessivo 2τp , nel quale
vigono le espressioni:

Vu = V3 ↓ (V1 ↓ V2 )
V1 (t + 2τp ) = Vu (t)

Si definiscono due bit che rappresentano lo stato della macchina:


• q è il bit dello stato presente;
• Q è il bit dello stato futuro.
Si associano le variabili Vi a nuove grandezze:
• Vu = Q (stato futuro, prima della memoria: quello calcolato dalla rete combinatoria)
• V1 = q (stato presente, mantenuto dalla retroazione)
• V2 = S (funzione di Set)
• V3 = R (funzione di Reset)

74 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Allora si può riscrivere la funzione di stato della macchina:

Vu = V3 ↓ (V1 ↓ V2 )
Q = R ↓ (q ↓ S)
= R + (q + S)
= R̄ · (q + S)

Quella o enuta è l’espressione PS del latch SR.

(a) Retroazione di NOR in cascata (b) Schema funzionale

Figura 3.3: Latch SR

(a) Iniziale (b) Sintetica


Prima Dopo
Set (S) Reset (R) Qn Q n +1 Descrizione S R Q n +1
0 0 Qn
0 0 0 0 Mantiene lo stato
0 1 0
0 0 1 1
1 0 1
0 1 0 0 Se a a 0 1 1 X (vietata)
0 1 1 0
1 0 0 1 Se a a 1
1 0 1 1
1 1 0 X (indesiderato)
1 1 1 X

Tabella 3.1: Tabella di verità del latch SR

Dalla tabella di verità 3.0(b) si può notare che sono sufficienti due stati per avere un simile
comportamento: Q = 0 e Q = 1.

• quando S = R = 0, si resta nello stato corrente;

• quando S = 1, si va nello stato Q = 1 e ci si resta finché non arriva un comando R = 1;

• quando R = 1, si va nello stato Q = 0 e ci si resta finché non arriva un comando S = 1.

Dalla mappa di Karnaugh (figura 3.4(b)) che deriva dalla tabella di verità si ricava il circuito in
figura 3.4(c) e l’espressione SP:
Qn+1 = S + R̄Qn

Si può passare ai circuiti a soli NAND (che però ha ingressi a ivi bassi) oppure a soli NOR, con
semplici manipolazioni algebriche.
Per evitare situazioni indesiderate durante il transitorio, bisogna assicurarsi che i comandi
durino un tempo τw ≥ 2τp .

3.1 - Memorie binarie 75


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Grafo degli stati (b) Mappa di Karnaugh (c) Stru ura interna

(d) Stru ura interna a soli (e) Stru ura interna a soli
NOR (ingressi a ivi alti) NAND (ingressi a ivi bassi)

Figura 3.4: Sintesi del latch SR

3.1.2 Latch CD
In figura 3.5(a) è rappresentato il latch Controller-Data (CD). Col comando C (Controller) è pos-
sibile mantenere il dato in memoria (C = 0) oppure scrivere ciò che è presente su D (C = 1). Il
valore del comando D (Data) è quello da scrivere in memoria, quando ordinato da C.
Si può o enere un latch CD a partire da un SR, utilizzando la trascodifica in tabella 3.2 e lo
schema in figura 3.5(b).

C D S R
0 X 0 0
1 0 0 1
1 1 1 0

Tabella 3.2: Tabella di trascodifica dal latch CD al latch SR

Per eliminare a priori l’alea statica, pericolosa nelle reti asincrone, si utilizza una espressio-
ne ridondante. La stessa espressione può essere implementata in un circuito a soli NAND o a soli
NOR (figure 3.5(c) e 3.5(d)).

Q = CD + C̄q (espressione SP)


= (C + q)(C̄ + D ) (espressione PS)
= CD + C̄q + Dq (espressione SP anti-alea)
= (C + q)(C̄ + D )( D + q) (espressione PS anti-alea)
( )
= (C ↑ D ) ↑ (C ↑ D̄ ) ↑ q (espressione SP anti-alea a NAND)
( )
= (C̄ ↓ D ) ↓ (C̄ ↓ D̄ ) ↓ q (espressione PS anti-alea a NOR)

Il transitorio è maggiore del latch SR per la maggiore lunghezza di percorsi interni. Il bit in memoria
sarà disponibile una volta che è trascorso il tempo di hold (figura 3.5(e)). Se D cambia valore
mentre C = 1 e il tempo di campionamento è maggiore del tempo minimo di campionamento,
questo valore è riprodo o in uscita (uscite trasparenti). Per questo motivo, il latch CD non deve

76 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Schema funzionale (b) Stru ura interna basata su latch SR

> set-up

set-up hold

(c) Stru ura interna a soli (d) Stru ura interna a soli NOR (e) Tempi di setup e hold
NAND

Figura 3.5: Latch CD

mai essere usato da solo sulla retroazione di una rete sincrona, perché rischia di memorizzare un
valore errato se si verifica il malfunzionamento descri o. Al contrario, è o imo per la costruzione
di buffer e RAM.

3.2 Eliminazione delle corse critiche e codifica degli stati


Definizione 3.4 (Corsa critica). Se una codifica pretende che sia raggiunta la stabilità quando più
segnali cambiano allo stesso istante, allora si ha corsa critica.

La codifica degli stati non è arbitraria quando un’automa ha più di due stati, perché contribui-
sce a eliminare le corse critiche.
Esiste una soluzione al problema.

Teorema 22 (di eliminazione delle corse critiche). In tu e le colonne in cui sono previste più condi-
zioni di stabilità, le codifiche degli stati coinvolti in transizione devono differire per un solo bit.

Questo significa che i simboli di stato presente e di stato futuro devono avere un solo bit che
cambia durante la transizione.

3.2.1 Creazione di una codifica anti-corsa critica


La tabella di flusso è uno strumento potente per creare una codifica che eviti le situazioni di
corsa critica. Infa i, si hanno corse non critiche in tu e le colonne che hanno una sola situazione
di stabilità. Bisogna ricordare che nella tabella di flusso le righe di stabilità sono quelle che hanno
la cella interna uguale all’intestazione di riga, cioè lo stato di arrivo dovuto agli ingressi è identico
allo stato di partenza (in rosso in figura 3.6(a)).

Definizione 3.5 (Transizione multipla). Una transizione multipla è una sequenza di più stati insta-
bili, al termine della quale l’automa si posiziona in uno stato stabile.

3.2 - Eliminazione delle corse critiche e codifica degli stati 77


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Vediamo ora il procedimento da seguire per o enere una codifica priva di corse critiche.

1. Analisi delle adiacenze. Si considerano, nella tabella di flusso, solo le colonne con più con-
dizione di stabilità. Si traccia un grafo delle adiacenze, conne endo gli stati agli stati futuri
con rami non orientati.

2. Mappatura con codice. Si costruisce una mappa col numero minimo di variabili di stato
necessarie. Si sovrappone il grafo alla mappa. Se ogni ramo collega due celle adiacenti, la
codifica non ha corse critiche. Nel caso ci siano alcuni stati non codificabili in modo adia-
cente, si cerca un terzo stato adiacente a entrambi e che effe ui il collegamento: se si trova,
si corregge la tabella in modo opportuno. Spesso si riesce a trovare un posizionamento sen-
za corsa critica solo muovendo in maniera ”elastica” il grafo degli stati, perché si ada i nel
modo migliore alla mappa.

3. Modifica della tabella di flusso. Se non si riesce a o enere le adiacenze con gli stati dispo-
nibili, si possono aggiungere transizioni multiple alla tabella di flusso. Il passo successivo è
verificare di nuovo sulla mappa se tu i gli stati sono adiacenti tra loro.

4. Scelta di un codice ridondante. Se non si riesce a o enere una codifica soddisfacente col
numero minimo di variabili di stati, bisogna aumentare il numero di variabili (codice ridon-
dante) e ripetere i passaggi precedenti con l’aiuto di transizioni multiple.

Se una tabella di flusso ha condizioni di indifferenza, si può sostituire una o più di queste con-
dizioni con uno stato opportuno a piacimento per o enere la transizione multipla. Questa pos-
sibilità è ampliata quando si usa un codice ridondante, perché esso offre tante celle con condi-
zioni di indifferenza che possono essere sfru ate per impostare transizioni che rendano facile la
sovrapposizione del grafo alla mappa di codifica.

Primo esempio: scambio di codifica tra stati esistenti.

1. La situazione degli stati è nella tabella di flusso di figura 3.6(a): in rosso sono evidenziate le
stabilità.
La colonna I1 ha una sola stabilità (00 → 00): questo evita la corsa critica quando lo stato è
11 e si deve andare in 00, perché tu i gli stati vanno in 00 e quindi non è importante l’ordine
con cui cambiano i bit in ingresso, perché si raggiunge sempre la stabilità.
La colonna I3 ha tre stati stabili. Questo rende critico il transito dallo stato 01 allo stato 10
(cambiano entrambi i bit di stato allo stesso momento): lo stato finale stabile dipende da
quale bit di stato cambia per primo. Se la sequenza fosse 01 → 00 → 10, lo stato finale
sarebbe 00; se fosse invece 01 → 11 → 10, lo stato finale sarebbe 11. In entrambi i casi lo
stato finale non è quello previsto dalla tabella di flusso. Questa situazione è molto grave.
Per risolvere la situazione bisogna cambiare la codifica degli stati, così da evitare che si debba
avere la transizione di stato con cambio simultaneo di più di un bit. Per farlo, si dispongono
gli stati in collegamento in un grafo come quello di figura 3.6(b).

2. Il grafo ha un numero di stati che è potenza di due e ha connessioni semplici, quindi si


sovrappone in modo facile a una mappa 2 × 2 (figura 3.6(c)). Questa operazione è sufficiente
ad avere una nuova codifica degli stati che li rende tu i adiacenti (lo stato 2 passa da 10 a
11; lo stato 3 passa da 11 a 10).

3. La nuova tabella di flusso aggiornata conferma che gli stati sono adiacenti: la colonna I3 ha
una sola condizione di stabilità, quindi la corsa critica è rimossa; la colonna I2 ha ancora due
condizioni di stabilità, ma cambia un solo bit da uno stato al successivo in ogni caso per cui
sono state rimosse tu e le corse critiche (figura 3.6(d)).

78 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Tabella di flusso iniziale (b) Grafo delle (c) Mappa per determi- (d) Tabella di flusso corre a
adiacenze nare la nuova codifica

Figura 3.6: Nuova codifica degli stati per eliminare la corsa critica

Secondo esempio: inserimento di transizione multipla.


1. La situazione degli stati è nella tabella di flusso di figura 3.7(a): in rosso sono evidenziate le
stabilità. Il grafo che ne deriva è in figura 3.6(b).

2. È inutile sovrapporre il grafo a una mappa, perché non si o erranno mai le adiacenze richie-
ste (per esempio, lo stato B deve essere adiacente a tre stati nel grafo, mentre la mappa 2 × 2
ha solo coppie di celle adiacenti).
3. Si può modificare una transizione per avere transizioni multiple. La transizione B → C è
richiesta solo nella colonna I3 , dove c’è già una transizione verso C (A → C): se si trasforma
B → C in B → A → C, allora lo stato B non deve più essere adiacente a tre stati, ma solo a
due. La nuova tabella di flusso in figura 3.7(c) conferma che gli stati sono ancora adiacenti
e non servono bit aggiuntivi. Il nuovo grafo 3.7(d) si sovrappone senza fatica a una mappa
2 × 2 con la quale o enere una codifica che eviti le corse critiche (una delle possibilità è
A = 00, B = 01, C = 11, D = 10).

(a) Tabella di flusso ini- (b) Grafo delle (c) Tabella di flusso con transi- (d) Grafo del-
ziale adiacenze zione multipla le adiacenze
con transizione
multipla

Figura 3.7: Codifica degli stati con transizione multipla

3.3 Procedimento di analisi delle reti asincrone


1. Individuare le variabili di stato. Si tagliano le retroazioni: i segnali a monte del taglio sono
di stato futuro (le uscite del blocco combinatorio, da indicare con le era maiuscola), quelli a
valle sono di stato presente (le era minuscola).
2. Analizzare la rete combinatoria di uscita e la rete combinatoria di aggiornamento dello
stato interno. Si scrivono le espressioni delle variabili di uscita e di quelle di stato futuro
(eventualmente in forma normale).

3.3 - Procedimento di analisi delle reti asincrone 79


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
3. Individuare la tabella delle transizioni. Si crea una tabella di Karnaugh, con le configura-
zioni d’ingresso e di stato; si tracciano i RR dei termini trovati in precedenza; si verifica se la
copertura previene l’alea statica.

4. Studiare le condizioni di stabilità. Si indicano (con un cerchie o) le caselle che indicano una
stabilità della rete: in esse, lo stato futuro è uguale allo stato presente della riga. Si verifica
che ogni colonna abbia la possibilità di raggiungere la stabilità e che la codifica non abbia
corse critiche.

5. Individuare la tabella di flusso e il grafo degli stati. A ogni configurazione di stato (in
tabella delle transizioni) si associa una le era. O enuta la tabella di flusso, si eliminano le
transizioni multiple1 e gli stati (righe) che non hanno condizioni di stabilità. Una riga può
essere eliminata se ha incroci identici ad un’altra (sono stati ridondanti).

6. Stati. Gli stati di un circuito con k retroazioni sono sempre 2k . L’automa può, però, averne un
numero inferiore. Per eliminare uno stato è sufficiente renderlo instabile per ogni ingresso,
così che sia inessenziale.

3.4 Procedimento di sintesi delle reti asincrone


Il procedimento di sintesi ricalca quello di analisi, effe uato al contrario; bisogna però tenere
conto di alcuni accorgimenti.
1. Individuare il grafo degli stati. Per tracciare il grafo bisogna imporre la stabilità di ogni
stato, rispe o alla configurazione d’ingresso con cui lo si raggiunge. Quindi bisogna evitare
transizioni multiple. Bisogna ricordare che il transitorio è breve, quindi la configurazione di
uscita (sui rami) deve essere una condizione di indifferenza se il segnale di uscita varia da
uno stato al successivo. Le mappe successive decideranno quale valore è più conveniente,
durante il transitorio.
2. Definire la tabella di flusso.

3. Codificare gli stati, definire la tabella delle transizioni. Per eliminare le corse critiche, la
codifica stati va o enuta dal grafo delle adiacenze, sovrapposto ad una mappa col minimo
numero di variabili di stato. Se non c’è adiacenza tra ogni possibile coppia (stato presente,
stato futuro) si utilizza un metodo a scelta:

• si introducono transizioni multiple;


• si aumenta il numero di bit di codifica.
4. Sintesi della parte combinatoria. Per eliminare l’alea statica, la copertura di 1 (o 0) deve
prevedere che ogni coppia di 1 (0) adiacenti sia racchiusa in un RR di dimensioni massime.
5. Disegnare lo schema logico. Termini uguali devono essere generati dallo stesso gate. Se si
devono elaborare variabili di stato e loro complementi, invece di usare NOT e aggiungere
retroazioni si possono usare latch SR sui rami in retroazione.

1 Negli incroci instabili si annota lo stadio finale, stabile, che sarà raggiunto.

80 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 3.a

Una rete sequenziale asincrona è caratterizzata da due segnali di ingresso X1 e X2, che non cambiano
mai contemporaneamente, e da un segnale di uscita Z. Quando X1 è disattivo (X1=0), Z deve assumere
valore 0. Quando X1 è attivo, Z deve assumere l’ultimo valore presentato da X2 nel precedente intervallo
di attivazione di X1.
Si completi il grafo primitivo degli stati, secondo il modello di Moore (figura 3.8(b)).
Si determini una codifica degli stati che garantisca l’adiacenza delle configurazioni associate ad ogni coppia
(stato presente, stato futuro). Si tracci la tabella delle transizioni secondo il modello di Mealy.
Si identifichi l’espressione minima SP per la variabile di stato Y1, evitando a priori il pericolo di alee statiche.

(a) Forme d’onda (b) Diagramma di Moore degli stati

Figura 3.8: [Esercizio 3.a] Esempio di funzionamento

Il modello di Moore per il grafo degli stati prevede che ad ogni stato sia associato un simbolo di uscita. Per il
caso attuale, poiché è fornito l’inizio del grafo, possiamo attuare alcune strategie per cominciare a risolverlo:
ad esempio, dove sono presenti delle stabilità, poiché sappiamo che ogni stato deve essere stabile, allora ci
sarà una freccia in ingresso con gli stessi dati (ingressi della macchina) indicati sulla stabilità (quale sia lo
stato dal quale si proviene è da trovare, analizzando il funzionamento). In generale possono essere utilizzate
diversi metodi, e ognuno deve trovare quello preferito o più efficace. Anche un semplice studio, caso per
caso, del circuito porta a buoni risultati, pur risultando lungo come tempi di risoluzione. Il risultato deve
essere quello in figura 3.9(a).
Per trovare la codifica, dopo aver costruito una mappa con 23 = 8 variabili (8 caselle), le si sovrappone il
diagramma degli stati tracciando le frecce come indicate in esso. La disposizione del diagramma precedente,
pur se poco leggibile, è studiata apposta per una facile sovrapposizione. Il risultato della codifica è in figura
3.9(c). La tabella delle transizioni, invece, deve avere 8 righe e 22 = 4 colonne (2 ingressi X1 e X2); le sue
caselle vanno riempite, con pazienza certosina, leggendo il grafo di Moore e trascrivendo i dati di partenza
e arrivo da stato a stato, al variare di X1 e X2. Durante questo meccanismo bisogna ricordare di annotare,
nelle caselle, l’uscita dello stato in cui ci si trova, perché la tabella va secondo la convenzione di Mealy. La
soluzione è in figura 3.9(b).
Per trovare l’espressione SP di Y1 bisogna trasportare i valori di Y1 (in tabella transizioni) su una opportuna
mappa di Karnaugh. La mappa dovrà avere come variabili i due ingressi e le tre variabili y1 , y2 , y3 . Poiché si
tratta di cinque variabili, si utilizzeranno due mappe da quattro variabili, tenendo esterna una variabile da
considerare con valore 0 per una mappa e 1 per l’altra. Trascrivendo i valori (si tratta di vedere, casella per
casella, quanto vale Y1 in tabella transizioni: c’è anche una certa similitudine di posizionamento) si ottiene
la mappa di figura 3.9(d), dalla quale si estrapola l’espressione:

Y1 = y2 X1 X2 + y1 y2 + y1 X2 + y1 X1

3.4 - Procedimento di sintesi delle reti asincrone 81


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Diagramma di Moore degli stati (b) Tabella delle transizioni

(c) Mappa di codifica (d) Mappa di Karnaugh anti-alea

Figura 3.9: [Esercizio 3.a] Codifica degli stati e transizioni (soluzioni)

82 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 3.b

Una rete sequenziale asincrona ha due ingressi x, y ed una uscita z. Gli ingressi non cambiano mai di valore
contemporaneamente e non presentano mai entrambi il valore 1. L’uscita può cambiare di valore solo in
corrispondenza dei fronti di salita di x. Il valore che z deve assumere e mantenere costante fino al fronte
successivo è 0 se l’uscita y non ha modificato il suo valore durante il precedente intervallo x = 0, altrimenti
è 1 nel caso opposto.
1. Individuare la forma d’onda del segnale d’uscita z in corrispondenza delle forme d’onda dei segnali
di ingresso x, y indicate in figura 3.10(a).
2. Completare il grafo primitivo degli stati (ogni stato deve essere stabile per una sola configurazione
d’ingresso).
3. Tracciare la tabella di flusso.
4. Individuare una codifica appropriata degli stati interni.
5. Individuare le espressioni SP delle variabili di stato futuro, eliminando a priori alee statiche nella
realizzazione.

(a) Forme d’onda dei segnali in ingresso (b) Grafo primitivo da completare

Figura 3.10: [Esercizio 3.b] Rete sequenziale asincrona

1. La forma d’onda del segnale d’uscita z è in figura 3.11(a). Sotto a z sono indicati gli stati corrispondenti
dell’automa da realizzare. Si può costruire una simile sequenza di stati seguendo le forme d’onda e
costruendo il grafo per casistica.
2. Il grafo primitivo è in figura 3.11(b). Su di esso sono evidenziati in rosso i fronti di salita di x
(x = 0 → 1). Nel grafo si distingono alcuni stati importanti: A e F sono gli stati in cui ci si dirige
quando x = 1; B, C, D rilevano la variazione di y quando z = 0; F, G, H rilevano la variazione di y
quando z = 1. Inoltre, F verifica che y = 0 sia costante tra due fronti di salita di x.
3. La tabella di flusso è in figura 3.11(b). In rosso sono cerchiate le stabilità. Si nota che le tre colonne
hanno tutte stabilità multiple, quindi bisogna codificare gli stati seguendo la procedura contro le corse
critiche, che qui potrebbero essere presenti.
4. Per trovare la codifica degli stati, si traccia il grafo delle adiacenze sulla base della tabella di flusso.
Il grafo 3.11(c) non aiuta a trovare una codifica corretta: gli stati A e F non sono adiacenti. Se si
riposizionano gli stati, mantenendo i collegamenti, si possono trovare altre codifiche. Una codifica
possibile è in figura 3.11(d): come si vede, la nuova posizione è ben sovrapponibile a una mappa
2 × 4. Un’altra codifica possibile è in figura 3.11(e). Quest’ultima codifica è scelta per compilare la
tabella delle transizioni.
5. Le espressioni SP degli stati futuri si ricavano dalle k-mappe di A = an+1 , B = bn+1 e C = cn+1
(figura 3.11(g)), che si ottengono riempiendo le mappe con i valori della tabella delle transizioni
(figura 3.11(f)). Per avere le espressioni anti-alea, si effettua la copertura totale degli 1 senza eliminare

3.4 - Procedimento di sintesi delle reti asincrone 83


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
i termini ridondanti:

an+1 = a x̄ + bx + ab
bn+1 = āb + āy + bx + acȳ + bcȳ
cn+1 = āb̄ x̄ + y + ac x̄ + b̄c x̄

84 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Forme d’onda dei segnali in ingresso e uscita

(b) Grafo degli stati e tabella di flusso (c) Grafo delle adiacenze non corret-
to

(d) Grafo delle adiacenze cor- (e) Codifica alternativa degli (f) Tabella delle transizioni
re o stati

(g) Espressioni SP delle variabili di stato future

Figura 3.11: [Esercizio 3.b] Grafo, tabella e codifica degli stati (soluzioni)

3.4 - Procedimento di sintesi delle reti asincrone 85


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 3.c

Bisogna realizzare un simulatore di guida dotato di due ingressi f , c e di una uscita z:


• f è il pedale della frizione (1 premuto, 0 rilasciato);
• c è la leva del cambio (1 marcia inserita, 0 folle);
• z è il comando di un segnalatore acustico (1 rumore di grattata, 0 nessun suono).
Si può modificare un solo ingresso alla volta. Il rumore della grattata deve essere generato:
1. quando si inserisce una marcia con la frizione non premuta, fino a quando non venga dapprima
disinserita la marcia con frizione premuta e poi rilasciata la frizione;
2. quando si disinserisce una marcia con la frizione non premuta, fino a quando non venga dapprima
inserita la marcia con frizione premuta e poi rilasciata la frizione.
Indicare la forma d’onda del segnale d’uscita z in corrispondenza delle forme d’onda dei segnali di ingresso
f , c mostrate in figura 3.12(a).
Completare il grafo degli stati in figura 3.12(b), mantenendo la proprietà che il primo stato di allarme sia
stabile per una sola configurazione.
Riempire la tabella di flusso, individuare una corretta codifica degli stati e riempire la tabella delle transizioni.
Riempire le mappe della variabile di stato futuro Y1 = G (y1 , y2 , y3 , f , c) e della variabile d’uscita z =
F (y1 , y2 , y3 , f , c) sul modello di figura 3.12(f) e individuare le migliori espressioni SP che le descrivono.

Il grafo dell’automa è completato in figura 3.12(c). È importante notare che non si può compilare una
tabella di verità delle variabili, perché l’uscita dipende dagli stati precedenti, quindi il grafo è l’unico modo
per interpretare il funzionamento della macchina in modo accettabile. Nel grafo si distinguono i seguenti
cicli di funzionamento:
• stati A → E → A: funzionamento normale (frizione premuta, inserimento/disinserimento marcia,
frizione rilasciata);
• stati A → B ↔ C ↔ D → A: grattata per inserimento della marcia senza frizione;
• stati E → F ↔ G ↔ H → E: grattata per disinserimento della marcia senza frizione.
Dopo il grafo si può compilare la tabella di flusso e la tabella delle transizioni in figura 3.12(d). Alcuni stati
non accettano configurazioni d’ingresso, per il fatto che le variabili non possono essere modificate entrambe
nello stesso istante.
La codifica degli stati è facilitata dal fatto che gli stati sono adiacenti in maniera circolare. Tutte le colonne
hanno stabilità multiple, quindi tutte contribuiscono al grafo delle adiacenze (figura 3.12(e)).
Le mappe di Y1 e z sono in figure 3.12(g) e 3.12(h). Si ricavano le seguenti espressioni:

Y1 = y1 f¯ + y1 c + y1 y3 + y1 y2 + ȳ2 ȳ3 f c
z = y2 + y3

86 3 - Reti asincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Forme d’onda dei segnali (soluzione) (b) Grafo degli stati da completare

(c) Grafo degli stati (soluzione) (d) Tabella di flusso, codifica degli stati e tabella delle
transizioni (soluzione)

(e) Grafo delle adiacenze per codifi- (f) Mappe di Karnaugh da completare
ca degli stati (soluzione)

(g) Mappa di Karnaugh dello stato futuro Y1 (soluzio- (h) Mappa di Karnaugh dell’uscita z (soluzione)
ne)

Figura 3.12: [Esercizio 3.c] Testi e soluzioni

3.4 - Procedimento di sintesi delle reti asincrone 87


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

88 3 - Reti asincrone
CAPITOLO 4

Reti sincrone

Riesce in tu o chi si dà da fare


mentre aspe a.

T A E

Sommario
Il capitolo propone i flip-flop come evoluzione dei latch, controllati dal clock per eliminare il
problema della corsa critica. La progettazione delle retroazioni basate sui vari tipi di flip-flop è
il punto centrale per sviluppare automi robusti. Al termine del capitolo si affrontano i contatori
e i registri, cioè i dispositivi sincroni che permettono operazioni evolute grazie alla gestione
tramite comandi impostabili dall’utente.

Una rete sincrona è basata su una rete combinatoria, le cui retroazioni hanno un ritardo co-
stante T0 . Questo significa che, modificando un parametro per cambiare stato, il nuovo stato è
disponibile dopo un tempo T0 .
Tu o ciò comporta che si deve considerare il tempo nelle dinamiche della rete, perché essa
diventa legata alla durata dei simboli di ingresso e di uscita. I simboli di ingresso si modificano
solo agli istanti di sincronismo; lo stesso avviene, di conseguenza, per i simboli di uscita e per lo
stato.

Definizione 4.1 (Clock). Il clock è un segnale periodico, di solito a onda quadra, che assume valori
0 e 1 in modo alternato.

L’uso del clock per scandire i tempi nei circuiti sincroni è la grande differenza con le mac-
chine asincrone. Si fa riferimento ai parametri temporali riportati in tabella 4.1 per determina-
re le cara eristiche del clock. Il funzionamento della macchina sincrona è scandito dai seguenti
passaggi:
• prima di t − τSU − τRC − τR deve arrivare il comando di scri ura dei flip-flop;
• a t − τSU − τRC gli ingressi della rete combinatoria devono essere a regime;
• a t − τSU il blocco combinatorio che calcola lo stato futuro deve avere finito i calcoli.
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Sulla base di questi tempi sequenziali, si o iene la frequenza massima del clock (figura 4.1):

T0 > τR + τRC + τSU

Figura 4.1: Valutazione del periodo di clock rispe o ai ritardi della rete sequenziale

t istante di tempo del fronte del clock


τSU tempo minimo di set-up dei flip-flop
τH tempo minimo di hold dei flip-flop
τRC tempo massimo di risposta della rete combinatoria
τR tempo massimo di risposta dei flip-flop

Tabella 4.1: Parametri del clock della macchina sincrona

Una volta calcolato T0 si notano dei consistenti vantaggi di proge o. L’alea si manifesta solo a
inizio intervallo, quindi i suoi effe i terminano prima dell’istante di campionamento. Per questo
motivo:
• si possono ricercare e utilizzare solo espressioni minime;
• non serve adiacenza degli stati, perché il clock elimina il problema delle corse critiche: quindi
la codifica può essere arbitraria.

4.1 Flip-flop
Definizione 4.2 . Un flip-flop è una rete sequenziale la cui uscita a uale Qn dipende sia dal valore
istantaneo degli ingressi, sia dall’uscita precedente Qn−1 .

Sono tre i tipi di flip-flop che possono essere utilizzati nelle applicazioni logiche. I comandi
pilotabili sono i seguenti:
• hold: conservazione dello stato e dell’uscita precedenti;
• set: impostazione dell’uscita a 1;
• reset: impostazione dell’uscita a 0;
• toggle: impostazione dell’uscita al valore complementare.

Flip-flop D (edge-triggered). Il flip-flop D è un latch CD nel quale l’ingresso C è comandato dal


clock, in corrispondenza dei cui fronti di salita si campiona D e si modifica lo stato interno. La sua
tabella di verità 4.1(a) deriva dire amente dal comportamento del latch CD.
Il grafo minimo degli stati è in figura 4.2(d). Non servirebbe, ma conviene aggiungere due stati
(E e F) per compiere due transizioni multiple quando i campionamenti causano una variazione
dell’uscita (figura 4.2(e)).

90 4 - Reti sincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
n
Flip-flop JK. Ha equazione cara eristica Qn+1 = ( J Q̄ + K̄Q) . La sua tabella di verità è in tabel-
la 4.1(b).

Flip-flop T. Ha equazione cara eristica Qn+1 = ( T ⊕ Q)n . La sua tabella di verità è in tabel-
la 4.1(c).

(a) Flip-flop D (b) Flip-flop JK (c) Flip-flop T


C D Q n +1 J K Q n +1 T Q n +1
0 0 Qn (hold) 0 0 Qn (hold) 0 Qn (hold)
0 1 Qn (hold) 0 1 0 (reset) 1 Q̄n (toggle)
1 0 0 (reset) 1 0 1 (set)
1 1 1 (set) 1 1 Q̄n (toggle)

Tabella 4.2: Tabelle di verità dei flip-flop

Si può realizzare il flip-flop D utilizzando un flip-flop JK e collegando un NOT tra i due ingressi,
in modo che siano sempre di valore diverso (figura 4.2(g))
Si può sintetizzare il flip-flop D a NAND. La stru ura è composta da 6 NAND: 4 per campionare,
2 per memorizzare. Dalla figura 4.2(j) si nota che la stru ura è composta da tre latch SR.
I tempi cara eristici del funzionamento dei flip-flop durante il transitorio sono in figura 4.2(k).
Questi tempi sono definiti per tu e le tipologie di flip-flop.

Definizione 4.3 (Tempo di setup). Tempo precedente al fronte del clock, durante il quale il segnale
D deve restare costante.

Definizione 4.4 (Tempo di hold). Tempo successivo al fronte del clock, durante il quale il segnale
D deve restare costante.

Definizione 4.5 (Tempo di risposta). Tempo successivo al fronte del clock, necessario alla macchina
per calcolare e a ribuire i valori ai segnali d’uscita.

4.2 Procedimento di analisi delle reti sincrone


Il procedimento di analisi ricalca, piu osto da vicino, quello affrontato per le reti asincrone
(sezione 3.3), con le leggere differenze de ate dovute alle diverse archite ure.

1. Individuare le espressioni dei segnali in ingresso ai flip-flop.


2. Individuare le espressioni di stato futuro e di uscita.

3. Individuare la tabella delle transizioni.


4. Dedurre la tabella di flusso.

5. Dedurre il grafo degli stati.

4.2 - Procedimento di analisi delle reti sincrone 91


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Flip-flop D (b) Flip-flop JK (c) Flip-flop T

(d) Grafo degli stati del flip- (e) Grafo degli stati del flip-flop D con (f) Grafo degli stati del flip-
flop D transizioni multiple flop T

(g) Flip-flop D basato su flip-flop JK (h) Flip-flop T basato su flip- (i) Flip-flop T basato su flip-
flop D flop JK

(j) Realizzazione del flip-flop D con (k) Tempi del transitorio


latch SR a NAND

Figura 4.2: Flip-flop D

92 4 - Reti sincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 4.a

Individuare le espressioni che descrivono il comportamento della rete sequenziale sincrona di figura 4.3(a).
Dalle espressioni ricavate, dedurre la tabella delle transizioni.
Dedurre dalla precedente tabella il grafo degli stati.
Individuare quali stati sono tra loro indistinguibili e quanti stati ha l’automa minimo.
Tracciare la forma d’onda del segnale d’uscita in corrispondenza della sequenza d’ingresso indicata in
figura 4.3(b) e completare la descrizione a parole della relazione ingresso/uscita: ”L’uscita z assume il
valore 1 quando l’ingresso x …e lo mantiene fino a quando …”.

(a) Circuito da analizzare

(b) Forma d’onda del segnale d’ingresso x

Figura 4.3: [Esercizio 4.a] Rete sequenziale sincrona

L’espressione SP che descrive la rete in figura 4.4 è la seguente, calcolata all’istante n (non importa la
sequenzialità):
( )
z = ( x · Q1 · Q2 ) · Q3 · ( Q̄2 · Q̄1 · x · x )

= x · Q1 · Q2 + Q3 · ( Q̄2 · Q̄1 · x̄ )
= x · Q1 · Q2 + Q3 · ( Q̄2 · Q̄1 · x̄ )
( )
= x · Q1 · Q2 + Q3 · Q̄¯ 2 + Q̄¯ 1 + x̄¯
= x · Q1 · Q2 + Q3 · ( Q2 + Q1 + x )
zn = ( xQ1 Q2 + xQ3 + Q1 Q3 + Q2 Q3 )n

La tabella delle transizioni deve contenere il valore degli stati futuri dei flip-flop (Qin+1 ) in relazione agli stati
presenti (Qin ) e all’uscita generale presente (zn ). Visto che la rete è sequenziale, si determina la relazione
tra le uscite future dei flip-flop e gli altri segnali nello stato presente:

Q1n+1 = x n
Q2n+1 = Q1n
Q3n+1 = zn

Queste relazioni permettono di compilare la tabella delle transizioni 4.3, perché le colonne degli stati futuri
sono identici ad altre colonne di stati presenti. zn deve essere calcolato sulla base dei Qin e di x n , per tutte

4.2 - Procedimento di analisi delle reti sincrone 93


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
le combinazioni.
Per ottenere il grafo degli stati si può usare questo metodo:
• si associa uno stato a ogni combinazione delle uscite dei flip-flop (in questo caso, otto stati);
• da ogni stato devono uscire due transizioni, perché sono due le possibilità di ingresso (x n = 0 e
(x n = 1);
• per ogni stato si controlla la riga corrispondente sulle tabelle delle transizioni 4.3, per capire qual è lo
stato successivo e l’uscita zn corrispondente;
• si può riscrivere la tabella delle transizioni assegnando un nome agli stati, si ottiene così la tabella di
flusso 4.4; la tabella di flusso sintetica è la 4.4(a);
• si disegnano gli stati e i collegamenti (figura 4.5(a)).
L’automa minimo è quello che non ha righe uguali nella tabella di flusso. In tabella 4.4(a) sono stati indicati
gli stati indistinguibili, cioè le righe uguali (a coppie) che possono essere accorpate in uno stato unico. Al
primo passaggio si definisce A=C e F=H, quindi si sostituiscono tutti gli stati C con A e tutti gli stati H
con F (tabella 4.4(b)). Al secondo passaggio si trova che B=G e dopo un’ultima sostituzione si ottiene la
tabella 4.6 con soli cinque stati, invece degli otto di partenza.
La forma d’onda del segnale di uscita è in figura 4.5(b).
La frase descrittiva può essere completata nel seguente modo: ”L’uscita z assume il valore 1 quando l’ingresso
x assume per la terza volta consecutiva il valore 1 e lo mantiene fino a quando non si verificano tre 0
consecutivi”.

Figura 4.4: [Esercizio 4.a] Rete sequenziale sincrona con annotazione dei segnali

xn = 0 xn = 1
Q1n Q2n Q3n Q1n+1 Q2n+1 Q3n+1 zn Q1n+1 Q2n+1 Q3n+1 zn
= xn = Q1n = zn = xn = Q1n = zn
0 0 0 0 0 0 0 1 0 0 0
0 0 1 0 0 0 0 1 0 1 1
0 1 0 0 0 0 0 1 0 0 0
0 1 1 0 0 1 1 1 0 1 1
1 0 0 0 1 0 0 1 1 0 0
1 0 1 0 1 1 1 1 1 1 1
1 1 0 0 1 0 0 1 1 1 1
1 1 1 0 1 1 1 1 1 1 1

Tabella 4.3: [Esercizio 4.a] Tabella delle transizioni (soluzione)

94 4 - Reti sincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
xn = 0 xn = 1
Stato Q1n Q2n Q3n Stato Q1n+1 Q2n+1 Q3n+1 zn Stato Q1n+1 Q2n+1 Q3n+1 zn
succ. = xn = Q1n = zn succ. = xn = Q1n = zn
A 0 0 0 A 0 0 0 0 E 1 0 0 0
B 0 0 1 A 0 0 0 0 F 1 0 1 1
C 0 1 0 A 0 0 0 0 E 1 0 0 0
D 0 1 1 B 0 0 1 1 F 1 0 1 1
E 1 0 0 C 0 1 0 0 G 1 1 0 0
F 1 0 1 D 0 1 1 1 H 1 1 1 1
G 1 1 0 C 0 1 0 0 H 1 1 1 1
H 1 1 1 D 0 1 1 1 H 1 1 1 1

Tabella 4.4: [Esercizio 4.a] Tabella di flusso (soluzione)

(a) Prima scrematura di stati indistinguibili (b) Seconda scrematura di stati indistinguibili
Stato Codifica x=0 x=1 Stati Stato Codifica x=0 x=1 Stati
indisting. indisting.
A 000 A,0 E,0 * A 000 A,0 E,0
B 001 A,0 F,1 B 001 A,0 F,1 ***
C 010 A,0 E,0 * D 011 B,1 F,1
D 011 B,1 F,1 E 100 A,0 G,0
E 100 C,0 G,0 F 101 D,1 F,1
F 101 D,1 H,1 ** G 110 A,0 F,1 ***
G 110 C,0 H,1
H 111 D,1 H,1 **

Tabella 4.5: [Esercizio 4.a] Tabella di flusso sintetica (soluzione)

(a) Grafo degli stati (b) Forma d’onda

Figura 4.5: [Esercizio 4.a] Grafo degli stati e forma d’onda (soluzione)

Stato Codifica x=0 x=1


A 000 A,0 E,0
B 001 A,0 F,1
D 011 B,1 F,1
E 100 A,0 B,0
F 101 D,1 F,1

Tabella 4.6: [Esercizio 4.a] Tabella di flusso dell’automa minimo, finale (soluzione)

4.2 - Procedimento di analisi delle reti sincrone 95


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
4.3 Procedimento di sintesi delle reti sincrone
Anche il procedimento di sintesi deriva da quello asincrono (sezione 3.4), portando con sé le
eccezioni dovute alle esigenze del proge ista.
1. Individuare il grafo degli stati. A differenza delle reti asincrone, non è indispensabile che
ogni stato sia stabile per l’ingresso che lo ha determinato.
2. Definire la tabella di flusso.
3. Codificare gli stati e definire la tabella delle transizioni. A causa della generalità degli stati
utilizzabili, anche instabili, il codice può essere qualsiasi e non ridondante. Infa i, la scelta
del clock con T0 > ∑ τ elimina a priori le corse critiche.
4. Scegliere i flip-flop. Dopo aver scelto il tipo di flip-flop, si calcolano gli altri dati come da
istruzioni.
5. Sintesi della parte combinatoria. La variabile di stato presente Qn corrisponde all’uscita Q.
Gli ingressi, invece, dipendono dal caso specifico.
6. Disegnare lo schema logico.

4.3.1 Sintesi con flip-flop


Si possono usare i flip-flop per retroazionare una rete combinatoria. La scelta di uno dei tre
tipi di flip-flop condiziona il proge o.
Supponiamo di codificare con le variabili y1 e y2 lo stato dell’automa e vediamo come si devono
impostare i diversi tipi di flip-flop. In tu i i casi si deve riempire la tabella delle transizioni con le
variabili di stato e poi fare la copertura minima delle k-mappe, visto che le alee non sono pericolose
nelle reti sincrone.

Sintesi con flip-flop D. All’ingresso D deve essere collegato alla realizzazione della variabile di
stato futuro (quindi y1n+1 , y2n+1 ). La copertura minima delle k-mappe per tu e le yin+1 dà subito le
espressioni di sintesi da implementare con una rete combinatoria.

Sintesi con flip-flop JK. Gli ingressi J e K non corrispondono a segnali di ingresso precisi, ma
alle transizioni che deve effe uare lo stato presente Qn verso lo stato futuro Qn+1 . Le transizioni
in tabella 4.7 corrispondono alla tabella di verità del flip-flop JK. La procedura complessiva è la
seguente:

1. si fanno le mappe per y1n+1 e y2n+1 ;


2. si segnano sulle mappe i valori che cambiano tra uno stato e il successivo;

3. si compila una mappa Ji per ogni stato Jin+1 (nel nostro caso due mappe J1n e J2n ), nella quale
si applicano le regole della tabella:
• le celle ”marcate” con valore 0 diventano –;
• le celle ”marcate” con valore 1 restano 1;
• le celle non marcate con valore 0 restano 0;
• le celle non marcate con valore 1 diventano –.
4. si compila una mappa Ki per ogni stato Kin+1 (nel nostro caso due mappe K1n e K2n ), nella
quale si applicano le regole della tabella:
• le celle ”marcate” con valore 0 diventano 1;

96 4 - Reti sincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
• le celle ”marcate” con valore 1 diventano –;
• le celle non marcate con valore 0 diventano –;
• le celle non marcate con valore 1 diventano 0.
5. si fa la copertura minima delle k-mappe Jin e Kin .

Sintesi con flip-flop T. L’ingresso T non corrisponde a un segnale di ingresso preciso, ma al-
le transizioni che deve effe uare lo stato presente Qn verso lo stato futuro Qn+1 . Le transizioni
in tabella 4.7 corrispondono alla tabella di verità del flip-flop T. La procedura complessiva è la
seguente, analoga a quella del flip-flop JKma semplificata:

1. si fanno le mappe per y1n+1 e y2n+1 ;


2. si segnano sulle mappe i valori che cambiano tra uno stato e il successivo;

3. si compila una mappa Ti per ogni stato Tin+1 (nel nostro caso due mappe T1n e T2n ), nella quale
si applicano le regole della tabella:
• le celle ”marcate” diventano 1;
• le celle non marcate diventano 0.
4. si fa la copertura minima delle k-mappe Tin .

Qn Q n +1 Jn Kn Tn
0 0 0 – 0
0 1 1 – 1
1 0 – 1 1
1 1 – 0 0

Tabella 4.7: Sintesi con flip-flop JK e T

Nel seguito, gli esercizi 4.b e 4.d affrontano il proge o della retroazione con tu e le tipologie
di flip-flop.

Esercizio 4.b

Una rete sequenziale sincrona ha il compito di riprodurre sulla sua uscita z il valore presente sul suo ingresso
x, con due intervalli di clock di ritardo, solo se il valore di x perdura per più di due intervalli. Se il valore
di x è presente solo per uno o per due intervalli, l’uscita z deve ignorarlo e mantenere il valore che avera
prima della variazione di x.
Determinare la forma d’onda di z sulla base di quella fornita di x.
Completare il grafo degli stati.
Tracciare la tabella di flusso, codificare gli stati e riempire la tabella delle transizioni.
Sintetizzare la variabile di stato y1 con flip-flop D, poi con flip-flop JK e infine con flip-flop T.

La forma d’onda di z rispetto a x è in figura 4.6(a). Già dalla forma d’onda si possono identificare gli stati
che deve attraversare la macchina per identificare la sequenza e cambiare stato all’uscita; l’indicazione degli
stati è riportata in blu sotto le forme d’onda.
Il grafo degli stati è in figura 4.6(b). La relativa tabella di flusso è in figura 4.7(a). Da questa tabella di
passa alla tabella delle transizioni sostituendo al nome degli stati il codice attribuito: poiché la macchina è

4.3 - Procedimento di sintesi delle reti sincrone 97


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
sincrona, la codifica può essere del tutto arbitraria. Per semplicità si è scelta una codifica progressiva a tre
bit, nella quale non sono usate le due configurazioni 110 e 111 perché gli stati da codificare sono solo sei.
La sintesi con flip-flop D della variabile di stato y1 si ottiene riempiendo la k-mappa 4.6(c) con i valori che
assume y1 nella tabella delle transizioni, quindi coprendo la k-mappa:

y1n+1 = y1 ȳ3 x̄ + y2 y3 x̄

La sintesi con flip-flop JKdella variabile di stato y1 si ottiene prendendo la k-mappa 4.6(c) e marcando i
valori che cambiano nelle transizioni di stato (annotati in giallo). Sulla base di questi valori e delle regole di
sintesi, si ottengono le mappe di J1 e K1 in figura 4.6(d) e le relative espressioni:

J1 = y2 y3 x̄
K1 = x + y 3

La sintesi con flip-flop D della variabile di stato y1 si ottiene prendendo la k-mappa 4.6(c) e marcando i
valori che cambiano nelle transizioni di stato (annotati in giallo). Sulla base di questi valori e delle regole di
sintesi, si ottiene la mappa di T1 in figura 4.6(e) e la relativa espressione:

T1 = y2 y3 x̄ + y1 x + y1 y3

(a) Forma d’onda (b) Grafo degli stati

(c) Sintesi con flip-flop D (d) Sintesi con flip-flop JK (e) Sintesi con flip-flop T

Figura 4.6: [Esercizio 4.b] Rete sequenziale sincrona (soluzione)

Esercizio 4.c

98 4 - Reti sincrone
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Tabella di flusso (b) Tabella delle transizioni
Stato x=0 x=1 Stato y1 y2 y3 x=0 x=1
A A,0 B,0 A 0 0 0 000,0 001,0
B A,0 C,0 B 0 0 1 000,0 010,0
C A,0 D,1 C 0 1 0 000,0 011,1
D E,1 D,1 D 0 1 1 100,1 011,1
E F,1 D,1 E 1 0 0 101,1 011,1
F A,0 D,1 F 1 0 1 000,0 011,1
– 1 1 0 – –
– 1 1 1 – –

Tabella 4.8: [Esercizio 4.b] Tabella di flusso e tabella delle transizioni (soluzione)

Progettare un semaforo stradale per una sola direttrice di marcia (quindi non per un incrocio: ad esempio,
un semaforo a chiamata pedonale).

Il grafo di un semaforo deve essere necessariamente di Moore, perché ogni stato deve indicare quali sono
i valori da comandare sulle uscite, per accendere o spegnere le lampade. Il grafo richiede una successione
di sette stati, in ciascuno dei quali la macchina permane per un tempo pari al periodo T0 (figura 4.7). Il
periodo deve essere determinato in base ai tempi di accensione delle varie lampade.
Nella prima colonna della tabella di flusso 4.9 sono elencati i possibili stati presenti. I corrispondenti valori
della funzione di stato futuro sono indicati nella seconda colonna. La funzione di stato presente ha bisogno
di tre colonne per indicare quale deve essere la situazione delle tre lampade in corrispondenza di ogni stato
presente.
Una volta individuata la tabella di flusso, il procedimento di sintesi richiede che lo stato interno e l’uscita siano
rappresentati con stringhe binarie. Si ottiene così la tabella delle transizioni 4.10, a partire dalla codifica di
stato. Si è deciso di codificare lo stato con un codice non ridondante (sette delle otto possibili configurazioni
di 3 bit e in particolare i primi sette interi del sistema di numerazione in base 2); l’uscita è già di fatto
codificata con il codice ridondante ”1 su 3”.
La funzione di stato futuro richiede che il numero binario corrispondente allo stato presente sia incrementato
di una unità a ogni comando del clock: il comportamento complessivo è quello di un contatore che conta
modulo 7. La funzione di uscita trascodifica questi sette numeri binari in configurazioni del codice ”1 su 3”.

Figura 4.7: [Esercizio 4.c] Grafo degli stati di un semaforo per una strada (soluzione)

Esercizio 4.d

Implementare il progetto del semaforo per una direttrice di marcia (esercizio 4.c) con logica combinatoria
di base e flip-flop D, JK e T.

4.3 - Procedimento di sintesi delle reti sincrone 99


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Stato Lampade
Presente Futuro Verde Gialla Rossa
V1 V2 ACCESA spenta spenta
V2 V3 ACCESA spenta spenta
V3 G ACCESA spenta spenta
G R1 spenta ACCESA spenta
R1 R2 spenta spenta ACCESA
R2 R3 spenta spenta ACCESA
R3 V1 spenta spenta ACCESA

Tabella 4.9: [Esercizio 4.c] Tabella di verità del semaforo per una strada (soluzione)

Stato y1n y1n y1n y1n+1 y1n+1 y1n+1 Uscita z1n z1n z1n
Verde 1 0 0 0 0 0 1 Verde 1 0 0
Verde 2 0 0 1 0 1 0 Verde 1 0 0
Verde 3 0 1 0 0 1 1 Verde 1 0 0
Giallo 0 1 1 1 0 0 Giallo 0 1 0
Rosso 1 1 0 0 1 0 1 Rosso 0 0 1
Rosso 2 1 0 1 1 1 0 Rosso 0 0 1
Rosso 3 1 1 0 0 0 0 Rosso 0 0 1
– 1 1 1 1 1 1 – 0 0 0

Tabella 4.10: [Esercizio 4.c] Tabella delle transizioni del semaforo per una strada (soluzione)

S = y1 y2 y3 è la funzione di stato, u = z1 z2 z3 è la funzione d’uscita (tabella 4.10). Per sintetizzare il


semaforo con flip-flop D bisogna fare la copertura delle k-mappe delle variabili di stato yin+1 , mentre la
copertura delle k-mappe delle variabili d’uscita zin permette di costruire la rete combinatoria che calcola le
uscite (figura 4.8(a)):

y1n+1 = (y1 ȳ2 + y2 y3 )n


y2n+1 = (ȳ2 y3 + ȳ1 y2 ȳ3 )n
y3n+1 = (ȳ2 ȳ3 + ȳ1 ȳ3 )n
z1n = (ȳ1 ȳ2 + ȳ1 ȳ3 )n
z2n = (y2 y3 )n
z3n = (y1 )n

Per sintetizzare l’automa con flip-flop JK, si prendono le mappe di yin+1 e si evidenziano le celle che cambiano
valore a causa delle transizioni di stato; poi si compilano le mappe per Jin e Kin . Allo stesso modo si procede
per sintetizzare il semaforo con flip-flop T (figura 4.8(b)). Si ottengono così le espressioni per i flip-flop:

J1 = y2 y3
K1 = y 2
J2 = y3
K2 = y 1 + y 3
J3 = 1
K3 = 1
T1 = y1 y2 + y2 y3
T2 = y1 y2 + y3
T3 = ȳ1 + ȳ2

100 4 - Reti sincrone


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) k-mappe delle variabili di stato e d’uscita, per (b) k-mappe per flip-flop JK e T
flip-flop D

Figura 4.8: [Esercizio 4.d] Sintesi con flip-flop del semaforo (soluzione)

Esercizio 4.e

Estendere il progetto del semaforo (esercizio 4.c) a un incrocio per due strade, con le seguenti specifiche:
• il rosso e il verde devono durare 60 secondi;
• il giallo deve accendersi per 20 secondi.

Se si sceglie un tempo di clock pari a 20 secondi (massimo comun divisore delle due temporizzazioni), si può
pensare di dividere i tempi di rosso e verde in tre stati ciascuno, tutti di durata 20 secondi (V1 , V2 , V3 per il
verde; R1 , R2 , R3 per il rosso). Un settimo stato G serve a pilotare il giallo; visto che il funzionamento deve
essere simmetrico come tempi, serve un ottavo stato (R4 ) per accendere il giallo anche sull’altro semaforo.
Questi stati non devono comandare il singolo semaforo, ma la coppia, per cui il nome dello stato è rappre-
sentativo solo di un semaforo: l’altro ha le luci che si accendono in modo complementare per evitare che
due verdi siano accesi nello stesso momento.
Le lampade dei semafori sono S1R , S1G , S1V e S2R , S2G , S2V . La sequenza di accensione delle lampade deve
seguire la sequenza degli stati, come in tabella 4.11.

Figura 4.9: [Esercizio 4.e] Grafo degli stati di un semaforo per due strade (soluzione)

4.3 - Procedimento di sintesi delle reti sincrone 101


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Stato Lampade
Presente Futuro S1V S1G S1R S2V S2G S2R
V1 V2 1 0 0 0 0 1
V2 V3 1 0 0 0 0 1
V3 G 1 0 0 0 0 1
G R1 0 1 0 0 0 1
R1 R2 0 0 1 1 0 0
R2 R3 0 0 1 1 0 0
R3 R4 0 0 1 1 0 0
R4 V1 0 0 1 0 1 0

Tabella 4.11: [Esercizio 4.e] Tabella di verità del semaforo per due strade (soluzione)

102 4 - Reti sincrone


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
4.4 Contatore binario
Definizione 4.6 (Contatore). Un contatore è una rete che ha per grafo un ciclo di tu i (o quasi1 ) gli
stati interni.

Un contatore è cara erizzato da:


1. numero di stati del ciclo (base di conteggio);

2. codifica degli stati.


In un contatore binario la codifica è binaria, mentre la base di conteggio è una potenza di 2.

Figura 4.10: Contatore (a 4 bit)

Proprietà dei contatori.


• Le uscite dei flip-flop sono onde quadre.

• L’uscita relativa al bit 2i ha periodo doppio dell’uscita relativa al bit 2i−1 .


• L’uscita relativa al bit 20 divide per due la frequenza del clock. L’uscita relativa al bit 2i
divide per 2i+1 la frequenza del clock. Quindi un contatore può essere usato come divisore
di frequenza.

Comandi asincroni del contatore. I comandi asincroni agiscono sul contatore per modificarne
il comportamento.

EN (enable) abilita la modifica dello stato interno.


RES (reset) impone una configurazione iniziale nulla.

LOAD impone una configurazione iniziale qualsiasi.


U/D’ (up/down) percorre il ciclo di conteggio incrementando o decrementando.

Le uscite di tu i i flip-flop interni sono raccolte in un unico AND (denominato Carry Out (CO)):
questa porta verifica quando è presente una configurazione con tu i 1, cioè si è giunti a fine con-
teggio. Conne endo il CO di un contatore all’EN di un altro contatore, si o iene un unico contatore
che ha per base il prodo o delle basi dei due contatori. Per avere un contatore con base più piccola,
partendo da uno esistente, si sfru ano i comandi di EN e RES (esercizi 4.g e 4.h).
Si può usare il contatore come elemento di retroazione per memorizzare lo stato interno di
una rete sequenziale. Infa i, un contatore con LOAD=1 è un accumulatore che può retroazionare
una rete di calcolo dello stato futuro.

1 Nei contatori possono essere previsti stati, richiamati da comandi appositi, nei quali non si sta effe uando il conteggio

ma altre operazioni: ad esempio, stati di test di funzionamento delle uscite, stati di non abilitazione del dispositivo, eccetera.

4.4 - Contatore binario 103


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Esercizio 4.f

Utilizzare un contatore per retroazionare una macchina con cinque stati codificati in maniera progressiva,
nella quale lo stato stabile è 0; quando l’ingresso ha valore 1 devono essere scanditi i cinque stati come
ritardo (corrispondono a cinque cicli di clock).

Un contatore a tre bit incrementa e scorre tutti i suoi stati, che corrispondono ai numeri in codifica binaria
da 0 a 7: quindi ci sono abbastanza stati per realizzare la macchina sequenziale.
Il contatore avvia il conteggio e scorre gli stati solo quando EN=1. La rete combinatoria deve impostare
EN=0 quando c’è stabilità nello stato corrente. Quando la macchina deve scorrere allo stato successivo
perché l’ingresso è 1, la rete combinatoria deve comandare EN=1 fino a che l’uscita del contatore vale 5:
quindi, è sufficiente la funzione OR di tutte le uscite del contatore perché ciò avvenga. Con l’OR, EN=0
quando l’ingresso è 0 e il contatore è nello stato 0, il che è corretto.
La rete combinatoria deve comandare RES=1 quando l’uscita del contatore è 5, oppure quando tutte le uscite
del contatore sono a 1 (7).
L’uscita della macchina sequenziale deve essere ottenuta da una rete combinatoria opportuna che elabori le
uscite del contatore.

Esercizio 4.g

Realizzare un contatore con base di conteggio 10, a partire da un contatore binario a 4 bit.

Un contatore binario a 4 bit è a base 16, se si usano tutte le uscite senza programmare gli ingressi. Per avere
una base più piccola, ad esempio base 10, bisogna sintetizzare una rete combinatoria connessa alle uscite del
contatore, che riconosca il valore 10 al proprio ingresso. Questa rete deve comandare 1 (verso il RES) solo
con il proprio ingresso a 10. La tabella di verità 4.12 mostra che questa rete deve essere un AND a quattro
ingressi:
RES = Qd · Q̄c · Qb · Q̄ a

La rete che realizza il contatore a base 10 è in figura 4.11.

Figura 4.11: [Esercizio 4.g] Contatore a base 10 (soluzione)

104 4 - Reti sincrone


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Qd Qc Qb Qa Decimale Uscita R.C. = Ingresso RES
0 0 0 0 0 0
0 0 0 1 1 0
0 0 1 0 2 0
0 0 1 1 3 0
0 1 0 0 4 0
0 1 0 1 5 0
0 1 1 0 6 0
0 1 1 1 7 0
1 0 0 0 8 0
1 0 0 1 9 0
1 0 1 0 10 1
1 0 1 1 11 0
1 1 0 0 12 0
1 1 0 1 13 0
1 1 1 0 14 0
1 1 1 1 15 0

Tabella 4.12: [Esercizio 4.g] Tabella di verità per la rete combinatoria di reset (soluzione)

Qh Qg Qf Qe Qd Qc Qb Qa Decimale Uscita R.C. = Ingresso RES


.. .. .. .. .. .. .. .. ..
. . . . . . . . . 0
0 0 1 1 1 1 0 0 60 1
.. .. .. .. .. .. .. .. ..
. . . . . . . . . 0

Tabella 4.13: [Esercizio 4.h] Tabella di verità per la rete combinatoria di reset (soluzione)

Esercizio 4.h

Realizzare un contatore con base di conteggio 60, a partire da due contatori binari a 4 bit.

Un contatore binario a 4 bit è a base 16, se si usano tutte le uscite senza programmare gli ingressi. Per avere
una base più grande, ad esempio base 60, bisogna:
• affiancare due o più contatori, in modo che sia raggiungibile la base desiderata. In questo caso, due
contatori offrirebbero 8 bit, cioè base 64, per cui questa è la scelta giusta;
• sintetizzare una rete combinatoria connessa alle uscite dei contatori, che riconosca il valore 60 al
proprio ingresso. Questa rete deve comandare 1 (verso tutti i RES) solo con il proprio ingresso a 60.
La tabella di verità 4.13 mostra che questa rete deve essere un AND a quattro ingressi:
RES = Q̄h · Q̄ g · Q f · Qe · Qd · Qc · Q̄b · Q̄ a
La rete che realizza il contatore a base 60 è in figura 4.12.

Esercizio 4.i

Implementare il semaforo per una strada a doppio senso alternato (tabella di flusso 1.13) con una rete
combinatoria a NAND retroazionata da un contatore binario a 4 bit con comandi di EN e U/D’.

4.4 - Contatore binario 105


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
Figura 4.12: [Esercizio 4.h] Contatore a base 60 (soluzione)

Lo schema a blocchi della macchina sequenziale che permette il funzionamento del semaforo è in figu-
ra 4.13(a). Le grandezze indicate in figura sono quelle utilizzate nell’esercizio 1.f. Si usa la codifica degli
stati già disponibile, associandola alle combinazioni di uscita del contatore (tabella 4.13(a)): allora, per pas-
sare da uno stato al successivo, è sufficiente incrementare o decrementare il valore del contatore, perché gli
stati sono adiacenti. I bit di uscita del contatore variano in base ai comandi EN e U/D’, col comportamento
descritto in tabella 4.13(b). Questa analisi permette di riempire la tabella 4.13(c) coi comportamenti da
richiedere al contatore per ottenere le transizioni degli stati, sulla base della tabella di flusso. Dalla tabella
dei comportamenti si ricavano le k-mappe dei due comandi EN e U/D’(figura 4.13(b)), da cui si ricavano le
espressioni minime e quelle a NAND:

EN = Ō1 x2 + O0 x2 + O1 x1 + Ō1 O0 x̄1 + Ō1 Ō0 x1 + O1 Ō0 x̄2


= Ō1 (O0 x̄1 + Ō0 x1 ) + x2 (Ō1 + O0 ) + O1 ( x1 + O0 x̄2 )

= Ō1 ↑ (O0 ↑ x̄1 + Ō0 ↑ x1 ) + x2 ↑ (Ō¯ 1 · Ō0 ) + O1 ↑ ( x1 + O0 ↑ x̄2 )


[ ( )] [ ( )]
= Ō1 ↑ (O0 ↑ x̄1 ) · (Ō0 ↑ x1 ) · [ x2 ↑ (O1 ↑ Ō0 )] · O1 ↑ x̄1 · (Ō0 ↑ x̄2 )
[ ( )] [ ( )]
= Ō1 ↑ (O0 ↑ x̄1 ) ↑ (Ō0 ↑ x1 ) ↑ [ x2 ↑ (O1 ↑ Ō0 )] ↑ O1 ↑ x̄1 ↑ (Ō0 ↑ x̄2 )
U/D’ = x̄2 + Ō1 x̄1 + Ō1 O0 + O1 x1
= x̄2 + Ō1 ( x̄1 + O0 ) + O1 x1
= x̄2 + Ō1 ↑ ( x̄¯1 · Ō0 ) + O1 ↑ x1
[ ]
= x2 · Ō1 ↑ ( x1 ↑ Ō0 ) · (O1 ↑ x1 )
[ ]
= x2 ↑ Ō1 ↑ ( x1 ↑ Ō0 ) ↑ (O1 ↑ x1 )

Le implementazioni della rete combinatoria a NAND per avere EN e U/D’ sono in figura 4.13.

106 4 - Reti sincrone


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
(a) Codifica degli sta-
ti tramite le uscite del (b) Tabella di verità dei comandi del (c) Tabella dei comportamenti del conta-
contatore contatore tore
x1 , x2
Stato O1 O0 EN U/D’ O1 n+1 O0 n+1 Qn 00 01 10 11
A 0 0 n n A EN=0 +1 –1 +1
0 0 O1 O0
B 0 1 0 1 O1 n O0 n B +1 +1 EN=0 +1
n
C 1 0 1 0 (O1 O0 ) − 1 C EN=0 –1 +1 +1
D 1 1 1 1 (O1 O0 )n + 1 D +1 EN=0 +1 +1

Tabella 4.14: [Esercizio 4.i] Semaforo per strada a senso unico alternato (soluzione)

(a) Schema a blocchi (b) Schema a blocchi

(c) Implementazione di EN (d) Implementazione di U/D’

Figura 4.13: [Esercizio 4.i] Rete combinatoria a NAND (soluzione)

4.4 - Contatore binario 107


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
4.5 Registro accumulatore
Definizione 4.7 (Registro). Un registro è un parallelo di flip-flop (di solito di tipo D).

Definizione 4.8 (Accumulatore). Un registro posto in retroazione a una rete combinatoria è definito
accumulatore.

Un registro accumulatore (figura 4.14(a)) deve avere le seguenti funzioni, pilotate da appositi
comandi esterni:

a) inizializzarsi (di solito a 0);

b) aggiornarsi con nuovi dati, calcolati dalla rete combinatoria;

c) memorizzare i dati (R).

Le funzioni sono possibili tramite i comandi Write Enable (WE) e Reset (RES), con le combinazioni
in tabella 4.15. L’uscita della singola cella di memoria è determinata dalla seguente espressione:
( )n
Q i n +1 = RES · ( I1 · WE + Qi · WE)

Il comando RES è prioritario rispe o al comando WE. La realizzazione circuitale della cella base con
flip-flop D è in figura 4.14(b).
Se si usa un flip-flop JK al posto di un flip-flop D (figura 4.14(c)), le espressioni diventano:

Ji = RES · WE · Ii
Ki = RES + WE · Īi

(a) Schema funzionale (b) Stru ura interna, basata su flip- (c) Stru ura interna, basata su flip-
flop D flop JK

Figura 4.14: Registro accumulatore

WE RES R n +1
0 0 Rn (memoria)
0 1 0 (inizializzazione)
1 0 G ( R, I ) (aggiornamento)
1 1 0 (inizializzazione)

Tabella 4.15: Tabella di verità del registro accumulatore

108 4 - Reti sincrone


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
4.6 Registro a scorrimento
Definizione 4.9 (Registro a scorrimento). Un registro a scorrimento è una serie di flip-flop.

In un registro a scorrimento, ogni flip-flop conserva in memoria un bit della serie (prelevabile
sulla propria uscita). L’ingresso del registro, che è poi l’ingresso del primo flip-flop, è chiamato
Serial Input (SI), mentre l’uscita del registro, cioè quella dell’ultimo flip-flop, è Serial Output (SO).
Lo schema di un registro a scorrimento è in figura 4.15.

Figura 4.15: Registro a scorrimento (a 3 bit)

I valori dell’ingresso x scorrono da sinistra verso destra scanditi dai colpi del clock, secondo le
relazioni che definiscono le tre variabili di stato:
Q 0 n +1 = x n
Q 1 n +1 = Q 0 n
Q 2 n +1 = Q 1 n
Con i registri a scorrimento è possibile realizzare:
• linee di ritardo;
• riconoscitori di sequenze;
• convertitori seriale/parallelo;
• meccanismi per il conteggio;
• la rotazione di una stringa;
• la moltiplicazione (o divisione) di un numero binario per una potenza di 2.

4.6.1 Universal Shift Register (USR)


Per perme ere al registro a scorrimento di far scorrere il dato non sono da sinistra verso de-
stra, ma pure in senso opposto, e per ampliarne la maneggevolezza, ogni flip-flop del registro a
scorrimento è preceduto da un MUX a 4 ingressi (figura 4.16). Selezionando l’ingresso opportuno
è possibile utilizzare la funzione corrispondente (tabella 4.16).

Figura 4.16: Cella base di un USR

Gli USR sono impiegati in molte applicazioni, tra cui alcuni contatori con codifiche particolari.

4.6 - Registro a scorrimento 109


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
A0 n A1 n Q i n +1
0 0 Qi n (hold) (conservazione stato)
0 1 Q i +1 n (left) (sinistra)
1 0 Q i −1 n (right) (destra)
1 1 Ii n (load) (caricamento bit esterno)

Tabella 4.16: Tabella di verità dell’USR

Contatore ad anello. Un ciclo di conteggio in base 4 può essere o enuto facendo scorrere un
solo 1 di continuo, dal primo all’ultimo flip-flop (tabella di verità 4.16(a)). Un contatore ad anello
si realizza conne endo tra loro SO e SI di un USR (figura 4.17(a)). Bisogna essere sicuri che gli stati
del ciclo siano davvero configurazioni del codice ”uno su qua ro”, quindi è prudente inizializzare
il circuito con una di queste (ad esempio, 1000).

Contatore Johnson (a riempimento/svuotamento). Un ciclo di conteggio in base 8 può essere


o enuto introducendo degli 1 nel registro fino a quando non ne è tu o pieno ed introducendo
poi degli 0 fino a quando non ne è tu o pieno (tabella di verità 4.16(b)). Tale contatore è de o di
Johnson o a riempimento/svuotamento. Per realizzarlo occorre collegare a SI il complemento di
SO (figura 4.17(b)). Anche in questo caso bisogna preoccuparsi della corre a inizializzazione del
circuito (ad esempio con 0000).

(a) Contatore ad anello (b) Contatore Johnson

Figura 4.17: Applicazioni degli USR

(a) Codice ”uno su qua ro” (b) Codice Johnson


Q3 Q2 Q1 Q0 Decimale Q3 Q2 Q1 Q0 Decimale
1 0 0 0 8 0 0 0 0 0
0 1 0 0 4 1 0 0 0 8
0 0 1 0 2 1 1 0 0 12
0 0 0 1 1 1 1 1 0 14
1 1 1 1 15
0 1 1 1 7
0 0 1 1 3
0 0 0 1 1

Tabella 4.17: Tabelle di verità di contatori realizzati con USR

110 4 - Reti sincrone


Elenco delle figure

1.1 Display a se e segmenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17


1.2 Tipi di trasmissione in serie e parallelo . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3 Realizzazione a gate di EX-OR e EX-NOR . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4 Diagramma di Venn del teorema dell’assorbimento (I) . . . . . . . . . . . . . . . . . 23
1.5 Definizione del ritardo totale di una rete logica . . . . . . . . . . . . . . . . . . . . . 27
1.6 Schema a blocchi di una porta logica reale . . . . . . . . . . . . . . . . . . . . . . . . 28
1.7 Ritardo puro e ritardo inerziale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.8 Ritardo puro, alea statica e alea dinamica . . . . . . . . . . . . . . . . . . . . . . . . 29
1.9 Conseguenze dell’alea statica su una porta OR . . . . . . . . . . . . . . . . . . . . . . 29
1.10 Macchina combinatoria reale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.11 Macchine sequenziali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.12 Tempistica della macchina asincrona . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.13 Tipi di diagrammi degli stati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.14 [Esercizio 1.d] Diagrammi degli stati da completare . . . . . . . . . . . . . . . . . . 34
1.15 [Esercizio 1.d] (soluzione) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.16 [Esercizio 1.e] Porta automatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.17 [Esercizio 1.e] Grafo degli stati e tabella di flusso (soluzione) . . . . . . . . . . . . . 36
1.18 [Esercizio 1.f] Semaforo per senso unico alternato . . . . . . . . . . . . . . . . . . . 37

2.1 Implicanti e implicati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40


2.2 Esempi di k-mappe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.3 k-mappa a 5 variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.4 Celle adiacenti in k-mappe a 5 e 6 variabili . . . . . . . . . . . . . . . . . . . . . . . 43
2.5 [Esercizio 2.a] Ricerca delle espressioni minime tramite k-mappa (soluzione) . . . 45
2.6 [Esercizio 2.b] Mappa di Karnaugh e RR (soluzione) . . . . . . . . . . . . . . . . . . 45
2.7 Dimostrazione dei teoremi dell’assorbimento, con k-mappe . . . . . . . . . . . . . . 47
2.8 [Esercizio 2.c] Riduzione di un’espressione tramite k-mappa (soluzione) . . . . . . 47
2.9 [Esercizio 2.d] Riduzione di un’espressione tramite k-mappa (soluzione) . . . . . . 48
2.10 [Esercizio 2.e] EX-OR sintetizzato a soli NAND (soluzione) . . . . . . . . . . . . . . . . 50
2.11 [Esercizio 2.f] Porte logiche a disposizione per comporre AND e OR a tre ingressi . . 50
2.12 [Esercizio 2.f] Sintesi di AND e OR a tre ingressi con NAND e NOR (soluzione) . . . . . . 51
2.13 [Esercizio 2.g] Porta logica da stabilire . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.14 Schemi di decoder a due variabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.15 Schema funzionale dell’encoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.16 MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.17 [Esercizio 2.h] Implementazione anti-alea del MUX . . . . . . . . . . . . . . . . . . . 55
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
2.18 [Esercizio 2.i] Realizzazione di MUX a NOR (soluzione) . . . . . . . . . . . . . . . . . 56
2.19 [Esercizio 2.j] Rete combinatoria con decoder e MUX . . . . . . . . . . . . . . . . . . 56
2.20 Stru ura interna dell’Half Adder (HA) . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.21 Full Adder (FA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.22 Sommatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.23 [Esercizio 2.k] Circuiti per implicazione logica (soluzione) . . . . . . . . . . . . . . 60
2.24 Circuito combinatorio programmabile . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.25 ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.26 Problemi di proge azione delle ROM . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.27 Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.28 [Esercizio 2.l] Abilitazione di un banco di ROM (soluzione) . . . . . . . . . . . . . . 63
2.29 [Esercizio 2.m] Banco di ROM da abilitare . . . . . . . . . . . . . . . . . . . . . . . . 63
2.30 [Esercizio 2.m] Abilitazione di un banco di ROM (soluzione) . . . . . . . . . . . . . . 65
2.31 [Esercizio 2.m] Abilitazione di un banco di ROM (soluzione alternativa) . . . . . . . 66
2.32 Confronto tra PLA e PAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.33 [Esercizio 2.n] Mappe di Karnaugh per programmare PLA e PAL . . . . . . . . . . . 68
2.34 [Esercizio 2.n] Realizzazione di funzioni su logiche programmabili (soluzione) . . 68
2.35 Stru ura di una PLD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.36 [Esercizio 2.o] Realizzazione di un semaforo con PLD . . . . . . . . . . . . . . . . . . 69
2.37 [Esercizio 2.o] Mappe di Karnaugh (soluzione) . . . . . . . . . . . . . . . . . . . . . 70
2.38 [Esercizio 2.o] Realizzazione degli implicanti all’interno della PLD (soluzione) . . . 71

3.1 Rete asincrona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73


3.2 Generica memoria binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3 Latch SR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.4 Sintesi del latch SR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.5 Latch CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.6 Nuova codifica degli stati per eliminare la corsa critica . . . . . . . . . . . . . . . . 79
3.7 Codifica degli stati con transizione multipla . . . . . . . . . . . . . . . . . . . . . . . 79
3.8 [Esercizio 3.a] Esempio di funzionamento . . . . . . . . . . . . . . . . . . . . . . . . 81
3.9 [Esercizio 3.a] Codifica degli stati e transizioni (soluzioni) . . . . . . . . . . . . . . . 82
3.10 [Esercizio 3.b] Rete sequenziale asincrona . . . . . . . . . . . . . . . . . . . . . . . . 83
3.11 [Esercizio 3.b] Grafo, tabella e codifica degli stati (soluzioni) . . . . . . . . . . . . . 85
3.12 [Esercizio 3.c] Testi e soluzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

4.1 Valutazione del periodo di clock rispe o ai ritardi della rete sequenziale . . . . . . 90
4.2 Flip-flop D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.3 [Esercizio 4.a] Rete sequenziale sincrona . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.4 [Esercizio 4.a] Rete sequenziale sincrona con annotazione dei segnali . . . . . . . . 94
4.5 [Esercizio 4.a] Grafo degli stati e forma d’onda (soluzione) . . . . . . . . . . . . . . 95
4.6 [Esercizio 4.b] Rete sequenziale sincrona (soluzione) . . . . . . . . . . . . . . . . . . 98
4.7 [Esercizio 4.c] Grafo degli stati di un semaforo per una strada (soluzione) . . . . . 99
4.8 [Esercizio 4.d] Sintesi con flip-flop del semaforo (soluzione) . . . . . . . . . . . . . 101
4.9 [Esercizio 4.e] Grafo degli stati di un semaforo per due strade (soluzione) . . . . . 101
4.10 Contatore (a 4 bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.11 [Esercizio 4.g] Contatore a base 10 (soluzione) . . . . . . . . . . . . . . . . . . . . . 104
4.12 [Esercizio 4.h] Contatore a base 60 (soluzione) . . . . . . . . . . . . . . . . . . . . . 106
4.13 [Esercizio 4.i] Rete combinatoria a NAND (soluzione) . . . . . . . . . . . . . . . . . . 107
4.14 Registro accumulatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.15 Registro a scorrimento (a 3 bit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.16 Cella base di un USR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.17 Applicazioni degli USR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

112 Elenco delle figure


Elenco delle tabelle

1.1 Corrispondenza tra notazioni decimale, esadecimale, o ale e binaria . . . . . . . . 16


1.2 Codice BCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Codice a se e segmenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Codice Gray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.5 Operazioni logiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.6 Tabelle di verità degli operatori binari . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7 [Esercizio 1.b] Tabelle di verità (soluzione) . . . . . . . . . . . . . . . . . . . . . . . . 25
1.8 Notazioni simboliche delle configurazioni binarie . . . . . . . . . . . . . . . . . . . 25
1.9 [Esercizio 1.c] Tabella di verità (soluzione) . . . . . . . . . . . . . . . . . . . . . . . . 26
1.10 Grandezze cara eristiche della macchina asincrona . . . . . . . . . . . . . . . . . . 31
1.11 Grandezze cara eristiche della macchina sincrona . . . . . . . . . . . . . . . . . . . 32
1.12 [Esercizio 1.e] Tabella di verità (soluzione) . . . . . . . . . . . . . . . . . . . . . . . . 36
1.13 [Esercizio 1.f] Tabella di flusso (soluzione) . . . . . . . . . . . . . . . . . . . . . . . . 38

2.1 Indicatori per rete combinatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40


2.2 [Esercizio 2.a] Tabella di verità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3 [Esercizio 2.g] Tabella di verità della porta logica da stabilire (soluzione) . . . . . . 51
2.4 [Esercizio 2.g] Tabelle di verità della porta logica stabilita (soluzione) . . . . . . . . 52
2.5 Tabella di verità del decoder (a 2 variabili) . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6 Tabella di verità dell’encoder (a 3 variabili) . . . . . . . . . . . . . . . . . . . . . . . 53
2.7 Tabella di verità del MUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.8 [Esercizio 2.j] Tabella di verità (soluzione) . . . . . . . . . . . . . . . . . . . . . . . . 57
2.9 Tabella di verità del sommatore Half Adder (HA) . . . . . . . . . . . . . . . . . . . . 57
2.10 Tabella di verità del sommatore FA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.11 Tabella di verità dell’implicazione logica . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.12 [Esercizio 2.k] Tabelle di verità e collegamento logico tra A e a (soluzione) . . . . . 60
2.13 [Esercizio 2.m] Costruzione del piano di indirizzamento (soluzione) . . . . . . . . . 64
2.14 [Esercizio 2.m] Piano di indirizzamento e collegamenti (soluzione) . . . . . . . . . 64
2.15 [Esercizio 2.m] Tabelle di verità delle logiche di comando dei CE (soluzione) . . . . 64
2.16 [Esercizio 2.m] Tabella di verità (soluzione) . . . . . . . . . . . . . . . . . . . . . . . 65
2.17 [Esercizio 2.o] Implicanti primi e riduzione del numero (soluzione) . . . . . . . . . 70

3.1 Tabella di verità del latch SR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75


3.2 Tabella di trascodifica dal latch CD al latch SR . . . . . . . . . . . . . . . . . . . . . . 76

4.1 Parametri del clock della macchina sincrona . . . . . . . . . . . . . . . . . . . . . . . 90


Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
4.2 Tabelle di verità dei flip-flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.3 [Esercizio 4.a] Tabella delle transizioni (soluzione) . . . . . . . . . . . . . . . . . . . 94
4.4 [Esercizio 4.a] Tabella di flusso (soluzione) . . . . . . . . . . . . . . . . . . . . . . . 95
4.5 [Esercizio 4.a] Tabella di flusso sintetica (soluzione) . . . . . . . . . . . . . . . . . . 95
4.6 [Esercizio 4.a] Tabella di flusso dell’automa minimo, finale (soluzione) . . . . . . . 95
4.7 Sintesi con flip-flop JK e T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.8 [Esercizio 4.b] Tabella di flusso e tabella delle transizioni (soluzione) . . . . . . . . 99
4.9 [Esercizio 4.c] Tabella di verità del semaforo per una strada (soluzione) . . . . . . . 100
4.10 [Esercizio 4.c] Tabella delle transizioni del semaforo per una strada (soluzione) . . 100
4.11 [Esercizio 4.e] Tabella di verità del semaforo per due strade (soluzione) . . . . . . . 102
4.12 [Esercizio 4.g] Tabella di verità per la rete combinatoria di reset (soluzione) . . . . 105
4.13 [Esercizio 4.h] Tabella di verità per la rete combinatoria di reset (soluzione) . . . . 105
4.14 [Esercizio 4.i] Semaforo per strada a senso unico alternato (soluzione) . . . . . . . . 107
4.15 Tabella di verità del registro accumulatore . . . . . . . . . . . . . . . . . . . . . . . . 108
4.16 Tabella di verità dell’USR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.17 Tabelle di verità di contatori realizzati con USR . . . . . . . . . . . . . . . . . . . . . 110

114 Elenco delle tabelle


Bibliografia

[1] AA.VV. «Imparare l’Ele ronica partendo da zero (16a puntata): Le porte logiche». In: Nuova
Ele ronica 193 (1998).
[2] AA.VV. «Imparare l’Ele ronica partendo da zero (17a puntata): Decodifiche e contatori».
In: Nuova Ele ronica 194 (1998).
[3] AA.VV. «Imparare l’Ele ronica partendo da zero (30a puntata): I flip-flop». In: Nuova Elet-
tronica 207 (2001).
[4] Giuseppe Biondo e Enrico Sacchi. Manuale di Ele ronica e Telecomunicazioni. 5a ed. Hoepli,
2005.
[5] Elisabe a Cuniberti e Luciano De Lucchi. Ele ronica. Vol. 1: Componenti e sistemi digitali.
Petrini, 1996.
[6] Elisabe a Cuniberti e Luciano De Lucchi. T.D.P. Vol. 1. Petrini, 1994.
[7] Maurizio Del Corso. «I flip-flop: comandare due luci con un solo pulsante». In: Fare Ele ro-
nica (234 dic. 2004), pp. 74–78.
[8] Roberto Laschi. Appunti di Reti Logiche. Dispense universitarie per la II Facoltà di Ingegneria.
2005 (cit. a p. 13).
[9] Agostino Rolando. «CPLD by Example (1a puntata): Evoluzione dei componenti program-
mabili». In: Fare Ele ronica (244 o . 2004), p. 68.
[10] Agostino Rolando. «CPLD by Example (6a puntata): Macchine a stati finiti». In: Fare Ele ro-
nica (249 mar. 2006), p. 68.
Indice analitico

Accumulatore, vedi Registro o ale, 16


Alea, 28, 86, 92 Codifica degli stati, 72, 75, 78, 86, 92
dinamica, 28 c. ridondante, 76
statica, 28, 45, 46, 54, 74, 78 mappatura, 76
Algebra di Boole, 19, 48 Condizione di indifferenza, 21, 33, 42, 43, 76, 78
dualità, 22 Contatore, 98
espressioni generali, 25 base di conteggio, 98
forme canoniche, 25 c. ad anello, 105
idempotenza, 22 c. binario, 98
notazioni simboliche, 25 c. Johnson, 105
proprietà degli operatori, 22 Carry Out (CO), 98
teorema di Shannon, 25 divisore di frequenza, 98
teoremi dell’assorbimento, 23, 46 Corsa critica, 30, 75, 78, 86, 92
teoremi di De Morgan, 23, 24, 48
Alta impedenza, vedi Buffer Decoder, 51
American Standard Code for Information Diagramma degli stati, 32, 92
Interchange (ASCII), 19 di Mealy, 32
Analisi (processo), 21, 31, 48, 77, 87 di Moore, 32
Analogico (segnale), vedi Segnale Digitale (segnale), vedi Segnale
AND, 20–22 Dualità, vedi Algebra di Boole
Automa, vedi Rete logica
a. minimo, 32 Encoder, 51
Esadecimale (notifica), vedi Codifica binaria
Base di conteggio, vedi Contatore Espressione logica, 22, 40, 43, 44
Binario (segnale), vedi Segnale e. minima, 40, 41, 86
Binary-Coded Decimal (BCD), vedi Codifica EX-NOR, 20–22
binaria EX-OR, 20–22, 53
Bit, 14
Buffer, 61, 75 Fan-in, vedi Porta logica
Fan-out, vedi Porta logica
Carry Out (CO), vedi Contatore Flip-flop, 31, 68, 86, 92, 103, 104
Circuiti programmabili, 60 D (delay), 86, 92
Clock, 85, 86, 92 JK, 87, 92
Codice, vedi Codifica binaria T (toggle), 87, 93
Codifica binaria, 15 Full Adder (FA), 56
7 segmenti, 17
Binary-Coded Decimal (BCD), 16 Gate, vedi Porta logica
circolare, 17 Glitch, 27–29
esadecimale, 16 Grafo
Gray, 17, 41 g. degli stati, vedi Diagramma degli stati
Reti logiche L-A ⃝
CC ⃝
BY: ⃝
$ ⃝
=

\
g. delle adiacenze, 76, 78 Programmable Logic Array (PLA), 66, 68
g. primitivo, 33 Programmable Logic Device (PLD), 68
Gray, vedi Codifica binaria
Raggruppamento Re angolare (RR), vedi
Half Adder (HA), 56 Mappa di Karnaugh
Random Access Memory (RAM), 75
Idempotenza, vedi Algebra di Boole Read Only Memory (ROM), 60
Implicante, 40, 43 Regime, 26
i. primo, 43 Registro, 103
Implicato, 40, 43 accumulatore, 98, 103
i. primo, 43 r. a scorrimento, 104
Implicazione logica, 57 USR, 104
Incertezza, 14 Rete logica, 13, 29
Informazione, 14 Ridondanza, 15
Istante di sincronismo, vedi Clock Ritardo di propagazione, 26, 27, 29
r. inerziale, 27
k-mappa, vedi Mappa di Karnaugh r. puro, 27, 28
Karnaugh (mappa), vedi Mappa di Karnaugh Rumore, 15
Latch, 72, 78 Segnale, 14
Controller-Data (CD), 74, 86 s. analogico, 14
Set-Reset (SR), 72, 74, 87 s. digitale, 14
Logica binaria, 19 s. binario, 14
trasmissione del s., 19
Macchina Sintesi (processo), 21, 31, 48, 78, 92
combinatoria, 29 Somma di Prodo i (SP), 25, 40, 43
sequenziale, 29, 98 Stabilità, 32, 71, 75, 78, 92
asincrona, 29, 30, 71
sincrona, 31, 85 Tabella delle transizioni, 78, 92
Mappa di Karnaugh, 41, 92 Tabella di flusso, 31, 33, 75, 78, 92
adiacenze, 42 Tabella di verità, 20, 41
copertura degli uno, 43 Teoremi dell’assorbimento, vedi Algebra di
copertura degli zero, 43 Boole
operazioni algebriche, 46 Teoremi di De Morgan, vedi Algebra di Boole
Raggruppamento Re angolare (RR), 43, 78 Throughput, 29
Maxtermine, 25, 41 Transitorio, 26, 27, 39, 78, 87
Mealy (modello), vedi Diagramma degli stati Transizione, 32, 71, 75, 92, 93
Memoria binaria, 72 t. multipla, 75, 76, 78, 86
Mintermine, 25, 41, 51, 52
Modo fondamentale, 72 Universal Shift Register (USR), vedi Registro
Moore (modello), vedi Diagramma degli stati Uscite trasparenti, 74
Multiplexer (MUX), 25, 46, 52, 54, 60, 68, 104

NAND, 20–22, 48, 87


NOR, 20–22, 48
NOT, 20–22

OR,
20–22, 28, 29
O ale (notazione), vedi Codifica binaria

Porta logica, 20, 27, 47, 78


fan-in, 39, 47
fan-out, 47
Prodo o di Somme (PS), 25, 40, 41, 44
Programmable Array Logic (PAL), 66, 68

Indice analitico 117

Potrebbero piacerti anche