Realizzazione di una porta logica XOR in tecnologia CMOS

Introduco qui un esempio di realizzazione di una porta XOR in tecnologia CMOS. Riporto nella figura M-1 la tabella della verità della porta in questione. La sintesi dell’operazione logica richiesta, senza la necessità di commenti, porta alla seguente espressione: A XOR B = (A!*B) + (A*B!).

Figura M-1 Tabella della verità di una porta XOR

Prima di proseguire con la realizzazione a transistor CMOS riporto nella figura M-2 le porte NOR, NAND e NOT realizzate nella tecnologia in questione.

Figura M-2 Porte NOR,NAND e NOT in tecnologia CMOS

 

Accanto a ciascuna porta è riportata la tabella della verità. Le linee dello stesso colore si riferiscono al medesimo ingresso e/o uscita.

Nella figura M-3 invece, realizzo lo schema della porta XOR utilizzando le porte prima richiamate e utilizzando le informazioni riportate nell’espressione di sintesi della porta XOR. Per prima cosa inserisco due inverter sugli ingressi A e B in modo da ottenere tutti i valori di input necessari e cioè A,B,A!,B! (il punto esclamativo indica la negazione di una variabile). Tale operazione è indicata in figura come 1° livello. Al 2° livello, nella parte superiore eseguo l’operazione NAND tra le variabili A!  e B  ottenendo in uscita (A!*B)!, mentre nella parte inferiore eseguo l’operazione NAND tra le variabili A e B! ottenendo in uscita (A*B!)!. Passando al 3° livello nego i risultati ottenuti precedentemente al fine di ottenere in uscita (A!*B) per la parte superiore e (A*B!)  per la parte inferiore. Al 4° livello eseguo l’operazione NOR tra le uscite delle porte del 3° livello ottenendo così [(A!*B)+(A*B!)]! e per concludere nego il risultato al fine di ottenere in uscita al 5° livello l’operazione desiderata, cioè A XOR B = (A!*B) + (A*B!). Osservando lo schema (figura M-3) noto che per realizzare una porta XOR sono necessari 22 transistor.

 

Figura M-3 Realizzazione di una porta XOR in tecnologia CMOS

Proseguo ora l’analisi del problema applicando il teorema di De Morgan. Dalla sua applicazione si ha immediatamente che A XOR B = (A!*B) + (A*B!).

Per quanto riguarda i primi due livelli, valgono le stesse considerazioni fatte precedentemente, mentre al 3° livello eseguo l’operazione logica NAND tra le variabili di uscita del 2° livello, cioè {[(A!*B)!]!+[(A*B!)]!}! che coincide proprio con il risultato desiderato (A XOR B). Osservando la figura M-4, noto che in questo caso sono necessari 16 transistor invece che 22.

Con questo esempio voglio mettere in evidenza uno degli obiettivi principali dell’ingegnere elettronico: risolvere il problema utilizzando il minimo delle risorse a disposizione. La differenza tra le due realizzazioni discusse, incide sull’area occupata al momento della realizzazione su chip, sulla dissipazione di potenza, sul ritardo di propagazione dei segnali. Inoltre, nel secondo caso è possibile utilizzare il bubble pushing essendo tutte le porte logiche di tipo NAND ad eccezione di quelle presenti al 1° livello (inverter CMOS) che, come noto, possono essere ugualmente ricondotte ad una porta NAND con gli ingressi cortocircuitati.

Risulta chiaro che un maggior numero di transistor, poiché l’ingresso di ogni stadio può essere assimilato ad una capacità, comporta un aumento del ritardo di propagazione soprattutto alle alte frequenze anche per effetto della presenza di altre capacità parassite, come ad esempio la Cgd.

Figura M-4 Realizzazione di una porta XOR in tecnologia CMOS

  

Michele Marino - M.M.Electronics