Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Sintesi Funzione Booleana con porte logiche

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utenteg.schgor, Foto UtenteIsidoroKZ, Foto UtenteBrunoValente, Foto Utentecarloc, Foto UtenteDirtyDeeds

0
voti

[1] Sintesi Funzione Booleana con porte logiche

Messaggioda Foto Utentevincenzoflaminio » 19 gen 2010, 2:52

Salve , qualcuno saprebbe dirmi come faccio a determinare quali porte scegliere e quante ne servono per sintetizzare una funzione Booleana?
vi faccio un esempio : Lo schema dell'Half Adder ha bisogno di 3 porte AND e una OR da come lo vedo dalle diapositive su cui studio ed effetivamente riesco anche a capirne il funzionamento ... ma il problema è se nel caso volessi provarci io a fare uno schema con le porte logiche con quali criteri andrei a determinare quali e quante porte usare ?
Avatar utente
Foto Utentevincenzoflaminio
0 2
 
Messaggi: 9
Iscritto il: 19 gen 2010, 2:46

0
voti

[2] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto UtenteIsidoroKZ » 19 gen 2010, 3:23

Le funzioni booleane si possono realizzare come somma di prodotti oppure come prodotto di somme, a seconda di che cosa copri sulle mappe di karnaugh. Verrebbe quindi da dire che si devono prendere delle AND e delle OR.

In realta` si puo` fare tutto con delle NAND, usando demorgan, e quindi copri gli uni facendo somme di prodotti e implementi tutto con delle nand. Si puo` fare il duale usando le NOR e coprendo gli zeri.

In generale quando hai la funzione scritta come somma di prodotti, ogni "addendo" che sommi richiede una NAND, con tanti ingressi da far entrare le variabili che ci sono in quel termine. Infine ti serve ancora una NAND per sommare i vari termini.

Ad esempio Y=AB+BC+DEF servono due NAND a due ingressi per AB e BC, e altre due a tre ingressi per DEF e poi per sommare i tre termini e ottenere Y.

Il tutto a parte gli invertitori che potrebbero servire per invertire gli ingressi, semplificazioni varie che si possono fare...
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
104,7k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 18582
Iscritto il: 17 ott 2009, 0:00

0
voti

[3] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto Utentevincenzoflaminio » 19 gen 2010, 15:41

IsidoroKZ ha scritto:Le funzioni booleane si possono realizzare come somma di prodotti oppure come prodotto di somme, a seconda di che cosa copri sulle mappe di karnaugh. Verrebbe quindi da dire che si devono prendere delle AND e delle OR.

Io copro gli uno adiacenti a formare quadrati/ rettangoli e nella funzione ricavata uso la somma logica è possibile un altro metodo??

IsidoroKZ ha scritto:In generale quando hai la funzione scritta come somma di prodotti, ogni "addendo" che sommi richiede una NAND, con tanti ingressi da far entrare le variabili che ci sono in quel termine. Infine ti serve ancora una NAND per sommare i vari termini.

Ad esempio Y=AB+BC+DEF servono due NAND a due ingressi per AB e BC, e altre due a tre ingressi per DEF e poi per sommare i tre termini e ottenere Y.

Il tuo esempio posso ricavarlo senza applicare De Morgan ovvero somme di prodotti ecco un esempio dell'uscita RIPORTO in un FULL ADDER
Immagine
C= AB + AC + BC simile alla tua funzione Y=AB + BC+ DEF senza applicare De Morgan
A questo punto utilizzerei 3 porte AND per (A*B) , (A*C) , (B*C), e una porta OR a tre ingressi (con ingressi le uscite delle rispettive porte AND) con uscita il RIPORTO è giusto?
Avatar utente
Foto Utentevincenzoflaminio
0 2
 
Messaggi: 9
Iscritto il: 19 gen 2010, 2:46

0
voti

[4] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto UtenteIsidoroKZ » 19 gen 2010, 18:16

vincenzoflaminio ha scritto:Io copro gli uno adiacenti a formare quadrati/ rettangoli e nella funzione ricavata uso la somma logica è possibile un altro metodo??

Potresti fare lo stesso coprendo gli zeri: al posto di ottenere una somma di prodotti, otterresti un prodotto di somme.
vincenzoflaminio ha scritto:Il tuo esempio posso ricavarlo senza applicare De Morgan ovvero somme di prodotti ecco un esempio dell'uscita RIPORTO in un FULL ADDER
Immagine
C= AB + AC + BC simile alla tua funzione Y=AB + BC+ DEF senza applicare De Morgan
A questo punto utilizzerei 3 porte AND per (A*B) , (A*C) , (B*C), e una porta OR a tre ingressi (con ingressi le uscite delle rispettive porte AND) con uscita il RIPORTO è giusto?


Si` e` giusto. Se pero` vuoi usare solo porte nand (riduci il magazzino di componenti che devi tenere) puoi fare un circuito come questo:
adder.gif
adder.gif (1.06 KiB) Osservato 8895 volte
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
104,7k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 18582
Iscritto il: 17 ott 2009, 0:00

0
voti

[5] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto Utenteg.schgor » 20 gen 2010, 1:14

Vedo che non è più di moda una tecnica molto usata agli inizi della logica statica
cablata (con elementi logici a componenti discreti, costituita da soli NOR).
Allora il progetto veniva svolto con gli elementi logici fondamentali (AND,OR,NOT)
in base alla naturale logica dell'impianto e successivamente "convertito" a NOR
(solo dopo una certa esperienza si poteva progettare direttamente con NOR !)

Per tale trasformazione si utilizzavano naturalmente le equivalenze di DeMorgan,
ma ciò avveniva molto semplicemente in forma grafica adattando gli AND e gli OR
del progetto originale, cioè mettendo opportunamente dei "cerchietti" (negazione) ai rispettivi
ingressi in modo da conservare la funzionalità, compensando, per così dire, le uscite negate.

Le equivalenze schematiche del NOR (e per completezza anche del NAND), sono queste:
ElemLog.GIF
ElemLog.GIF (2.67 KiB) Osservato 8839 volte

Le espressioni delle uscite riproducono infatti le forme equivalenti di DeMorgan.
(Fate la prova ad es. con l'ultimo schema di IsidoroKZ)
Avatar utente
Foto Utenteg.schgor
53,7k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16241
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[6] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto Utentevincenzoflaminio » 20 gen 2010, 2:58

IsidoroKZ ha scritto:Si` e` giusto. Se pero` vuoi usare solo porte nand (riduci il magazzino di componenti che devi tenere) puoi fare un circuito come questo:
adder.gif


Lo schema che vedo è esattamente come lo farei però con a sinistra le AND e a destra la OR , vedo che tu semplicemente applicando tutte NAND risolvi la funzione comunque ... questo tuo procedimento vale sempre?

Ultimo quesito se nel caso dovessi fare questo stesso schema con ingressi a 2 (ottimizzazione esatta a 2 livelli)

Grazie mille per le risposte a te e a g.schgor gentilissimi...
Avatar utente
Foto Utentevincenzoflaminio
0 2
 
Messaggi: 9
Iscritto il: 19 gen 2010, 2:46

0
voti

[7] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto UtenteIsidoroKZ » 20 gen 2010, 5:10

vincenzoflaminio ha scritto:Lo schema che vedo è esattamente come lo farei però con a sinistra le AND e a destra la OR , vedo che tu semplicemente applicando tutte NAND risolvi la funzione comunque ... questo tuo procedimento vale sempre?

Se la funzione e` rappresentata come somma di prodotti, si`, vale sempre. La ragione e` questa: Partiamo dalla funzione originale Y=AB+AC+BC neghiamo due volte l'espressione (stile ufficio lavori inutili)

Y=\overline{(\overline{AB+AC+BC})}.

Ora prendiamo la negazione di sotto, che sta negando tre termini in OR. Applichiamo De Morgan a questi OR. Dobbiamo togliere la barra lunga, negare i termini all'ingresso dell'OR e trasformare l'OR in AND: Y=\overline{(\overline{AB})(\overline{AC})(\overline{BC})}

I termini del tipo (\overline{AB}) non sono nient'altro che il NAND degli ingressi AB (e cosi` via). Il risultato di queste tre NAND e` "moltiplicato" fra di loro e il risultato ancora negato. E questo vuol dire fare il NAND dei tre risultati. TUtto questo e` esattamente cosa e` rappresentato nello schema.

Come vedi una rete AND-OR (somma di prodotti) e` equivalente a una rete NAND NAND, e una rete fatta con tutte porte dello stesso tipo e` spesso piu` conveniente da costruire.
vincenzoflaminio ha scritto:Ultimo quesito se nel caso dovessi fare questo stesso schema con ingressi a 2 (ottimizzazione esatta a 2 livelli)

Non ho capito. Stai parlando di porte con due ingressi o di reti a due livelli?
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
104,7k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 18582
Iscritto il: 17 ott 2009, 0:00

0
voti

[8] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto UtenteIsidoroKZ » 20 gen 2010, 6:47

vincenzoflaminio ha scritto:Il tuo esempio posso ricavarlo senza applicare De Morgan ovvero somme di prodotti ecco un esempio dell'uscita RIPORTO in un FULL ADDER
Immagine


Devo dire che non ho "capito" cosa significano le lettere maiuscole e minuscole (dovrebbe essere negato/diritto) e come sono piazzati i termini sulla mappa. Secondo me ha usato una disposizione per le variabili a 1 e 0 sulla mappa, poi ha copiato da qualche parte la mappa per generare il carry che faceva uso di un'altra disposizione, e quindi ha fatto casino :)

La mappa "standard" (quella a cui sono abituato io) per il carry e` qui verso meta` della pagina. La figura e` questa:
Immagine.

Invece la mappa con le varabili sistemate come le mette l'autore del sito karnaughmap.eu e` visibile qui al fondo di pagina 24. Anche questa immagine e` riportata per comodita` qui dietro:

Karnaugh.gif
Karnaugh.gif (5.18 KiB) Osservato 8761 volte


L'autore del sito da cui hai preso la mappa, furbo come una vulpecula astuta, ha usato una convenzione e piazzato gli uni secondo la disposizione dell'altra convenzione. Bestia!

E uno cosi` fa un sito per spiegare come si fa una mappa di Karnaugh? Non ha voglia di "fare l'esercizio" e copia il piazzamento degli 1 senza accorgersi (o senza sapere) che e` un'altra convenzione di numerazione delle caselle dell mappa? Come diceva quello la` "ma mi faccia il piacere! mi faccia!" E tu impara a non fidarti di tutto quello che trovi in internet (incluso questo messaggio).

Comunque l'equazione che hai scritto AB+AC+AC e` corretta e genera il riporto.

Ricorda anche che quando si coprono le mappe di Karnaugh si assume che le variabili siano disponibili sia in forma diritta che negata, e quindi eventualmente potrebbero servire degli inverter per negare alcuni ingressi.

Quanto ti ho detto sulle in precedenza sull reti fatte con OR-AND o NAND-NAND e` la copertura standard in somma di prodotti. Ma per circuiti semplici si possono trovare ad occhio delle reti "piu` semplici". Per esempio dalla funzione Y=AB+AC+BC si puo` "mettere in evidenza" ad esempio A dai primi due termini, e si ha Y=A(B+C)+BC e questo si puo` realizzare con questa rete

adder1.gif
adder1.gif (1 KiB) Osservato 8775 volte


Si usano solo porte a due ingressi (mentre l'altra soluzione aveva porte a tre ingressi), ma...
1) La logica non e` piu` a due livelli, diventa a tre, quindi piu` lenta
2) Non si puo` piu` fare la trasformazione in tutte nand, quindi bisogna proprio usare porte di tipo diverso.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
104,7k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 18582
Iscritto il: 17 ott 2009, 0:00

0
voti

[9] Re: Sintesi Funzione Booleana con porte logiche

Messaggioda Foto Utentevincenzoflaminio » 20 gen 2010, 16:41

IsidoroKZ ha scritto:Non ho capito. Stai parlando di porte con due ingressi o di reti a due livelli?

Si due ingressi alle porte logiche.
Riepilogando:l In un circuito a due livelli (somma di prodotti) la
riduzione del numero di prodotti riduce sia l’area che
il ritardo. L’ottimizzazione dei circuiti a due livelli segue,
quindi, il criterio molto semplice di identificare la
copertura minima Alla copertura minima corrisponde il circuito a due
livelli di area minima e ritardo minimo

Questo è quanto vedo dalla diapositiva , purtroppo è molto riassuntiva non è spiegata bene..
Tra l'altro queste cose dovrei farle anche nel linguaggio SIS , per ora sn riuscito a simulare un trascodificatore BCD 7 seg. , il full adder e altre cosine... ma adesso mi chiede di questa ottimizzazione ESATTA a 2 livelli
Avatar utente
Foto Utentevincenzoflaminio
0 2
 
Messaggi: 9
Iscritto il: 19 gen 2010, 2:46


Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Google [Bot] e 18 ospiti