PDA

View Full Version : Funzioni logiche di N/P MOS e CMOS: chi mi spiega


Darker
01-11-2008, 16:04
Ciao ragazzi.

Sarò un ciuco io, ma sebbene mi è chiaro il procedimento di progettazione di una porta (N)AND/OR in logica MOS/CMOS, non mi è chiaro come si progetta una cascata di porte.

Per essere più chiari, come si realizza ad esempio una roba tipo: A·B + C·D ?

Grazie :)

hibone
01-11-2008, 16:40
Ciao ragazzi.

Sarò un ciuco io, ma sebbene mi è chiaro il procedimento di progettazione di una porta (N)AND/OR in logica MOS/CMOS, non mi è chiaro come si progetta una cascata di porte.

Per essere più chiari, come si realizza ad esempio una roba tipo: A·B + C·D ?

Grazie :)

intendi a livello di hw sul silicio oppure vuoi sapere come si passa dall'espressione che hai scritto alla rappresentazione grafica della rete logica tipo questa?

http://www.febat.com/Elettronica/Elettronica_porte_logiche.jpg

negator136
01-11-2008, 16:49
Ciao ragazzi.

Sarò un ciuco io, ma sebbene mi è chiaro il procedimento di progettazione di una porta (N)AND/OR in logica MOS/CMOS, non mi è chiaro come si progetta una cascata di porte.

Per essere più chiari, come si realizza ad esempio una roba tipo: A·B + C·D ?

Grazie :)


ti è chiaro almeno come si realizza (e sopratutto perchè si realizza così) un inverter, cioè la funzione logica che ti restituisce il valore logico opposto rispetto a quello in ingresso? :)

questo per intenderci: http://it.wikipedia.org/wiki/Immagine:CMOS_Inverter.svg

Darker
01-11-2008, 16:57
In effetti non sono stato chiaro, chiedo venia ^^

Non parlo di schemi, parlo proprio di porte logiche realizzare con transistor reali.

Per intenderci:

Queste sono una NOR e una NAND realizzate in tecnlogia CMOS.
http://people.seas.harvard.edu/~jones/es154/lectures/lecture_7/MOS/cmos_nor2.jpghttp://people.seas.harvard.edu/~jones/es154/lectures/lecture_7/MOS/cmos_nand2.jpg

Utilizzando questi circuiti, ed eventualmente degli inverter, come realizzo la funzione che ho scritto poco prima?

hibone
01-11-2008, 17:31
In effetti non sono stato chiaro, chiedo venia ^^

Non parlo di schemi, parlo proprio di porte logiche realizzare con transistor reali.

Per intenderci:

Queste sono una NOR e una NAND realizzate in tecnlogia CMOS.
http://people.seas.harvard.edu/~jones/es154/lectures/lecture_7/MOS/cmos_nor2.jpghttp://people.seas.harvard.edu/~jones/es154/lectures/lecture_7/MOS/cmos_nand2.jpg

Utilizzando questi circuiti, ed eventualmente degli inverter, come realizzo la funzione che ho scritto poco prima?


sempre di schema si tratta... :)
solo che è di basso livello :)

le strade sono principalmente due
puoi, in modo pedissequo, applicare gli invertitori, ad ingressi e/o uscite, di nand e nor, trasformandole nei complementi and ed or, quindi avrai

una circuito and (chiamiamolo E) con le tensioni pari ad Va e Vb, un circuito and (chiamiamolo F) con le tensioni pari a Vc e Vd, e quindi le tensioni di uscita Ve e VF vengono applicate ad un circuito OR


in alternativa, come soluzione più "intelligente" occorre passare dall'espressione sopra scritta con and e or, all'espressione equivalente scritta in nand e nor, sfruttando l'algebra di bool, quindi si isolano i singoli operatori, poi per ciascuno di essi si applica una delle due porte in esame...

http://topserver.mi.infn.it/mies/labeletiv/centro/capitolo_4.pdf

Darker
01-11-2008, 19:11
Wow, eccezionale quel pdf :eek:

L'ho visto un po' e ammetto di avere serie difficoltà. Ora mi studio tutto meglio e vedo se ne vengo a capo, grazie mille ragazzi! :D

Darker
01-11-2008, 22:49
Credo di aver capito! :D
Quel PDF è davvero sensazionale! :)

Ho disegnato quel circuito che mi sono "assegnato", controllereste se è corretto?

Ecco il LINK (http://darkerino.altervista.org/_altervista_ht/Circuito1.jpg)

Grazie :)

sasa83
02-11-2008, 00:46
Credo di aver capito! :D
Quel PDF è davvero sensazionale! :)

Ho disegnato quel circuito che mi sono "assegnato", controllereste se è corretto?

Ecco il LINK (http://darkerino.altervista.org/_altervista_ht/Circuito1.jpg)

Grazie :)

è sbagliato! l'AND da 1 in uscita quando uno e l'altro ingresso sono 1, quindi sia (a OR b) e (c OR d) devono essere 1, quindi ad esempio se avessi: b=d=1 e a=c=0 dovresti avere 1 in uscita ma dal circuito che hai tu viene 0, anzi in teoria ti verrebbe in alta impedenza :confused: :confused:
devi prima capire che la rete cmos è una rete invertente, la sintesi non può essere fatta così...non ho letto quel pdf, mi baso su quello che mi ricordo dai corsi di ele di base, perchè poi nei successivi l'approccio diventa un po' diverso e dipende dalle esigenze.
devi invertire prima di tutto l'uscita e poi nella sintesi del pull-down ad ogni or corrisponde un parallelo e all'and una serie di nmos, nel pull-up è l'opposto (usando poi i pmos). oppure puoi anche specchiare per risparmiare transistor nelle reti che lo permettono...

Wilcomir
02-11-2008, 08:05
comunque a disegnare sei davvero preciso :eek:

ciao!

hibone
02-11-2008, 11:00
Credo di aver capito! :D
Quel PDF è davvero sensazionale! :)

Ho disegnato quel circuito che mi sono "assegnato", controllereste se è corretto?

Ecco il LINK (http://darkerino.altervista.org/_altervista_ht/Circuito1.jpg)

Grazie :)

scusami ma decisamente qualcosa non mi torna...

Darker
02-11-2008, 11:17
Uhm... allora non ho capito niente :cry:

Ora controllo e vedo di capire in funzione di quello che mi avete consigliato! :)

hibone
02-11-2008, 11:51
Uhm... allora non ho capito niente :cry:

Ora controllo e vedo di capire in funzione di quello che mi avete consigliato! :)

nel disegno che hai postato mancano un'indicazione dell'uscita, e a quanto mi è parso di capire, la porta logica che esegue l'and tra i due or...

negator136
02-11-2008, 11:56
cerco di spiegartelo in maniera iper-intuitiva e semplificata...

parti dalla rete N (quella P viene di conseguenza):
- prendi la tabella delle verità della tua rete e identifica quando l'uscita logica è "0"
- se ad esempio hai A*B=0, allora metti due mos in serie (uno source a massa, l'altro con source sul drain di quello prima e drain in uscita): in questo modo quando entrambi gli ingressi A e B saranno "1", i mos saranno ben accesi e creerai un cammino a bassa impedenza tra uscita e massa, ovvero abbasserai il livello dell'uscita. in tutti gli altri casi i mos saranno spenti creando un circuito aperto tra uscita e massa (sarà la rete P ad alzare il segnale logico dell'uscita)
- se invece hai A+B=0, allora metti due mos in parallelo (endrambi i source a massa e i drain all'uscita): così sarà sufficiente che uno dei due ingressi sia "1" per accendere il gate e abbassare il livello dell'uscita.
- se hai (A+B)*C=0 allora metti due mos in parallelo (collegando i gate a A e B) e un terzo mos in serie a questi due, ovvero con il suo source all'uscita.

e così via... (A*B)+C=0 sarà la serie di di due mos (A e B) in parallelo a un terzo mos (C)... (A*B)+(C*D)=0 sara il parallelo di due serie (A e B da una parte e C e D dall'altra)

puoi trovare diverse soluzioni per ciascuna rete... ad esempio (A+B)*C equivale a A*C+B*C... ma in questo caso dovrai usare 4 transistori (una serie di due paralleli) invece che 3 (un transistore in serie a un parallelo).

la rete P si costruisce banalmente ricopiando la rete N sostiduendo ad ogni serie di transistore un parallelo degli stessi e viceversa. ovviamente funziona anche ricorsivamente: se hai una serie di paralleli di transistori N, allora la rete P sarà un parallelo di serie degli stessi transistori.

se quest'ultima parte non ti è chiara, cercherò di rispiegartela meglio... per ora è importante che cominci a capire come realizzare la parte N :)

lowenz
02-11-2008, 12:25
Il tuo nome dice tutto :D

Cmq certo si fa così, si fa rete che fa la funzione complementare e la si inverte :p

Darker
02-11-2008, 13:12
CUT

Grazie! :)
Ho letto, e credo di aver capito ciò che hai scritto.
Nel tuo esempio, se ho A AND B, devo fare così (http://darkerino.altervista.org/_altervista_ht/CircuitoA.jpg).
Solo che quel circuito dovrebbe essere una NAND, non una AND. Se la AND si fa così, allora la NAND come si fa?

sasa83
02-11-2008, 13:18
Grazie! :)
Ho letto, e credo di aver capito ciò che hai scritto.
Nel tuo esempio, se ho A AND B, devo fare così (http://darkerino.altervista.org/_altervista_ht/CircuitoA.jpg).
Solo che quel circuito dovrebbe essere una NAND, non una AND. Se la AND si fa così, allora la NAND come si fa?

aridaje :doh: ....quella è una nand, per avere l'and DEVI NEGARE L'USCITA!!!!!

Darker
02-11-2008, 13:38
aridaje :doh: ....quella è una nand, per avere l'and DEVI NEGARE L'USCITA!!!!!

Ah, è vero :cry:
Negator136 ha detto che se ho A*B =0 devo fare così... ma quella è una NAND, non una AND :D

Non mi maltrattare, sono niubbo ma tanto volenteroso! :cry:
:D

dupa
02-11-2008, 13:40
se i ricord non mi ingannano, quando facevo algebra, se non sbaglio tutto si poteva ricondurre a due operatori logici di base, ipotizzo quindi che il trucco potrebbe esser ricordarsi quella faccenda applicandola alle porte logiche disponibili.. no? :D

sasa83
02-11-2008, 13:44
Ah, è vero :cry:
Negator136 ha detto che se ho A*B =0 devo fare così... ma quella è una NAND, non una AND :D

Non mi maltrattare, sono niubbo ma tanto volenteroso! :cry:
:D

no no, e chi ti maltratta!!??

se i ricord non mi ingannano, quando facevo algebra, se non sbaglio tutto si poteva ricondurre a due operatori logici di base, ipotizzo quindi che il trucco potrebbe esser ricordarsi quella faccenda applicandola alle porte logiche disponibili.. no? :D

in teoria puoi fare una rete utilizzando solo porte nand, ma nella pratica non si fa mai....è uno spreco enorme di transistor.

hibone
02-11-2008, 14:00
in teoria puoi fare una rete utilizzando solo porte nand, ma nella pratica non si fa mai....è uno spreco enorme di transistor.

dillo alla intel e alle sue nand flash :asd:


(scherzo chiaramente..)

Darker
02-11-2008, 14:02
Click (http://darkerino.altervista.org/_altervista_ht/circuito2.jpg) :sperem:

sasa83
02-11-2008, 14:25
Click (http://darkerino.altervista.org/_altervista_ht/circuito2.jpg) :sperem:

e ma allora lo fa apposta :muro: :muro:
dov'è l'inverter????

Darker
02-11-2008, 14:28
e ma allora lo fa apposta :muro: :muro:
dov'è l'inverter????

Oggesù, quale inverter? :eek:

Quelle sono tutte Nand :eek:

Sarebbe (A NAND B) NAND (C NAND D)

sasa83
02-11-2008, 14:32
Oggesù, quale inverter? :eek:

Quelle sono tutte Nand :eek:

Sarebbe (A NAND B) NAND (C NAND D)

what :confused: :confused: ?
non ho capito niente allora....scusa la rete che volevi fare non è (a+b)(c+d)?

Darker
02-11-2008, 14:37
what :confused: :confused: ?
non ho capito niente allora....scusa la rete che volevi fare non è (a+b)(c+d)?

Eh... non ci fare caso... In realtà ho fatto (ab)+(cd) == (A NAND B) NAND (C NAND D)...

Lì invece doveva essere (A NOR B) NOR (C NOR D)

Cenere sul capo :doh:

Darker
02-11-2008, 14:53
click (http://darkerino.altervista.org/_altervista_ht/circuito3.jpg):muro:

E' corretto? :|

Wilcomir
02-11-2008, 15:05
click (http://darkerino.altervista.org/_altervista_ht/circuito3.jpg):muro:

E' corretto? :|

non saprei, tuttavia non hai segnato l'uscita... anche se si intuisce dov'è :)

ciao!

Darker
02-11-2008, 15:09
non saprei, tuttavia non hai segnato l'uscita... anche se si intuisce dov'è :)

ciao!

Vero! :D
Grazie :)

sasa83
02-11-2008, 15:10
click (http://darkerino.altervista.org/_altervista_ht/circuito3.jpg):muro:

E' corretto? :|

(A+B)(C+D)

scusa il disegno schifoso :p

Darker
02-11-2008, 15:29
No, figurati. Si capisce benissimo.

Il mio schema, quindi, è corretto... eccetto per l'uscita, che va negata.

Da come leggo sul buon PDF, e dai vostri commenti, mi pare di capire che se voglio uno schema di una funzione posso:
a) cercare la funzione negata ottenuta evidenziando gli zero della k-mappa, e scrivere quella
b) scrivere la versione affermata e negare l'uscita.

Edit: pensandoci bene, nel tuo schema (e di conseguenza nel mio ultimo), non dovrebbe essere più corretto mettere in serie tra loro i due blocchi (A serie B) e (C serie D) piuttosto in parallelo, come ora?

sasa83
02-11-2008, 15:46
No, figurati. Si capisce benissimo.

Il mio schema, quindi, è corretto... eccetto per l'uscita, che va negata.

Da come leggo sul buon PDF, e dai vostri commenti, mi pare di capire che se voglio uno schema di una funzione posso:
a) cercare la funzione negata ottenuta evidenziando gli zero della k-mappa, e scrivere quella
b) scrivere la versione affermata e negare l'uscita.

Edit: pensandoci bene, nel tuo schema (e di conseguenza nel mio ultimo), non dovrebbe essere più corretto mettere in serie tra loro i due blocchi (A serie B) e (C serie D) piuttosto in parallelo, come ora?

dove? nel pull-up o nel pull-down? nel pull-up ok, e infatti è così nello schema...nel pull down dev'essere il contrario. altrimenti non sarebbe più fcmos (pienamente complementare).

negator136
02-11-2008, 16:23
solitamente le reti n e le reti p sono duali, nel senso che dove c'è il parallelo in una, c'è la serie nell'altra... quindi lo schema di sasa è più corretto da questo punto di vista.

a volte però (e in questo caso non ho controllato) la funzione logica gode di alcune proprietà che permettono di fare la rete p esattamente simmetrica rispetto a quella n (cioè senza invertire serie/parallelo, ma solo rispecchiando verso l'alto la rete n)... il che può comportare svariati vantaggi dal punto di vista dei tempi di commutazione e dell'area occupata nel momento dell'integrazione sul wafer di silicio... ma non mi pare il caso di approfondire... imho è meglio se ti concentri sulle reti duali :)

sasa83
02-11-2008, 16:35
solitamente le reti n e le reti p sono duali, nel senso che dove c'è il parallelo in una, c'è la serie nell'altra... quindi lo schema di sasa è più corretto da questo punto di vista.

a volte però (e in questo caso non ho controllato) la funzione logica gode di alcune proprietà che permettono di fare la rete p esattamente simmetrica rispetto a quella n (cioè senza invertire serie/parallelo, ma solo rispecchiando verso l'alto la rete n)... il che può comportare svariati vantaggi dal punto di vista dei tempi di commutazione e dell'area occupata nel momento dell'integrazione sul wafer di silicio... ma non mi pare il caso di approfondire... imho è meglio se ti concentri sulle reti duali :)

in questo caso non si può fare la rete mirror, aapunto dipende dalla rete...un caso che mi viene in mente è ad esempio nel calcolo del carry in un sommatore ripple-carry-adder.

Darker
02-11-2008, 16:44
Dovrebbe essere tutto chiaro ora, grazie mille per l'aiuto e, soprattutto, per la pazienza :D

negator136
02-11-2008, 16:49
in questo caso non si può fare la rete mirror, aapunto dipende dalla rete...un caso che mi viene in mente è ad esempio nel calcolo del carry in un sommatore ripple-carry-adder.

braf, oppure più semplicemente la xor :)

Darker
03-11-2008, 05:04
Domanda delle 06:01

Questo circuito che ho disegnato è corretto? Qual'è la funzione logica alla quale assolve? E' possibile compattare il circuito in quale modo (così da risparmiare)? :o

L'idea era di fare un (A NAND B) NAND (C NAND D) senza necessità di negare l'uscita...

circuito (http://darkerino.altervista.org/_altervista_ht/circuito4.jpg)

85francy85
03-11-2008, 06:54
l'uscita è ((A and B)' and (D and C)')'

con ' indico la negazione

si tutte le funzioni le puoi fare in un unico stadio, basta farlo grosso :D

Darker
03-11-2008, 16:53
l'uscita è ((A and B)' and (D and C)')'

con ' indico la negazione

si tutte le funzioni le puoi fare in un unico stadio, basta farlo grosso :D

Ok, grazie :D

Darker
12-11-2008, 17:45
E approfittando della disponibilità vado limitatamente offtopic.

Dal libro:
La capacità totale è pari a : Cbd1+Cdb2+Cgd2+Cg(k+1)+Ci

Disegno:
http://darkerino.altervista.org/_altervista_ht/Circuitino.png

Non capisco: dove dovrei disegnare Ci? :cry:
(che belle le PNG con i circuiti con lo sfondo trasparente!)
:D

sasa83
12-11-2008, 18:29
capacità vista da dove scusa?

Darker
12-11-2008, 18:33
A quanto mi è parso di capire, Ci sarebbe la capacità di uscita dell'invertitore mentre Cg(k+1) è la capacità di ingresso del prossimo invertitore.

Quindi Ci dovevo disegnarla tra l'uscita e Cg(k+1) :)

sasa83
12-11-2008, 18:36
A quanto mi è parso di capire, Ci sarebbe la capacità di uscita dell'invertitore mentre Cg(k+1) è la capacità di ingresso del prossimo invertitore.

Quindi Ci dovevo disegnarla tra l'uscita e Cg(k+1) :)

ok ma non ho capito cosa devi fare! devi solo disegnare le capacità?

Darker
12-11-2008, 19:20
Non era un esercizio. Era un'affermazione del libro e non capivo dove stava la Ci che diceva facesse parte della somma algelbrica :)