Porte Logiche Digitali

Concetti Chiave
  • Le porte logiche digitali sono i mattoni fondamentali dei circuiti digitali.
  • Le porte logiche eseguono operazioni logiche su uno o più segnali di input per produrre un singolo segnale di output.
  • Le porte logiche di base includono AND, OR e NOT, ma ci sono anche porte più complesse come NAND, NOR, XOR e XNOR.
  • Estendere le porte logiche a più di due input è possibile e comune nella progettazione di circuiti.
  • Affinché una porta logica possa essere estesa a più di due input, la funzione corrispondente deve essere commutativa e associativa.
  • In caso contrario, la porta logica non può essere estesa a più di due input senza modificare il suo comportamento.

Porte Logiche Digitali

Poiché le funzioni booleane sono espresse in termini di operazioni AND, OR e NOT, è più facile implementare una funzione booleana con questi tipi di porte.

Tuttavia, la possibilità di costruire porte per le altre operazioni logiche riveste un interesse pratico. I fattori da considerare nel considerare la costruzione di altri tipi di porte logiche sono (1) la fattibilità e l'economia di produrre la porta con componenti fisici, (2) la possibilità di estendere la porta a più di due input, (3) le proprietà di base dell'operatore binario, come la commutatività e l'associatività, e (4) la capacità della porta di implementare funzioni booleane da sola o in congiunzione con altre porte.

Riprendiamo un attimo la tabella delle 16 possibili funzioni logiche a due input:

Funzioni Booleane Espressione Simbolo
Operatore
Nome Commenti
F_0 F_0 = 0 Funzione Nulla Restituisce sempre la Costante binaria 0
F_1 F_1 = xy x \cdot y AND x e y
F_2 F_2 = xy' x/y Inibizione x, ma non y
F_3 F_3 = x Trasferimento x
F_4 F_4 = x'y y/x Inibizione y, ma non x
F_5 F_5 = y Trasferimento y
F_6 F_6 = xy' + x'y x \oplus y XOR (Exclusive-OR) x o y, ma non entrambi
F_7 F_7 = x + y x + y OR x o y
F_8 F_8 = (x + y)' x \downarrow y NOR Not-OR: OR Negato
F_9 F_9 = xy + x'y' (x \oplus y)' Equivalenza (EQU o XNOR) x uguale a y
F_{10} F_{10} = y' y' Complemento Non y
F_{11} F_{11} = x + y' x \subset y Implicazione Se y, allora x
F_{12} F_{12} = x' x' Complemento Non x
F_{13} F_{13} = x' + y x \supset y Implicazione Se x, allora y
F_{14} F_{14} = (xy)' x \uparrow y NAND Not-AND: AND negato
F_{15} F_{15} = 1 Identità Restituisce sempre la Costante binaria 1
Tabella 1: Espressioni Booleane per le 16 Funzioni di Due Variabili

Di queste 16 funzioni abbiamo che:

  • due funzioni sono uguali a una costante:

    • Funzione Nulla

      F_0 = 0
    • Funzione Identità

      F_{15} = 1
  • quattro sono funzioni ripetute:

    • Le due funzioni di complemento:

      F_{10} = y'
      F_{12} = x'
    • Le due funzioni di trasferimento:

      F_3 = x
      F_5 = y

Rimangono solo 10 funzioni da considerare come candidate per porte logiche.

Di queste, le due funzioni di inibizione e le due di implicazione non sono commutative o associative e quindi sono poco pratiche da usare come porte logiche standard.

Le altre otto, ossia complemento, trasferimento, AND, OR, NAND, NOR, exclusive-OR ed equivalenza, sono usate come porte standard nella progettazione digitale.

I simboli grafici e le tavole di verità delle otto porte sono mostrati di seguito:

  • Porta Logica AND:

    Porta logica AND
    Figura 1: Porta logica AND
    F = x \cdot y
    x y F = x \cdot y
    0 0 0
    0 1 0
    1 0 0
    1 1 1
    Tabella 2: Tabella di verità della porta logica AND
  • Porta Logica OR:

    Porta logica OR
    Figura 2: Porta logica OR
    F = x + y
    x y F=x+y
    0 0 0
    0 1 1
    1 0 1
    1 1 1
    Tabella 3: Tabella di verità della porta logica OR
  • Porta Logica NOT o Invertitore:

    Porta logica NOT o Invertitore
    Figura 3: Porta logica NOT o Invertitore
    F = x'
    x F = x'
    0 1
    1 0
    Tabella 4: Tabella di verità della porta logica NOT
  • Buffer:

    Buffer
    Figura 4: Buffer
    F = x
    x F = x
    0 0
    1 1
    Tabella 5: Tabella di verità della porta logica Buffer
  • Porta Logica NAND:

    Porta logica NAND
    Figura 5: Porta logica NAND
    F = (xy)' = x \uparrow y
    x y F= x \uparrow y
    0 0 1
    0 1 1
    1 0 1
    1 1 0
    Tabella 6: Tabella di verità della porta logica NAND
  • Porta Logica NOR:

    Porta logica NOR
    Figura 6: Porta logica NOR
    F = (x + y)' = x \downarrow y
    x y F= x \downarrow y
    0 0 1
    0 1 0
    1 0 0
    1 1 0
    Tabella 7: Tabella di verità della porta logica NOR
  • Porta Logica XOR:

    Porta logica XOR
    Figura 7: Porta logica XOR
    F = (xy' + x'y) = x \oplus y
    x y F= x \oplus y
    0 0 0
    0 1 1
    1 0 1
    1 1 0
    Tabella 8: Tabella di verità della porta logica XOR
  • Porta Logica XNOR o EQU o Equivalenza:

    Porta logica XNOR o EQU
    Figura 8: Porta logica XNOR o EQU
    F = xy + x'y' = x \equiv y
    x y F= x \equiv y
    0 0 1
    0 1 0
    1 0 0
    1 1 1
    Tabella 9: Tabella di verità della porta logica XNOR o EQU (Equivalenza)

Ogni porta ha una o due variabili di input binarie, designate da x e y, e una variabile di output binaria, designata da F.

Il circuito invertitore inverte il senso logico di una variabile binaria, producendo la funzione NOT, o complemento. Il piccolo cerchio nell'output del simbolo grafico di un invertitore (chiamato bolla o bubble) designa il complemento logico. Il simbolo triangolare da solo designa un circuito buffer. Un buffer produce la funzione di trasferimento, ma non produce un'operazione logica, poiché il valore binario dell'output è uguale al valore binario dell'input. Questo circuito è usato per l'amplificazione di potenza del segnale ed è equivalente a due invertitori collegati in cascata.

La funzione NAND è il complemento della funzione AND, come indicato da un simbolo grafico che consiste di un simbolo grafico AND seguito da un piccolo cerchio. La funzione NOR è il complemento della funzione OR e usa un simbolo grafico OR seguito da un piccolo cerchio. Le porte NAND e NOR sono usate estensivamente come porte logiche standard e sono infatti molto più popolari delle porte AND e OR. Questo perché le porte NAND e NOR possono essere facilmente costruite con circuiti a transistori (BJT o MOSFET) e perché i circuiti digitali possono essere facilmente implementati con esse.

La porta exclusive-OR (XOR) ha un simbolo grafico simile a quello della porta OR, eccetto per la linea curva aggiuntiva sul lato dell'input. La porta equivalenza, o exclusive-NOR, è il complemento dell'exclusive-OR, come indicato dal piccolo cerchio sul lato dell'output del simbolo grafico.

Porte Logiche a più di due Input

Le porte viste nella sezione precedente, eccetto per l'invertitore e il buffer, possono essere estese per avere più di due input.

Una porta può essere estesa per avere input multipli se l'operazione binaria che rappresenta è commutativa e associativa. Le operazioni AND e OR, definite nell'algebra booleana, possiedono queste due proprietà. Per la funzione OR, abbiamo:

  • Proprietà commutativa:

    x + y = y + x
  • Proprietà associativa:

    (x + y) + z = x + (y + z) = x + y + z

Ciò significa che gli input della porta possono essere scambiati e che la funzione OR può essere estesa a tre o più variabili.

Le funzioni NAND e NOR sono commutative, e le loro porte possono essere estese per avere più di due input, purché la definizione dell'operazione sia modificata leggermente. La difficoltà è che gli operatori NAND e NOR non sono associativi, infatti:

(x \downarrow y) \downarrow z \neq x \downarrow (y \downarrow z)

Per dimostrarlo basta osservare le equazioni seguenti

(x \downarrow y) \downarrow z = [(x + y)' + z]' = (x + y)z' = xz' + yz'
x \downarrow (y \downarrow z) = [x + (y + z)']' = x'(y + z) = x'y + x'z

Come si può osservare, i risultati delle due equazioni sono diversi. Per questo motivo, non possiamo estendere la porta NOR (così come la porta NAND) a più di due input in questo modo:

Non Associatività della Porta NOR
Figura 9: Non Associatività della Porta NOR

Come dimostra questa figura, non possiamo estendere la porta NOR banalmente mettendo in cascata delle porte NOR a due input come avremmo potuto fare per la porta AND e OR.

Per superare questa difficoltà, definiamo la porta NOR (o NAND) multipla come una porta OR (o AND) complementata. Quindi, per definizione, abbiamo

x \downarrow y \downarrow z = (x + y + z)'
x \uparrow y \uparrow z = (xyz)'

I simboli grafici per le porte a tre input sono mostrati nelle figure che seguono:

Porta logica NOR a tre input
Figura 10: Porta logica NOR a tre input
Porta logica NAND a tre input
Figura 11: Porta logica NAND a tre input

Nello scrivere operazioni NOR e NAND a cascata, si devono usare le parentesi in maniera corretta per indicare la sequenza propria delle porte.

Per dimostrare questo principio, si consideri il circuito della figura che segue:

Esempio di Circuito con Porte NAND a casata e corretta derivazione della funzione booleana corrispondente
Figura 12: Esempio di Circuito con Porte NAND a casata e corretta derivazione della funzione booleana corrispondente

La funzione booleana per il circuito deve essere scritta come

F = [(ABC)'(DE)']' = ABC + DE

La seconda espressione è ottenuta da uno dei teoremi di DeMorgan. Mostra anche che un'espressione in forma somma-di-prodotti può essere implementata con porte NAND. Torneremo su questo punto più avanti ma per il momento possiamo anticipare che la funzione NAND da sola (così come la porta NOR) permette di implementare tutte le funzioni NOT, OR e AND. Pertanto si dice che l'insieme composto dalla funzione NAND è un insieme funzionalmente completo.

Le porte exclusive-OR ed equivalenza sono entrambe commutative e associative e possono essere estese a più di due input così come facciamo per le porte AND e OR. Tuttavia, le porte exclusive-OR a input multipli sono non comuni dal punto di vista hardware. Infatti, anche una funzione a due input è solitamente costruita con altri tipi di porte. Inoltre, la definizione della funzione deve essere modificata quando estesa a più di due variabili. L'exclusive-OR è una funzione dispari (cioè, è uguale a 1 se le variabili di input hanno un numero dispari di 1). La costruzione di una funzione exclusive-OR a tre input è mostrata nella figura che segue:

Implementazione della porta logica XOR a tre input
Figura 13: Implementazione della porta logica XOR a tre input

Questa funzione è normalmente implementata collegando in cascata porte a due input, come mostrato nella parte inferiore della figura di sopra. Graficamente, può essere rappresentata con una singola porta a tre input, come mostrato nella parte superiore della figura. La tabella di verità della funzione XOR a tre input è riportata di seguito:

x y z F = (x \oplus y \oplus z)
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
Tabella 10: Tabella di verità della funzione XOR a tre input

La tabella indica chiaramente che l'output F è uguale a 1 se solo un input è uguale a 1 o se tutti e tre gli input sono uguali a 1 (cioè, quando il numero totale di 1 nelle variabili di input è dispari). Ritorneremo sulle porte XOR a più input nelle prossime lezioni.