730 likes | 830 Views
Decoder. Circuito che converte un codice di input a nbit in un codice di output a m bit. Struttura generale del decoder Tipicamente n input, m=2 n outputs 2-to-4, 3-to-8, 4-to-16, etc. Decoder binari. Circuito da-n-a-2n
E N D
Decoder Circuito che converte un codice di input a nbit in un codice di output a m bit. • Struttura generale del decoder • Tipicamente n input, m=2n outputs • 2-to-4, 3-to-8, 4-to-16, etc.
Decoder binari Circuito da-n-a-2n Codice 1-fra-m:contiene m bit con un solo bit asserito ad ogni istante Decoder da-2-a-4: Si noti la notazione “x” (don’t care)
Decoder da-2-a-4 in logica negativa • Buffer di input (meno carico) • gate NAND (più veloci)
y0 = a’b’c’ 3-to-8 Line Decoder y1 = a’b’c y2 = a’bc’ a y3 = a’bc b y4 = ab’c’ c y5 = ab’c y6 = abc’ y7 = abc Decoder da-3-a-8
DEG0 3-to-8 Line Decoder DEG45 DEG135 a DEG90 b DEG315 c DEG270 DEG180 DEG225 Decoder da-3-a-8 con codice di input Gray Il codice di input non rappresenta necessariamente gli interi da 0 a 2n-1. Supponiamo che il codice di input sia il codice Gray di un disco di codifica meccanica con otto posizioni. Posizione del disco I2 I1 I0 output del decoder binario 0o 0 0 0 Y0 45o 0 0 1 Y1 90o 0 1 1 Y3 135o 0 1 0 Y2 180o 1 1 0 Y6 225o 1 1 1 Y7 270o 1 0 1 Y5 315o 1 0 0 Y4
Applicazioni dei decoder • Memoria dei microprocessori • Selezione di diversi banchi di memoria • Sistemi di input/output di microprocessori • Selezione di diversi dispositivi • Decodifica di istruzioni di microprocessori • Abilitazione di diverse unità funzionali • Chips di memoria • Abilitazione di diverse righe di memoria a seconda dell’indirizzo • Moltissime altre applicazioni
multiplexing Multiplexing nella forma più semplice: un tasto (switch) meccanico capace di selezionare fra diverse sorgenti Sorgenti: 4 microfoni che inviano a una stazione remota di ascolto della polizia segrenta Una volta al mese un agente segreto agisce sul tasto per ascoltare uno dei microfoni
Sistema multiplexato Sistema telefonico Sistema di periferiche collegate a un computer
gate AND IN pass/block’ OUT Multiplexer 2-to-1 Multiplexing: hardware Sono necessari due elementi: 1. circuito passa/blocca analogo al tasto chiuso/aperto 2. circuito di decodifica che chiuderà solo uno degli elementi passa/blocca per volta pass/block’ segnale-in segnale-out 0 0 0 0 1 0 1 0 0 1 1 1 pass/block
Mux a quattro input Circuito che fa “collega” uno dei quattro input all’ouput out a seconda del valore delle due linee di selezione SEL[1..0]
Circuiti passa/blocca Decoder da-2-a-4 IN0 EN0 OR dei segnali IN1 EN1 Z IN2 EN2 IN3 EN3 Mux a quattro input
Progetto 2 Esempio di utilizzo di multiplexer e decoder
FPGA seven-seg-decoder Dalla FPGA escono solo 7 linee di controllo dei led comuni ai 4 array E’ necessario interporre unMUXfra i 4 seven-seg-decoder e le linee di uscita
1 I0 0 F(R,S,T) I1 T I2 T F(R,S,T) = R’S’•1 + RT•(S+S’) I3 00 01 11 10 = R’S’•1 + R’S•0 + RS•T + RS’•T R S Un mux a quattro input può implementare qualunque funzione a tre variabili Esempio: implementiamo la funzione F(R, S, T) = R’S’ + RT Z A B Functions of how many input variables can be implemented by an 8-t0-1 MUX? Utilizzare un 8-to-1 MUX per implementare la funzione: F(X,Y,Z,T) = XY’ + Z’T
Implementazione “tradizionale” Come implementare la funzione logica con un mux?
EN1=1 EN0=0 out0 out1 Tristate Consideriamo una serie di dispositivi collegati a una CPU tramite una linea comune (bus) La CPU può abilitare uno dei dispositivi per volta che accede al bus trasmettendo dati EN1 EN0 EN0=1 out0 out0 out1 C P U out2 out3 EN2 EN3 MUX a quattro input?
IN1 EN1 IN2 EN2 NO! IN3 EN3 Come facciamo a fare MUX? Problema: è impossibile mettere in OR OUT0, ..., OUT3 IN0 EN0 output sul bus?
Le uscite del gate logici che abbiamo studiato finora non possono essere collegate assieme I gate si “sparano” uno contro l’altro
Come facciamo a fare MUX? Andrebbe bene un sistema tale che se un dispositivo non è abilitato è come se non fosse fisicamente collegato al bus EN1=1 EN0=0 out0 out1 EN A OUT EN1 EN0=1 out0 out1 C P U out2 out3 EN2 EN3 Hi-Z: alta impedenza linea scollegata buffer tristate:
EN3 EN0 EN1 EN2 data0 data1 data2 data3 Mux con buffers tristate periferica out0 out1 output sul bus? out2 SI! out3 data## dati che la periferica ## trasmette se richiesto (EN## asserito dalla CPU)
Considerazioni sulla temporizzazione Per impedire conflitti, dovrebbero andare nello stato Hi-Z più velocemente di quanto impiegano per andare nello stato Hi-Z (tpLZ e tpHZ dovrebbero essere minori di tpZL tpZH)
Per sicurezza, la logica di controllo dovrebbe garantire un tempo morto sulla party line durante il quale nessuno pilota la linea.
Esempio motivante: l’unità logico-aritmetica (ALU) Parte importante del percorso dei dati nell’architettura di una CPU Come tutto l’hardware, può essere disegnata usando un linguaggio di programmazione orientato all’hardware (HDL) Utile esempio perchè può essere facilmente decomposta operand1 alu_result ALU operand2 ALU operation opcode
Esempio motivante: l’unità logico-aritmetica (ALU) • Insieme di operazioni: operand1 alu_result ALU • Logic • AND • OR • XOR • NOT operand2 ALU operation opcode • Arithmetic • add • subtract • multiply • negate
arithmetic operation Arith_result Modulo aritmetico operand1 operand0 Alu_result MUX Modulo logico Logic_result logic operation 2 1 Struttura della ALU opcode selection