Porte logiche

Porte logiche a caso

Le porte logiche sono dispositivi digitali elementari con almeno un ingresso ed, in genere, una sola uscita. Esse permettono di realizzare fisicamente le funzioni dell'algebra booblena.

La loro descrizione sintetica può essere data in forma grafica oppure algebrica oppure tabellare oppure ancora testuale.

Le porte fondamentali sono molte: AND, NAND, OR, NOR, XOR, XNOR, buffer non invertente e inverter. In realtà tutte le funzioni booleane possono essere realizzate usando solo un loro piccolo sottoinsieme, per esempio usando solo porte NAND.

Per ciascuna porta troverete in questa pagina:

AND

L'uscita Q di una porta AND vale 1 solo quando tutti gli ingressi valgono 1; in caso contrario l'uscita vale 0. Una forma alternativa: l'uscita Q di una porta AND vale H (HIGH, alta) solo quando tutti gli ingressi sono H; in caso contrario l'uscita vale L (LOW, bassa).

Di seguito il caso in cui la porta ha due soli ingressi, ma sono comuni porte con un numero maggiore di ingressi.

Algebricamente l'uscita Q è descritta da:

Da notare che il simbolo utilizzato è lo stesso dell'usuale moltiplicazione, ma nell'algebra booleana andrebbe letto "and".

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

La tabella di verità è la seguente:

A B Q
0 0 0
0 1 0
1 0 0
1 1 1

Una forma alternativa della tabella di verità è la seguente, dall'identico significato:

A B Q
L L L
L H L
H L L
H H H

La codifica VHDL per una porta AND è:

library IEEE;
use IEEE.std_logic_1164.all;

entity ANDGATE is
port (
A : in std_logic;
B : in std_logic;
Q : out std_logic);
end entity ANDGATE;

architecture RTL of ANDGATE is
begin
Q <= A and B;
end architecture RTL;

Una porta AND con tre ingressi (Q = A · · C) ha ovviamente i seguenti simboli e tabella di verità:

NAND  a tre ingressi

A B C Q
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1

NAND

L'uscita Q di una porta NAND vale 0 solo quando tutti gli ingressi valgono 1. Si noti come il nome N-AND derivi da quello della porta AND premettendo una N (negazione), cosa facilmente comprensibile rileggendo la descrizione appena data.

Di seguito è in genere illustrato il caso di due soli ingressi; sono comuni anche porte con un numero maggiore di ingressi.

Algebricamente l'uscita è descritta da:

Si noti l'analogia con la funzione algebrica che descrive la porta AND, a cui semplicemente è stato aggiunto un trattino che si estende senza interruzioni fino a coprire tutto quanto segue il segno di uguaglianza, dalla variabile A alla variabile B incluse. Tale simbolo identifica una negazione.

A volte non è possibile digitare caratteri sopralineati; alternative ad A·B non perfette, ma a volte utilizzate, sono !(A·B) oppure ~(A·B) oppure /(A·B).

Si noti che A·B non è uguale a A · B (nota 1).

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

NAND

La differenza rispetto ai simboli della porta AND sono semplicemente la presenza di un cerchietto (MIL) o di un triangolo (IEC) sull'uscita. Tale simbolo identifica una negazione.

La tabella di verità è la seguente:

A B Q
0 0 1
0 1 1
1 0 1
1 1 0

In pratica coincide con la tabella di verità della porta AND con le uscire Q invertite.

La codifica VHDL per una porta NAND è:

library IEEE;
use IEEE.std_logic_1164.all;

entity NANDGATE is
port (
A : in std_logic;
B : in std_logic;
Q : out std_logic);
end entity NANDGATE;

architecture RTL of NANDGATE is
begin
Q <= A nand B;
end architecture RTL;

OR

L'uscita Q di una porta OR vale 1 quando almeno un ingresso vale 1.

Di seguito è illustrato il caso di due soli ingressi; sono comuni anche porte con un numero maggiore di ingressi.

Algebricamente l'uscita è descritta da:

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

La tabella di verità è la seguente:

A B Q
0 0 0
0 1 1
1 0 1
1 1 1

La codifica VHDL per una porta OR è:

library IEEE;
use IEEE.std_logic_1164.all;

entity ORGATE is
port (
A : in std_logic;
B : in std_logic;
Q : out std_logic);
end entity ORGATE;

architecture RTL of ORGATE is
begin
Q <= A or B;
end architecture RTL;

NOR

L'uscita Q di una porta NOR vale 0 quando almeno un ingresso vale 1. Si noti come il nome N-OR derivi da quello della porta OR premettendo una N (negazione), cosa facilmente comprensibile rileggendo la descrizione appena data.

Di seguito è illustrato il caso di due ingressi; sono comuni porte con un numero maggiore di ingressi.

Algebricamente l'uscita è descritta da:

Si noti l'analogia con la funzione algebrica che descrive la porta OR, a cui semplicemente è stato aggiunto un trattino che si estende senza interruzioni fino a coprire tutto quanto segue il segno di uguaglianza, dalla variabile A alla variabile B incluse. Tale simbolo identifica una negazione.

A volte non è possibile digitare caratteri sopralineati; alternative ad A+B non perfette, ma a volte utilizzate, sono !(A+B) oppure ~(A+B) oppure /(A+B).

Si noti che A+B non è uguale a A + B (nota 2).

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

 

La differenza rispetto ai simboli della porta OR sono semplicemente la presenza di un cerchietto (MIL) o di un triangolo (IEC) sull'uscita. Tale simbolo identifica una negazione.

La tabella di verità è la seguente:

A B Q
0 0 1
0 1 0
1 0 0
1 1 0

In pratica coincide con la tabella di verità della porta OR con le uscire Q invertite.

La codifica VHDL per una porta NOR è:

library IEEE;
use IEEE.std_logic_1164.all;

entity NORGATE is
port (
A : in std_logic;
B : in std_logic;
Q : out std_logic);
end entity NORGATE ;

architecture RTL of NORGATE is
begin
Q <= A nor B;
end architecture RTL;

XOR

L'uscita Q di una porta XOR (eXclusive OR) vale 1 quando uno solo dei due ingressi vale 1.

Non sono disponibili porte XOR con un numero di ingressi diverso da due.

Algebricamente l'uscita è descritta da:

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

La tabella di verità è la seguente:

A B Q
0 0 0
0 1 1
1 0 1
1 1 0

La codifica VHDL per una porta XOR è:

library IEEE;
use IEEE.std_logic_1164.all;

entity XORGATE is
port (
A : in std_logic;
B : in std_logic;
Q : out std_logic);
end entity XORGATE ;

architecture RTL of XORGATE is
begin
Q <= A xor B;
end architecture RTL;

XNOR

L'uscita Q di una porta XNOR vale 0 quando uno solo dei due ingressi vale 1. Si noti come il nome X-N-OR derivi da quello della porta XOR inserendo una N (negazione), cosa facilmente comprensibile rileggendo la descrizione appena data.

Non sono disponibili porte XNOR con un numero di ingressi diverso da due.

Algebricamente l'uscita è descritta da:

Si noti l'analogia con la funzione algebrica che descrive la porta XOR, a cui semplicemente è stato aggiunto un trattino che si estende senza interruzioni fino a coprire tutto quanto segue il segno di uguaglianza, dalla variabile A alla variabile B incluse. Tale simbolo identifica una negazione.

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

La differenza rispetto ai simboli della porta XOR sono semplicemente la presenza di un cerchietto (MIL) o di un triangolo (IEC) sull'uscita. Tale simbolo identifica una negazione.

La tabella di verità è la seguente:

A B Q
0 0 1
0 1 0
1 0 0
1 1 1

In pratica coincide con la tabella di verità della porta XOR con le uscire Q invertite.

La codifica VHDL per una porta XNOR è:

library IEEE;
use IEEE.std_logic_1164.all;

entity XNORGATE is
port (
A : in std_logic;
B : in std_logic;
Q : out std_logic);
end entity XNORGATE ;

architecture RTL of XNORGATE is
begin
Q <= A xnor B;
end architecture RTL;

Buffer non invertente

L'uscita di un buffer non invertente coincide con il valore logico presente all'unico ingresso; da un punto di vista logico si comporta quindi come un semplice filo, ma dal punto di vista elettrico permette di gestire tensioni o correnti diverse tra ingresso ed uscita.

Algebricamente l'uscita è descritta da:

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

 

La tabella di verità è la seguente:

A Q
0 0
1 1

La codifica VHDL per un buffer non invertente è:

library IEEE;
use IEEE.std_logic_1164.all;

entity BUFFER is
port (
A : in std_logic;
Q : out std_logic);
end entity BUFFER ;

architecture RTL of BUFFER is
begin
Q <= A;
end architecture RTL;

Inverter

L'uscita di un inverter (porta NOT) è 0 se l'unico ingresso vale 1, è 1 se l'ingresso vale 0.

Algebricamente l'uscita è descritta da:

Si noti l'analogia con la funzione algebrica che descrive un buffer non invertente a cui semplicemente è stato aggiunto un trattino che si estende senza interruzioni fino a coprire tutto quanto segue il segno di uguaglianza. Tale simbolo identifica una negazione.

A volte non è possibile digitare caratteri sopralineati; alternative ad A non perfette, ma a volte utilizzate, sono !A oppure ~A oppure /A.

I due simboli elettrici più usati, rispettivamente secondo gli standard MIL e IEC:

Le differenze rispetto ai simboli del buffer non invertente sono semplicemente la presenza di un "cerchietto" o "bubble"  (MIL) o di un triangolo (IEC) sull'uscita. Tale simbolo identifica una negazione.

La tabella di verità è la seguente:

A Q
0 1
1 0

In pratica coincide con la tabella di verità di un buffer non invertente con le uscire Q invertite.

La codifica VHDL per un inverter è:

library IEEE;br
use IEEE.std_logic_1164.all;

entity INVERTER is
port (
A : in std_logic;
Q : out std_logic);
end entity INVERTER ;

architecture RTL of INVERTER is
begin
Q <= not A;
end architecture RTL;

A volte il simbolo di negazione è posto all'ingresso e non all'uscita: il significato non cambia, ma nel contesto di circuiti complessi potrebbe rendere lo schema più leggibile:

Simbolo alternativo dell'inverter

Una simile simbologia è usata anche con altre porte i cui ingressi sono negati. Per esempio una porta NOR è a volte rappresentata come A · B (nota 2) con il seguente simbolo:

Porta NOR, simbolo alternativo

Note

  1. Teorema di De Morgan: A · B = A + B
  2. Teorema di De Morgan: A + B = A · B

 

Data di creazione di questa pagina: giugno 2020
Ultima modifica: 5 febbraio 2025


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima