Reti combinatorie: multiplexer, decodificatori, comparatori e alee
Multiplexer e sua universalità, demultiplexer, decodificatori e codificatori a priorità, comparatori, alee statiche con esempio e termine di consenso, descrizione in Verilog.
Una rete combinatoria è un circuito la cui uscita dipende solo dagli ingressi in quell’istante, senza memoria. Alcuni blocchi combinatori ricorrono così spesso da essere componenti standard: multiplexer, decodificatori, codificatori, sommatori, comparatori. In questa lezione li vediamo e scopriamo un problema che le tabelle di verità nascondono: i transitori spuri dovuti ai ritardi.
Il multiplexer
Un multiplexer (MUX)
:1 sceglie uno tra
ingressi e lo porta all’uscita, in base a
segnali di selezione.

Per il 4:1:
![]()
Ogni termine è attivo per una sola combinazione dei selettori. Il multiplexer è un blocco universale: collegando gli ingressi dati a costanti 0 e 1, un MUX con
selettori realizza qualsiasi funzione di
variabili, basta scrivere sugli ingressi la colonna della tabella di verità. È esattamente come funzionano le tabelle di ricerca (LUT) delle FPGA.
Il demultiplexer fa il contrario: porta un ingresso su una delle
uscite.
Decodificatori e codificatori
- Un decodificatore
-a-
attiva una sola delle sue uscite, quella il cui numero è dato dagli ingressi: ogni uscita è un mintermine. Si usa per selezionare uno tra molti dispositivi (il chip di memoria giusto in base all’indirizzo, la riga di una matrice di memoria) e per pilotare i display a sette segmenti. - Un codificatore fa l’inverso: data quale delle
linee è attiva, ne produce il numero. Il codificatore a priorità gestisce anche il caso di più linee attive, restituendo quella più importante: è il cuore dei controllori d’interruzione.
Sommatori e comparatori
Il sommatore completo e i sommatori a propagazione e ad anticipo del riporto sono nella lezione sull’aritmetica di Sistemi di elaborazione. Un comparatore di uguaglianza tra due parole di
bit confronta i bit a coppie con porte XNOR e ne fa l’AND:
se tutti i bit coincidono. Il comparatore di grandezza (
) si ottiene con una sottrazione e il controllo del segno o del riporto.
I transitori spuri
La tabella di verità descrive la rete a regime, ma le porte hanno ritardi, e percorsi diversi dall’ingresso all’uscita possono avere ritardi diversi.
Esempio.
, con
: la funzione vale sempre 1, qualunque sia
. Quando
passa da 1 a 0, il termine
va a 0 subito, mentre
va a 1 solo dopo il ritardo dell’invertitore che produce
. Per un istante entrambi i termini sono 0, e l’uscita ha un breve impulso a 0 (un glitch). È un’alea statica.
Sulla mappa di Karnaugh l’alea si vede bene: i due gruppi
e
sono adiacenti ma non si sovrappongono, e il passaggio da uno all’altro non è coperto. Aggiungendo il termine di consenso
, che copre la transizione, l’alea sparisce:
è logicamente identica ma senza glitch.
Nei circuiti sincroni (prossime lezioni) i glitch combinatori sono in genere innocui, perché i flip-flop leggono le uscite solo sul fronte del clock, quando si sono assestate. Sono invece pericolosi quando l’uscita combinatoria pilota direttamente qualcosa di sensibile ai fronti: un clock, un ingresso di reset asincrono, un’interruzione. Regola pratica: mai usare l’uscita di una rete combinatoria come clock.
Le reti in pratica
Oggi quasi nessuno disegna reti combinatorie porta per porta. Si descrive il comportamento in un linguaggio di descrizione dell’hardware, per esempio assign y = sel[1] ? (sel[0] ? i3 : i2) : (sel[0] ? i1 : i0); in Verilog, e lo strumento di sintesi sceglie la realizzazione con le celle della tecnologia disponibile, verificando anche i ritardi. Capire i blocchi di base resta però essenziale per leggere i risultati, stimare l’area e i ritardi e trovare gli errori.





