Altifigence Academy

15 / 63 · Concetto

Dalla tabella di verità a MUX ed espansione di Shannon

Derivare la selezione e decomporre funzioni logiche generali con MUX.

Derivare la regola di selezione

Per scegliere a con sel=0 e b con sel=1, combiniamo ogni dato con la propria condizione tramite AND e uniamo i risultati con OR.

y=s‾a+sby=\overline s a+s b

Sostituendo s=0s=0 resta a, con s=1s=1 resta b. Se a e b coincidono, cambiare sel non modifica l'uscita: per trovare errori di selezione servono dati diversi.

Il percorso blu indica l'ingresso selezionato. Impostate a e b diversi e cambiate sel. Con valori uguali anche una selezione collegata male è difficile da riconoscere dalla sola uscita.

La linea di selezione modifica il percorso dati

y = sel ? b : a

MUX come decomposizione generale di una funzione logica

Per una funzione booleana F, chiamiamo F0,F1F_0,F_1 le sottofunzioni ottenute fissando s rispettivamente a 0 e 1.

F=s‾F0+sF1F=\overline s F_0+sF_1

È l'espansione di Shannon. s ? F1 : F0 divide qualsiasi funzione in due parti. Per esempio, in F=a⊕bF=a\oplus b, usando a come selezione, F0=bF_0=b e F1=b‾F_1=\overline b: XOR si costruisce con MUXMultiplexer Circuito combinatorio che collega un ingresso all’uscita secondo la selezione. Va specificata la corrispondenza fra bit di selezione e ingressi. e inversioneInversione NOT scambia 0 e 1. Una barra superiore applica NOT all’intera espressione sottostante. Approfondisci.

Selezione 4-to-1 e priorità

Due bit scelgono uno fra quattro ingressi mediante due livelli di MUX 2-to-1. Invece if (req0) ... else if (req1) ... privilegia la richiesta precedente quando più richieste sono attive. Selezione per indirizzo e selezione per priorità sono problemi distinti.

SystemVerilog
assign y = sel[1] ? (sel[0] ? d3 : d2)
                 : (sel[0] ? d1 : d0);

Un albero ideale bilanciato con 2m2^m ingressi ha m livelli di selezione. Il ritardo fisico dipende anche da tempi d'arrivo, carichi e interconnessioni. La decomposizione propone implementazioni, non dimostra un ritardo ottimale.

Prova tu

Esprimete F=ab+a‾cF=a b+\overline a c con un MUX selezionato da a. Quali sono i due dati?

Leggi la spiegazione

Con a=0a=0 si ha F0=cF_0=c, con a=1a=1 si ha F1=bF_1=b: assign f = a ? b : c;. Calcolate prima le sottofunzioni per non invertire i dati selezionati da 0 e 1.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.