Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

19
voti

Elettronica Digitale Pratica II - Rete Combinatoria

Indice

1 - Introduzione

Dopo aver preso visione e dimestichezza con i circuiti integrati che realizzano le porte logiche elementari (vedasi l'articolo Elettronica Digitale Pratica I - Primi Passi) e ricordando che l'articolo è rivolto a principianti, vogliamo cimentarci nella realizzazione di qualcosa di pratico e realmente utilizzabile, un semplice circuito che, sfruttando solo porte logiche, soddisfi un'esigenza concreta.

Partiremo dall'idea percorrendo tutti i passaggi intermedi che portano alla realizzazione fisica. L'occasione è propizia anche per confrontare diversi metodi di minimizzazione della funzione logica: algebra booleana e mappa di Karnaugh, evidenziandone le analogie semplificative.

Ricavato il circuito base, grazie alla funzione logica, vedremo come semplificare ulteriormente la realizzazione utilizzando solo porte NAND o, in alternativa, solo porte NOR. La trattazione è inevitabilmente estesa, ma i meno pazienti non si preoccupino: darò indicazioni per saltare i paragrafi opportuni per giungere subito alla pratica.

L'idea è, quindi, di realizzare qualcosa di concreto come, per esempio, l'azionamento automatico di una ventola sotto determinate condizioni. Condizioni che andiamo a chiarire nella seguente descrizione funzionale.

2 - Descrizione Funzionale

Si vuole comandare l'accensione di una ventola di aerazione di un bagno sprovvisto di finestra. Anziché provvedere manualmente ogni volta all'accensione ed allo spegnimento, vorremmo che la ventola si accenda in automatico con queste modalità:

  1. sempre alla presenza di una persona;
  2. con umidità relativa superiore al 60%, ma non di notte per evitare di disturbare il prossimo.

e che si spenga da sola nel caso contrario che tali condizioni vengano a mancare.

Specificata la descrizione funzionale visualizziamo il progetto con uno schema:

Dove gli ingressi saranno i seguenti:

  • A) Rilevatore di presenza di persone;
  • B) Sensore di umidità;
  • C) Timer giornaliero.

L'uscita è la ventola V.

Lo scatolotto rappresenta il circuito digitale da realizzare che prende il nome di Rete Combinatoria. E perché si chiama in tal modo? Vediamolo nel seguente paragrafo.

3 - Rete Combinatoria

Osservando lo schema e rileggendo la descrizione funzionale ci accorgiamo che la ventola si deve accendere o spegnere solo in base allo stato degli ingressi:

Ingressi Uscita
c'è qualcuno? ventola accesa
c'è umidità e siamo di giorno? ventola accesa
non c'è nessuno e l'ambiente è asciutto? ventola spenta
e così via negli altri casi. . . .

Allora un circuito digitale dove l'output dipende unicamente dagli input propri al medesimo istante prende il nome di Rete Combinatoria. Quindi Rete Combinatoria è un circuito digitale, costituito solo con porte logiche senza elementi di memoria come Flip Flop o RAM, che realizza una opportuna combinazione degli ingressi per determinare l'uscita. La relazione tra ingressi e uscita prende il nome di funzione logica. Per identificare la quale si parte dalla descrizione funzionale di ciò che desideriamo realizzare e dall'analisi dei valori di ingressi e uscite. La descrizione funzionale l'abbiamo vista, ci manca di analizzare i valori di ingressi e uscite che vediamo subito.

4 - Valori di ingressi e uscite

Sia gli ingressi sia l'uscita assumono valori digitali dove, in logica TTL positiva, 0 vale zero volt ed 1 corrisponde a 5 volt. Ora assegniamo agli ingressi ed all' uscita i valori digitali che riteniamo più opportuni ed il relativo significato:

Dispositivo 1 0
A) Rilevatore presenza presenza di persona nessuna presenza
B) Sensore umidità umidità > 60% umidità < 60%
C) Timer dalle 8 alle 24 dalle 24 alle 8
V) Ventola accesa spenta

Chiarita la descrizione funzionale ed il significato di ingressi e uscita dobbiamo ricavare la funzione logica che mette in relazione gli ingressi con l'uscita in modo da realizzare quanto descritto.

5 - Funzione Logica

Il nostro caso è molto semplice e possiamo individuare subito, in modo intuitivo, la funzione che permette alla ventola di accendersi in base agli ingressi, partendo solo dalla frase che usiamo per descriverne il comportamento:
la ventola (V) è accesa se vi è una persona (A) oppure se, di giorno dalle 8 alle 24 (C), vi è umidità superiore al 60% (B).

Sintetizzando:
V = 1 se A = 1 o se B = 1 e C = 1
dove "o" diventa OR e la "e" diventa AND
V = A OR ( B AND C )
e ricordando che, in logica booleana, il segno (+) identifica la OR e che (\cdot) significa AND
V = A + B \cdot C
ma il segno (\cdot) lo possiamo sottintendere, come la moltiplicazione in algebra, ottenendo la Funzione Logica finale:

\ V = A + BC

Nel caso di situazioni più complesse non si riesce ad individuare subito una funzione ed occorre ricorrere alla tabella delle verità. Non è il nostro caso, ma lo facciamo lo stesso per esercizio, mentre chi vuole passare subito alla pratica può tranquillamente saltare al paragrafo 9.

6 - Tabella delle verità

Ricordiamo brevemente come si ottiene.
Si elencano gli ingressi con tutte le loro combinazioni possibili. Qui abbiamo 3 ingressi che, potendo assumere solo i due valori 1 o 0, danno luogo a 23 = 8 combinazioni. A fianco di ogni combinazione si scrive il valore che vogliamo che l'uscita abbia in quel caso.

A B C V significato
0 0 0 0 ventola spenta perché: non c'è nessuno, l'umidità è bassa, è notte
0 0 1 0 ventola spenta perché: non c'è nessuno, l'umidità è bassa, è giorno
0 1 0 0 ventola spenta perché: non c'è nessuno, l'umidità è alta,    è notte
0 1 1 1 ventola accesa perché: non c'è nessuno, l'umidità è alta,    è giorno
1 0 0 1 ventola accesa perché: c'è qualcuno,      l'umidità è bassa, è notte
1 0 1 1 ventola accesa perché: c'è qualcuno,      l'umidità è bassa, è giorno
1 1 0 1 ventola accesa perché: c'è qualcuno,      l'umidità è alta,    è notte
1 1 1 1 ventola accesa perché: c'è qualcuno,      l'umidità è alta,    è giorno

Partendo da tale tabella vediamo come si ottiene la funzione logica.

A fianco di ogni 1 della colonna V trascriviamo gli ingressi contrassegnati con   \ A, \ B, \ C   se valgono 1 oppure con   \overline{A}, \ \overline{B}, \ \overline{C}   se valgono 0:

A B C V mintermine
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1 \overline{A} \  B \ C
1 0 0 1 A \ \overline{B} \ \overline{C}
1 0 1 1 A \ \overline{B} \ C
1 1 0 1 A \ B \ \overline{C}
1 1 1 1 \ A \ B \ C

Ciò cosa significa? Per esempio vediamo la quarta riga: 0 1 1 1   \overline{A} \  B \ C

La ventola è accesa se non c'è nessuno \overline{A} e c'è umidità \ B ed è giorno \ C , quindi  V = \overline{A}   AND   \ B   AND  \ C   o più sinteticamente:

V = \overline{A} B C

E così via per gli altri casi. Nel complesso la ventola sarà accesa se si verifica anche uno solo di questi casi, quindi:

V = \overline{A} B C + A \overline{B} \overline{C}  + A \overline{B} C  + A B \overline{C}  + A B C

che sembra alquanto diversa da quella ricavata per intuito, infatti occorre qualche passaggio di semplificazione che possiamo effettuare in due modi: per via analitica o per via grafica. Vediamo entrambi iniziando dal primo metodo analitico.

7 - Sintesi analitica della Funzione Logica

Si tratta di applicare le regole dell'algebra booleana. Nel nostro caso, molto semplice, ne vediamo solo alcune man mano che procediamo con la semplificazione.

Dalla espressione di partenza vista sopra:
V = \overline{A} B C + A \overline{B} \overline{C}  + A \overline{B} C  + A B \overline{C}  + A B C

raccogliamo A a fattor comune:
V = \overline{A} B C + A \left[ \overline{B} \overline{C}  + \overline{B} C  + B \overline{C}  + B C \right]

ora raccogliamo B ed il suo negato:
V = \overline{A} B C + A \left[ \overline{B} \left( \overline{C}  + C \right) + B \left( \overline{C}  + C \right) \right]

Ora osserviamo   \left( \overline{C}  + C \right)   e ci chiediamo che valore possa assumere questa somma nei 2 casi possibili che C valga 0 o 1:
Se C = 0:   \left( \overline{C}  + C \right)   = (1 + 0) = 1 dato che (1 OR 0) fa 1;
Se C = 1:   \left( \overline{C}  + C \right)   = (0 + 1) = 1 dato che (0 OR 1) fa 1;

Quindi in ogni caso   \left( \overline{C}  + C \right)   fa 1 e quindi la nostra funzione diventa:
V = \overline{A} B C + A \left[ \overline{B} \cdot 1 + B \cdot 1 \right]

Anche qui consideriamo    B \cdot 1   con tutti i valori che B può assumere:
Se B = 0: B * 1 = 0 * 1 = 0 cioè il valore stesso che ha B;
Se B = 1: B * 1 = 1 * 1 = 1 cioè il valore stesso che ha B;

Quindi possiamo sostituire B*1 con B:
V = \overline{A} B C + A \left[ \overline{B} \cdot 1 + B \right]

E analogamente con B negato:
V = \overline{A} B C + A \left[ \overline{B} + B \right]

Come nel caso precedente abbiamo scoperto che C negato + C = 1 anche B negato + B = 1, quindi:
V = \overline{A} B C + A \cdot 1

Ma A*1 = A:
(1) \ V = \overline{A} B C + A

Accidenti, la nostra funzione pare ancora diversa da quella ricavata per intuito, cominciamo a dubitare del nostro intuito? Niente panico e utilizziamo un trucco; nessuno ci vieta di riconsiderare una condizione per la quale la ventola si accende aggiungendo una condizione in OR ridondante che non cambia la funzionalità:
(2) \ V = A B C + \overline{A} B C + A

Ora raccogliamo a fattor comune BC:
V = B C \cdot \left( A + \overline{A} \right) + A

ma già sappiamo che A + A negato = 1 e che BC * 1 = BC, per cui:
\ V = B C + A = A + B C

OK: ce l'abbiamo fatta!

Quindi partendo dalla tabella delle verità abbiamo ricavato la funzione logica attraverso il metodo della sommatoria dei mintermini. Vi è anche un secondo metodo detto della produttoria dei maxtermini ma non mi sembra il caso di tediarvi troppo con la teoria.

Spesso è difficile ricavare una funzione ottimizzata applicando le regole dell'algebra booleana. In tali casi si ricorre alla mappa di Karnhaug. Stanchi? Stufi? Forza e coraggio! Un ultimo sforzo e poi passiamo al circuito.

8 - Mappa di Karnhaug

E' un metodo grafico per ricavare e ottimizzare le funzioni logiche. Si parte sempre dalla tabella delle verità, iniziando a disegnare un riquadro in base al numero di ingressi.

Con 2 ingressi:

Con 3 ingressi:

Con 4 ingressi:

Con 5 ingressi si utilizzano 2 riquadri da 4 ingressi. Con 6 ingressi servono 4 riquadri da 4 ingressi, ma diventa evidente che la complessità cresce in modo esagerato e, quindi, si preferisce ricorrere al metodo di Quine-McCluskey fondato su un algoritmo più efficiente e più facilmente realizzabile con un programma.

Ma torniamo al nostro caso con 3 variabili e vediamo come utilizzare la mappa di Karnaugh.

Riporto la tabella delle verità perchè ci serve averla sott'occhio:

A B C V mintermine
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1 \overline{A} \  B \ C
1 0 0 1 A \ \overline{B} \ \overline{C}
1 0 1 1 A \ \overline{B} \ C
1 1 0 1 A \ B \ \overline{C}
1 1 1 1 \ A \ B \ C

Riprendiamo la mappa per 3 ingressi ed osserviamo che il primo riquadro in alto a destra è relativo agli ingressi A = 0, B = 0 e C = 0. In tal caso l'uscita V vale 0 perciò andiamo a scrivere 0 nel primo riquadro:

Procediamo col successivo riquadro a destra relativo agli ingressi A = 0, B = 1 e C = 0 dove V vale ancora 0 e scriviamo 0 nel secondo riquadro:

Poi nel terzo riquadro dove A = 1, B = 1 e C = 0 dato che V = 1 vi trascriviamo 1:

Insomma abbiamo compreso come compilare la mappa ed alla fine otteniamo:

Ora dobbiamo raggruppare in modo opportuno tutti gli 1 a due o a quattro per volta solo se adiacenti, con lo scopo di minimizzare la funzione risultante. Notiamo subito che vi sono quattro 1 adiacenti:

Ma questo raggruppamento in rosso che significato ha? Significa che l'uscita V vale 1 quando:
V = A B \overline{C} + A \overline{B} \overline{C} + A B C + A \overline{B} C

che non sono altro che 4 delle 5 condizioni evidenziate dalla tabella delle verità.
Il fatto di averle raggruppate ci consente di notare che la C, nella mappa, compare nel gruppo sia con 1 sia con 0, ovvero qualunque valore abbia C il risultato non cambia e, perciò, possiamo fare a meno di considerarla:
V = A B + A \overline{B} + A B + A \overline{B}

Ancora notiamo che anche la B appare sia con 1 sia con 0, eliminiamo pure essa:
\ V = A + A + A + A

In sostanza abbiamo semplificato ben 4 condizioni in un semplice:
\ V = A

Ora, però, rimane un 1 isolato, corrispondente alla rimanente condizione ÂBC per cui dovremmo scrivere:
V = A + \overline{A} B C

che, guarda caso, è identica a quanto ottenuto nella (1) dopo numerosi passaggi di semplificazioni booleane.

Insomma cominciamo ad apprezzare e ringraziare Karnaugh per il suo metodo di minimizzazione grafico-visuale. Ma procediamo. Esattamente come abbiamo fatto per semplificare ulteriormente la funzione logica con le regole dell'algebra, anche qui applichiamo un trucco e raggruppiamo quell'uno rimasto solo col suo vicino:

Che, guarda caso, corrisponde a scrivere:
V = ABC + \overline{A} B C + A

esattamente come nella (2)!

Ora, in quest'ultimo gruppo blu, notiamo che è A, ad apparire sia con 0 sia con 1 e, quindi, possiamo eliminarla dai 2 elementi corrispondenti:
\ V = BC + B C + A

ed eliminando la ridondanza:
\ V = A + BC

Quindi, in sostanza, karnaugh ci permette di semplificare in modo agevole e veloce senza applicare le regole dell'algebra booleana ed il nostro caso, molto semplice, ci ha agevolmente permesso di confrontare i due metodi.

In conclusione prendendo opportunamente i raggruppamenti massimi di 1 della Mappa di Karnaugh si ottiene una funzione logica formulata col minor numero di termini e, quindi, col numero minore di porte logiche. E, a tal proposito, è giunto il momento, finalmente, di passare dalla funzione logica al circuito logico.

9 - Circuito Logico

Partendo dalla funzione logica sopra ottenuta:
\ V = A + BC

e ricordando che il + identifica una OR e che BC sottintende B AND C:
\ V = A \ OR \ \left( B \ AND \ C \right)

per realizzare il circuito abbiamo bisogno di una porta OR e di una porta AND:

Ora, per realizzare questo semplice circuito, dovremmo andare a comprare un 74LS08 per la porta AND ed un 74LS32 per la porta OR. Quindi dovremmo usare 2 circuiti integrati. Però la teoria ci dice che qualunque porta elementare può essere realizzata con sole porte NOR o sole porte NAND. Vogliamo verificare ciò? Vediamo se riusciamo ad usare un solo tipo di porta, cominciando con le NOR e poi, se ne avremo voglia e se sarà il caso, vedremo le NAND. Per i più impazienti passate pure al paragrafo 12 ed eventualmente ritornate qui per capire come abbiamo semplificato il circuito.

10 - Circuito con porte NOR

Per ottenere una OR partendo da una NOR, ci basta negare l'uscita della NOR. Per cui il problema si riduce a trovare il modo di realizzare una NOT con la NOR e per fare ciò basta unire gli ingressi:

e, quindi, ottenere la OR:

Ora tentiamo di realizzare la AND con porte NOR. Con la tabella delle verità per la AND affiancata a quella per la NOR ci accorgiamo che sono una l'inversa dell'altra:

 \ X  \ Y AND NOR
0 0 0 1
0 1 0 0
1 0 0 0
1 1 1 0

e che, quindi, ci basta invertire gli ingressi con due NOT che già sappiamo fare:

Ora siamo pronti a convertire il nostro circuito V = A + BC con sole porte NOR:

Questo circuito con porte NOR non è ulteriormente semplificabile. Per realizzarlo occorrono ben 5 porte NOR e, siccome nel 74LS02 vi sono solo 4 porte NOR, ci servirebbero due integrati e tanto varrebbe, allora, usare i due integrati AND e OR. Prima di rinunciare alla semplificazione vediamo che succede con le porte NAND.

11 - Circuito con porte NAND

Una NAND è solo una AND negata, basta allora porre una NOT all'uscita della NAND per ritrovarci con una AND. Il problema si riduce, quindi, nel realizzare una NOT, il che si ottiene collegando insieme gli ingressi della NAND:

Ora possiamo facilmente ottenere la AND:

Ci resta da trovare il modo di realizzare la OR con sole porte NAND.

Per fare ciò ci conviene evidenziare la tabella delle verità con 2 ingressi X e Y e confrontare le uscite di AND, NAND e OR

 \ X  \ Y AND NAND OR
0 0 0 1 0
0 1 0 1 1
1 0 0 1 1
1 1 1 0 1

dove osserviamo che l'uscita NAND è il rovescio dell'uscita OR e che corrisponderebbe all'uscita OR se gli ingressi fossero rovesciati anch'essi ovvero negati:

 \overline{X}  \overline{Y} NAND
1 1 0
1 0 1
0 1 1
0 0 1

Ecco ora si vede bene che una NAND con ingressi negati corrisponde ad una OR con gli ingressi non invertiti. Già sappiamo come creare una NOT con porta NAND e quindi possiamo ottenere la OR ponendo una NOT su ogni ingresso della NAND:

Infine ecco come appare il circuito V = A + BC con sole porte NAND:

Accidenti, anche qui abbiamo 5 porte! Però, un momento, cosa notiamo? Notiamo che vi sono due NOT in successione che si elidono a vicenda: direi di eliminarle dal circuito. Ecco, in fine, il nostro circuito nella versione finale e minimizzata:

Il tentativo di realizzare il circuito con sole porte NAND è andato a buon fine: ci basta un solo integrato di cui useremo 3 porte delle 4 disponibili. Procediamo sicuramente con le NAND montando il circuito integrato 74LS00 su una basetta breadboard per verificarne il funzionamento.

12 - Circuito su BreadBoard

Per provare il nostro circuito ci conviene predisporre una Breadboard col circuito integrato 74LS00, un paio di condensatori sul pin di alimentazione per smorzare le fluttuazioni di tensione e un LED con resistenza di limitazione corrente. Il tutto come da seguente schema:

dove abbiamo impostato gli ingressi A, B e C a valore 0 per cui l'uscita V sarà 0 anch'essa, ma il LED apparirà acceso per i motivi già visti nel precedente articolo. Infatti:

V = A + BC

V = A + BC

Bene! Non ci resta che provare le 8 combinazioni degli ingressi collegando i 3 fili blu, connessi sugli ingressi, di volta in volta al polo positivo o negativo rispettivamente per i valori 1 o 0. Come già osservato il LED si accende quando l'uscita è 0.

Per concludere l'esperimento verifichiamo col multimetro che tutti i valori di tensione (VOL, VOH, VIL, VIH) e corrente (IOL, IOH, IIL, IIH) rientrino nei parametri indicati nel data sheet. E con ciò, per ora, abbiamo terminato.

13 Conclusione

Abbiamo effettuato una bella carrellata sulla realizzazione di un circuito digitale partendo dall'idea, estrapolando la funzione logica attraverso vari metodi di minimizzazione, semplificando ulteriormente il circuito con una oculata scelta della tipologia di porta logica e, infine, testando i componenti e verificandone la funzionalità.

Dobbiamo, però, notare la macchinosità del provare le varie combinazioni infilando e scollegando i cavetti degli ingressi nella BreadBoard a mano! E che dire della verifica dell'uscita con un LED che si accende al contrario? Sarà utile provvedere a questi difetti operativi, ma l'articolo si è esteso abbastanza: vedremo questi aspetti prossimamente.

Come di consueto, ogni osservazione è gradita.

16

Commenti e note

Inserisci un commento

di ,

Grazie Internew per i complimenti.
Le richieste conviene inserirle nel Forum.
La tua l'ho inserita in Automazione Civile col titolo Ventola con sensore di umidità.

Rispondi

di ,

Salve a tutti, e complimenti per la tua professionalità. Sto cercando una ventola con un sensore di umidità relativa commutabile, Sapete indicarmi qualche azienda che le vende. Su internet non trovato nulla che possa soddisfarmi. Caratteristiche richieste: - ventola a muro con sportello di apertura e chiusura automatica su On Off. - sensore integrato di umidità relativa programmabile. Saluti a tutti

Rispondi

di ,

la mia proposta non è nulla di che: è solo una diversa riorganizzazione in unta sola tabella di quanto già hai scritto in due tabelle: http://i.imgur.com/rl8b0.png

Rispondi

di ,

Per Gammaray: grazie e spero di si!
Per franx: Ti riferisci alla tabella del paragrafo 4 - Valori di ingressi e uscite? Buona idea per migliorarne la comprensibilità: grazie.

Rispondi

di ,

Metterei due colonne: "Ingresso" e "Uscita" con il nome delle variabili (A,B,C, Y1, Y2 ecc.) Poi a fianco un'altra colonna "Attributo", con la descrizione dell'informazione associata all'ingresso/uscita e infine ancora un'altra colonna "Valori" associando a 1 e 0 il relativo significato

Rispondi

di ,

Sia questo che l'articolo precedente sono molto esaustivi ed interessanti, sia sul lato teorico che su quello pratico, complimenti! Ce ne saranno di prossimi?

Rispondi

di ,

Grazie a tutti! Mi fa piacere che l'articolo sia stato gradito. Spero possa essere utile a chi non ha avuto la possibilità di studiare l'argomento a scuola. L'esposizione non è sicuramente esaustiva, ma l'esempio concreto abbinato a poche note teoriche ha proprio lo scopo di incuriosire e stimolare successivi approfondimenti.

Rispondi

di ,

Parbleu! Chapeau! e per stare sul francese anche Platini`. Ottimo l'impegno profuso per scrivere tutta quella roba!

Rispondi

di ,

Mi hai fatto ricordare le lezioni di elettronica digitale delle scuole superiori. Bel lavoro.

Rispondi

di ,

Bell'articolo Roberto. Grazie mille!

Rispondi

di ,

Bella domanda! Ti rispondo nel Forum di Elettronica, così esaminiamo anche il parere di altri. Titolo post: Elettronica Digitale vs Microcontrollori

Rispondi

di ,

Mi sono ispirato al registro flip-flop :) Ma con l'avvento dei microcontrollori e del maggiore spazio dedicato ai software piuttosto che all'Hardware, l'elettronica digitale ha ancora un suo posto rilevante?

Rispondi

di ,

Bella lì! avevo proprio bisogno di un bell'articolo che spiegasse queste cose! :)

Rispondi

di ,

Grazie admin, troppo buono! Grazie VRI. Per l'autoritenuta direi, di primo acchito, trattasi di logica sequenziale dato che è presente un elemento di memoria poichè al rilascio del pulsante l'uscita non torna come prima ma rimane attiva (che è proprio lo scopo dell'autoritenuta).

Rispondi

di ,

Una bella lezione di notevole valore didattico e pratico. Complimenti!

Rispondi

di ,

Bell'articolo :) Io per esercitarmi nell'elettronica digitale ho realizzato un'autoritenuta elettronica...è considerabile come logica sequenziale e non più combinatoria?

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.