ESERCITAZIONE DI LABORATORIO – ENCODER, DECODER, MUX E DEMUX Autori: _______________________________________ Data: ____________________ ATTENZIONE: Se hai scaricato questa esercitazione nelle lezioni scorse e non hai ancora cominciato a compilarla, prima di iniziare scaricala di nuovo da Classiperlo e butta via questa versione, perché nel frattempo potrebbe essere stata modificata. Se invece avevi già cominciato l’esercitazione, ignora questo messaggio. A) ENCODER Un codificatore (o encoder) è un circuito digitale combinatorio dotato di 2n (due alla enne) segnali di ingresso e di n segnali di uscita. L'attivazione di una delle linee di ingresso produce in uscita il codice corrispondente. Facciamo un esempio considerando un encoder con 8 ingressi e 3 uscite (si parla in questo caso di encoder 8 a 3): Gli ingressi sono numerati da 0 a 7 essendo l'ingresso I0 quello a priorità inferiore e l'ingresso I1 quello a priorità maggiore (vedremo fra poco cosa vuol dire priorità). Se per esempio viene attivato l'ingresso I6 (ponendo su tale linea un valore H e lasciando a L tutti gli altri ingressi), l'uscita produrrà il codice binario corrispondente al numero 6, cioè A2=H, A1=H, A0=L ovvero 110. La tabella di verità seguente dovrebbe aiutare a chiarire il concetto: Conf D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 0 0 1 0 0 0 1 0 3 0 0 0 0 1 0 0 0 0 1 1 4 0 0 0 1 0 0 0 0 1 0 0 5 0 0 1 0 0 0 0 0 1 0 1 6 0 1 0 0 0 0 0 0 1 1 0 7 1 0 0 0 0 0 0 0 1 1 1 L'encoder può essere realizzato abbastanza facilmente con una serie di porte OR, ciascuna delle quali realizza una delle uscite, come mostrato in figura: Si osservi che l'ingressi D0 non è collegato: infatti quando viene attivato D0 tutte le uscite devono rimanere a valore 0, cioè in pratica D0 non influisce sulle uscite (un problema di questo semplice encoder è che non è in grado di distinguere fra l'attivazione di D0 e l'assenza di ingressi attivati, poiché entrambi i casi producono il medesimo codice 000 in uscita). A1) Realizzare con Logisim il circuito di un encoder con 4 ingressi e 2 uscite e copiare qui sotto lo schema: A2) Trasformare il circuito dell’encoder in un sottocircuito (se non ti ricordi come si fa, dai un’occhiata all’esercitazione precedente). Copia qui sotto una schermata che provi il fatto che hai realizzato il sottocircuito: B) DECODER Il decodificatore (o decoder) è un circuito digitale combinatorio che riceve in ingresso un codice binario su n bit e attiva l'uscita corrispondente (fra 2n uscite). Per esempio la figura seguente mostra la tabella di verità e la realizzazione circuitale di un semplice decoder 2 a 4 (2 ingressi e 4 uscite): B1) Usando Logisim realizzate lo schema del decoder 2:4 mostrato nella figura precedente. Copiate qui sotto lo schema realizzato: B2) Trasformate il circuito del decoder in un sottocircuito avente due ingressi A0 e A1 e 4 uscite D0, D1, D2, D3. C) MULTIPLEXER (MUX) Il multiplexer (spesso abbreviato in MUX) è un circuito digitale combinatorio in grado di selezionare una fra 2n linee di ingresso (linee dati) e di collegare tale linea selezionata su un'unica uscita. A tale scopo in generale un MUX possiede, oltre a 2n ingressi di dato, anche n ingressi di selezione. La figura seguente mostra il semplice schema di un principio di un MUX con 4 ingressi di dato e 2 ingressi di selezione: La corrispondente tabella di verità è la seguente: S1 S0 U 0 0 A 0 1 B 1 0 C 1 1 D Si noti come è stata scritta la colonna dell'uscita U. Se per esempio sugli ingressi di selezione ho 10, vuol dire che è stato selezionato il terzo ingresso dati e dunque U = C. Un MUX può essere facilmente realizzato a partire da un decoder, come mostra lo schema seguente: C1) Realizzate con Logisim lo schema del MUX mostrato nella figura precedente (usando il sottocircuito del decoder realizzato prima). Copiare qui sotto lo schema (completo di ingressi e uscite): C2) Trasformate anche il MUX in un sottocircuito con i propri ingressi e la sua uscita (ebbene sì, in Logisim un sottocircuito può contenere al proprio interno un altro sottocircuito): D) SINTESI DI TABELLE DI VERITA’ CON MUX I MUX possono anche essere usati per realizzare funzioni logiche espresse mediante tabelle di verità. Per una tabella di verità con 3 ingressi occorre per esempio un MUX da 8 a 3. Per sintetizzare la tabella di verità basta collegare a 0 oppure a 1 gli ingressi corrispondenti alle diverse righe della tabella. Supponiamo ad esempio di voler realizzare la seguente tabella di verità: ABU 0 0 0 0 1 0 1 0 1 1 1 0 A tale scopo possiamo usare un MUX nel seguente modo: D1) Usando il sottocircuito per il MUX realizzato prima, realizzare con Logisim lo schema nella figura qui sopra (GND – Ground o massa – indica un valore costante 0). Copiare qui sotto il circuito completo: E) DEMULTIPLEXER (DEMUX) Il demultiplexer (spesso abbreviato in DEMUX o DMUX ) è un circuito digitale combinatorio che realizza le funzioni opposte al multiplexer. In pratica esso presenta una sola linea di ingresso dati e n linee di selezione: a seconda del codice impostato sulle linee di selezione, l'ingresso dati viene inviato a 1 fra 2n linee di uscita. Lo schema di principio di un DMUX con 2 linee di selezione e 4 uscite è il seguente: La corrispondente tabella di verità è la seguente: S1 S0 A B C D 0 0 I0 0 0 0 0 1 0 I0 0 0 1 0 0 0 I0 0 1 1 0 0 0 I0 Un DEMUX come quello in esempio può essere realizzato usando un decoder: E1) Usando il sottocircuito per il decoder realizzato prima, realizzare con Logisim lo schema del DEMUX mostrato in figura precedente. Copiare qui sotto il circuito: F) PLEXERS DI LOGISIM In realtà non c’è bisogno di realizzare encoder, decoder, mux e demux, dal momento che Logisim contiene già al proprio interno questi circuiti. Date un’occhiata alla sezione Plexers: Usando il mux e demux contenuti in Logisim vogliamo realizzare il seguente circuito: SPIEGAZIONI: Il BUS indica una linea di collegamento a un singolo bit (un solo filo). S1 e S0 sono due ingressi di selezione binari, mediante i quali è possibile collegare uno degli ingressi con la corrispondente uscita (es. A con A selezionando 00, B con B sezionando 01 e così via) F1) Copiare qui sotto lo schema completo realizzato in Logisim: