Circuiti di commutazione, codifica e decodifica Vediamo ora i più comuni circuiti per la codifica, decodifica e commutazione di informazioni rappresentate sotto forma binaria. Tali circuiti costituiscono gli elementi costruttivi per la definizione di sistemi più complessi. Faremo riferimento alle tavole di verità per la definizione di questi circuiti, ma poi li tratteremo come unità funzionali più complesse, il cui funzionamento si intende noto senza ulteriori specificazioni a livello di tavole di verità. Multiplexer L'esempio di funzione a tre ingressi e una uscita visto in precedenza é un multiplexer ad 1 bit con due ingressi dati (i0 e i1) ed un segnale di controllo (ingresso i2). Come si può facilmente notare dalla mappa che ne descrive il funzionamento, i2=0 implica u=i0, mentre i2=1 implica u=i1. Il valore dell'ingresso di controllo i2 consente quindi di riportare in uscita al multiplexer uno dei due valori in ingresso (i0 oppure i1). L'idea di circuito multiplexer può essere estesa in diversi modi. Per esempio si può mantenere un solo ingresso di controllo, ma commutare uno tra due insiemi di variabili di ingresso su un solo insieme di variabili di uscita (ogni insieme di variabili di ingresso deve avere la stessa cardinalità dell'insieme di variabili di uscita. In figura é rappresentato lo schema realizzativo di un multiplexer operante su due insiemi di ingresso, ciascuno composto da tre variabili booleane. La simbologia usata per la rappresentazione di un multiplexer a prescindere dalla sua realizzazione in termini di porte logiche elementari é la seguente: Un secondo tipo di estensione del circuito multiplexer viene ottenuto utilizzando una codifica binaria su più bit per la scelta tra più di due ingressi da connettere sull'unica uscita. In figura é illustrato il caso di un multiplexer a 4 ingressi (ciascuno da un bit) comandato da due segnali di controllo in ingresso: La combinazione degli ingressi c1 e c0 determina la scelta dell'ingresso (per esempio c1=1 e c0=1 "sceglie" i3) da connettere all'uscita u. Notare che in tal caso il numero di ingressi di controllo deve essere pari al logaritmo in base 2 del numero di ingressi che possono essere scelti per la connessione con l'uscita. Ovviamente i due tipi di estensione del multiplexer (commutazione di più bit e scelta tra più di due ingressi) possono essere combinati in modo da formare, per esempio un multiplexer con 8 insiemi di ingresso, ciascuno da 32 bit, comandato attraverso la codifica su 3 ingressi di controllo. Demultiplexer Un circuito demultiplexer viene definito come l'inverso di un circuito multiplexer, ossia come un elemento funzionale capace di commutare un solo ingresso su due o più uscite. Per convenzione, le uscite "non attivate" assumono il valore costante 0, indipendentemente dal valore assunto dall'ingresso "dati". Notare che questa convenzione pone un vincolo sui codici che possono essere utilizzati per trattare le informazioni in uscita da un demultiplexer: il valore 0 deve poter essere interpretato come un valore non significativo, una condizione di riposo, ecc., in quanto questo valore viene assegnato a tutte le uscite non connesse con l'ingresso. In figura é riportato un esempio di realizzazione di un demultiplexer a 2 uscite (comandato da un segnale di controllo c) in grado di commutare informazioni codificate su due bit. La rappresentazione "astratta" di un tale dispositivo (prescindendo dalla sua realizzazione in termini di funzioni And e Not) é la seguente: Circuiti demultiplexer possono essere realizzati con numero arbitrario di bit di ingresso e uscita, e con numero di ingressi di controllo pari al logaritmo in base 2 del numero di gruppi di uscite. La codifica binaria dei segnali di controllo individua univocamente l'insieme delle uscite attive che possono riprodurre inalterata la configurazione sull'insieme degli ingressi dati. Le altre uscite (quelle non corrispondenti al codice binario selezionato mediante gli ingressi di controllo) assumono il valore costante 0. Decoder e indirizzamento Circuiti di tipo multiplexer e demultiplexer hanno in comune tra loro una parte per la decodifica delle configurazioni booleane di controllo. Tale parte viene normalmente chiamata decoder. Un circuito di tipo decoder può essere pensato come un caso particolare di circuito demultiplexer, nel quale il segnale da commutare su una sola delle uscite é la costante 1. In figura é riportato a titolo di esempio lo schema di realizzazione di un decoder binario da 3 bit. Circuiti di tipo decoder vengono normalmente utilizzati come componenti per la realizzazione di meccanismi di indirizzamento binario. Le uscite possono essere usate per abilitare il funzionamento di moduli simili l'uno all'altro, individuati tramite un indirizzo binario. Notare che le uscite di un decoder possono essere messe in corrispondenza con le righe di una tavola di verità per un circuito combinatorio con numero di ingressi pari al numero di bit di controllo del decoder. Per esempio, le 8 uscite del decoder riportato in figura possono essere messe in corrispondenza con le 8 righe della tavola di verità di un qualsiasi circuito combinatorio con 3 variabili di ingresso. Unendo con una funzione Or tutte e sole le uscite del decoder corrispondenti a quelle righe della tavola di verità contenenti il valore 1, é quindi possibile realizzare in modo sistematico qualsiasi tavola di verità.