Vai al contenuto
Elettronica dei Sistemi Digitali

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) 2^n:1 sceglie uno tra 2^n ingressi e lo porta all’uscita, in base a n segnali di selezione.

Multiplexer a quattro ingressi con la sua tabella di verità
Il simbolo trapezoidale ha quattro ingressi dati I0-I3 a sinistra, l’uscita Y a destra e due ingressi di selezione S1 e S0 in basso. La tabella mostra che il numero binario S1S0 indica quale ingresso viene portato all’uscita.

Per il 4:1:

    \[ Y = \overline{S_1}\,\overline{S_0}\,I_0 + \overline{S_1}S_0I_1 + S_1\overline{S_0}I_2 + S_1S_0I_3 \]

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 n selettori realizza qualsiasi funzione di n 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 2^n uscite.

Decodificatori e codificatori

  • Un decodificatore n-a-2^n 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 2^n 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 n bit confronta i bit a coppie con porte XNOR e ne fa l’AND: A = B se tutti i bit coincidono. Il comparatore di grandezza (A \gt B) 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. f = AB + \overline{A}C, con B = C = 1: la funzione vale sempre 1, qualunque sia A. Quando A passa da 1 a 0, il termine AB va a 0 subito, mentre \overline{A}C va a 1 solo dopo il ritardo dell’invertitore che produce \overline{A}. 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 AB e \overline{A}C sono adiacenti ma non si sovrappongono, e il passaggio da uno all’altro non è coperto. Aggiungendo il termine di consenso BC, che copre la transizione, l’alea sparisce: f = AB + \overline{A}C + BC è 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.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x