Decoder, encoder e priority encoder
In questa pagina 6
Sono i blocchi combinatori che cambiano codifica: il decoder da binario a 1-hot, l'encoder da 1-hot a binario. Sono la base dei selettori, dei decoder di indirizzo delle memorie (Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chipUna memoria è un insieme di celle (word da più bit) con circuiteria di controllo. Classificazioni: sola lettura (ROM) o lettura/scrittura; ad accesso casuale (RAM), seriale (SAM) o ibrido (Flash); volatile (SRAM, DRAM) o non volatile. Una RAM $2^k\times n$ ha $k$ bit di indirizzo (indipendenti da $n$), $n$ bit dati, read/write e chip select. SRAM: cella bistabile (latch), veloce, senza refresh; DRAM: condensatore, più densa, con refresh. Organizzazione: decoder di riga e colonna (coincident selection), uscite tri-state, array di chip (più chip per più parole, più bit per più linee dati).Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chip →) e delle unità di controllo.
Codifica 1-hot
Definizione (codifica one-hot). Nella codifica one-hot una configurazione a bit contiene uno e un solo 1, in una posizione che identifica il valore. Con bit binari i valori diventano:
binario 000 001 010 011 100 101 110 111 one-hot (8 bit) 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
Esempio. Il valore in one-hot a bit è : vale solo il bit di posizione .
La 1-hot usa più bit, ma è comoda: ogni bit "dice" una cosa sola (anche per gli stati di una macchina, Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli statiSintesi di una rete sequenziale sincrona: specifiche $\to$ diagramma degli stati $\to$ tabella (riduzione degli stati equivalenti) $\to$ codifica binaria degli stati $\to$ scelta del FF (D PET) $\to$ equazioni di ingresso dei FF e delle uscite $\to$ minimizzazione $\to$ circuito e verifica. Lo stato riassume la parte di storia utile; per i riconoscitori si ha uno stato per ogni prefisso riconosciuto, riusando gli stati (sovrapposizioni). Reset: stato iniziale noto. Codifica Gray (numero minimo di FF) vs 1-hot (un FF per stato, logica più semplice): per il riconoscitore 1101 Gray costa circa la metà.Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli stati →).
Decoder
Definizione (decoder -to-). Un decoder -to- ha ingressi e uscite : pone a 1 l'uscita il cui indice è codificato dagli ingressi e a 0 le altre. Se a ogni combinazione degli ingressi corrisponde un'uscita valida, . Esempio: ingresso (cioè ) .
Le uscite di un decoder sono i mintermini degli ingressi: (Forme canoniche - mintermini, maxtermini, SOP e POSUn mintermine è un prodotto che contiene una e una sola volta tutte le variabili (dirette o negate) e vale 1 su una sola riga della tabella di verità; un maxtermine è la somma duale e vale 0 su una sola riga; con $n$ variabili ci sono $2^n$ mintermini e $2^n$ maxtermini, e $\overline{m_i}=M_i$. Forma canonica SOP = somma dei mintermini delle righe con $F=1$; POS = prodotto dei maxtermini delle righe con $F=0$. Le forme canoniche si ricavano sempre dalla tabella ma sono ridondanti: servono come punto di partenza per la minimizzazione. SOP e POS si realizzano con circuiti a due livelli.Forme canoniche - mintermini, maxtermini, SOP e POS →). Quindi si realizza con porte AND a ingressi, ciascuna con la combinazione di ingressi diretti e negati del proprio mintermine.
Esempio. Decoder -to-: con ingresso () le uscite valgono , e .
- 1-to-2: , (un inverter e un filo).
- 2-to-4: , , , : 2 inverter e 4 AND a 2 ingressi.
Approccio gerarchico e costo
Per decoder grandi, un'AND per mintermine con ingressi ciascuna è troppo costosa. Si collegano decoder piccoli: ad esempio un 3-to-8 si ottiene con un decoder 2-to-4, un decoder 1-to-2 e 8 AND a 2 ingressi (ogni AND combina un'uscita del 2-to-4 con una del 1-to-2). Un 6-to-64 si realizza con due decoder 3-to-8 e 64 AND a 2 ingressi.
Costo come numero di ingressi di porta (gli inverter contano 1):
| circuito | calcolo | costo |
|---|---|---|
| 2-to-4 | 10 | |
| 3-to-8 gerarchico | 27 | |
| 6-to-64 gerarchico | 182 | |
| 6-to-64 "piatto" | AND a 6 ingressi | 390 |
(Il 6-to-64 piatto richiede 64 AND a 6 ingressi, non a 7.) La struttura gerarchica costa meno della metà.
Decoder con enable
Un enable EN abilita o meno le uscite: con tutte le uscite valgono 0. Si realizza con AND di enable sulle uscite oppure, per decoder grandi () più economico, collegando EN agli ingressi del decoder (a livello delle AND finali).
Realizzare una funzione con un decoder
Proprietà (funzione realizzata con un decoder e una OR). Una funzione in SOP è la somma dei suoi mintermini; il decoder genera tutti i mintermini. Quindi ogni funzione si realizza con un decoder e una porta OR a cui si collegano le uscite dei mintermini della SOP.
Esempio: sommatore completo. Ingressi (addendi e riporto), e : decoder 3-to-8 e due OR a 4 ingressi, , (Sommatori binari - half adder, full adder e ripple carryHalf adder (2 ingressi): $S=X\oplus Y$, $C=XY$. Full adder (3 ingressi, con riporto in ingresso $Z$): $S=X\oplus Y\oplus Z$, $C=XY+XZ+YZ=G+PZ$ con $P=X\oplus Y$, $G=XY$; si realizza con due half adder e una OR. Il ripple carry adder a $n$ bit concatena $n$ full adder: il riporto "ondeggia" dal LSB al MSB, quindi il ritardo cresce linearmente con $n$. È un circuito iterativo (gerarchico e regolare). Il moltiplicatore a 2 bit usa 4 AND e 2 half adder.Sommatori binari - half adder, full adder e ripple carry →).
Conviene quando la funzione ha pochi mintermini. Se ne ha più della metà, la OR diventa grande: si usa invece una NOR a cui si collegano i mintermini della funzione complementata (, cioè solo quando nessun mintermine di è attivo).
Esempio: decoder da BCD a sette segmenti
Il display a sette segmenti ha i segmenti (da quello in alto, in senso orario, poi quello centrale). Il circuito riceve una cifra BCD e accende i segmenti giusti. Tabella (1 = acceso, caratteri usuali; con il segmento , con ):
| cifra | a | b | c | d | e | f | g |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 6 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
Con le combinazioni – come don't care, le sette mappe di Karnaugh danno (variabili = MSB, = LSB):
| segmento | SOP minima |
|---|---|
Tre realizzazioni possibili: (1) porte con sette mappe indipendenti, condividendo i prodotti comuni tra le uscite per risparmiare AND; (2) decoder 4-to-16 più sette OR, collegando a ogni OR i mintermini del segmento; (3) sette multiplexer 8-to-1 (Multiplexer e funzioni logiche realizzate con decoder e multiplexerIl multiplexer (MUX) $2^n$-to-1 ha $2^n$ ingressi dati, $n$ ingressi di selezione e un'uscita che copia l'ingresso selezionato: $Y=\sum_i m_i(S),I_i$. Si realizza con decoder + AND di enable + OR (costo 22 per il 4-to-1) o direttamente (costo 18). Un MUX $2^n$-to-1 realizza qualunque funzione di $n$ variabili (ingressi dati = colonna della tabella di verità); con un MUX $2^{n-1}$-to-1 si usano le $n-1$ variabili come selezione e gli ingressi dati valgono $0$, $1$, $X$ o $\overline X$ (l'ultima variabile). I MUX a vettori selezionano gruppi di bit.Multiplexer e funzioni logiche realizzate con decoder e multiplexer →). Controllo: la cifra () deve spegnere solo e : ✓; ✓; ✓.
Encoder
Definizione (encoder). L'encoder esegue l'operazione inversa del decoder: riceve un segnale 1-hot a bit e produce la codifica binaria a bit. Per l'encoder da ottale a binario con ingressi (un solo 1 alla volta):
Esempio. Con e gli altri ingressi a : , , , cioè .
Ogni uscita è la OR degli ingressi il cui indice ha quel bit a 1. La tabella di verità ha solo righe specificate; le altre combinazioni sono don't care.
Due problemi.
- Se due ingressi valgono 1 insieme (per esempio ) l'uscita è la OR dei codici: , uguale a quella del solo : errata.
- Se tutti gli ingressi valgono 0 l'uscita è , uguale a quella di .
Priority encoder
Definizione (priority encoder). Il priority encoder gestisce ingressi non 1-hot con due modifiche:
- una funzione di priorità: conta solo l'ingresso a 1 con la priorità più alta, gli altri sono ignorati;
- un'uscita V (valid): se almeno un ingresso vale 1, se sono tutti 0 (e allora l'uscita è don't care).
Esempio a 4 ingressi, priorità :
| 0 | 0 | 0 | 0 | X | X | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| 0 | 0 | 1 | X | 0 | 1 | 1 |
| 0 | 1 | X | X | 1 | 0 | 1 |
| 1 | X | X | X | 1 | 1 | 1 |
Mappe di Karnaugh (con le X come don't care) danno Verifica su : , , quindi cioè , l'indice dell'ingresso a 1 più alto () ✓. Il controllo su tutte le 16 combinazioni (confronto con l'indice del primo 1 incontrato partendo da ) dà sempre lo stesso risultato.
Errori comuni
- Credere che il decoder produca la forma binaria: produce una 1-hot.
- Dimenticare che un encoder semplice è corretto solo con ingresso 1-hot.
- Non gestire il caso "tutti gli ingressi a 0" nel priority encoder (serve ).
- Contare male il costo: nel 6-to-64 piatto le AND hanno 6 ingressi (non 7).
Versione ripasso
- Codifica 1-hot: una sola posizione a 1; il valore su 8 bit è .
- Decoder -to-: ingresso binario uscita 1-hot, con ; ogni uscita è un mintermine , realizzato con AND a ingressi. Esempi: ; 2-to-4: , , , .
- Decoder gerarchico e costo (ingressi di porta, inverter inclusi): 2-to-4 ; 3-to-8 costruito con 2-to-4, 1-to-2 e 8 AND a 2 ingressi ; 6-to-64 con due 3-to-8 e 64 AND a 2 ingressi ; 6-to-64 "piatto" con 64 AND a 6 ingressi .
- Enable: con tutte le uscite valgono 0; per conviene collegare EN agli ingressi del decoder.
- Funzione = decoder + OR: ogni funzione in SOP si realizza con un decoder e una OR dei suoi mintermini. Sommatore completo: , (Sommatori binari - half adder, full adder e ripple carryHalf adder (2 ingressi): $S=X\oplus Y$, $C=XY$. Full adder (3 ingressi, con riporto in ingresso $Z$): $S=X\oplus Y\oplus Z$, $C=XY+XZ+YZ=G+PZ$ con $P=X\oplus Y$, $G=XY$; si realizza con due half adder e una OR. Il ripple carry adder a $n$ bit concatena $n$ full adder: il riporto "ondeggia" dal LSB al MSB, quindi il ritardo cresce linearmente con $n$. È un circuito iterativo (gerarchico e regolare). Il moltiplicatore a 2 bit usa 4 AND e 2 half adder.Sommatori binari - half adder, full adder e ripple carry →). Se la funzione ha più della metà dei mintermini si usa una NOR sui mintermini di .
- BCD sette segmenti: con le combinazioni – come don't care: , , , , , , . Controllo sulla cifra (): , , .
- Tre realizzazioni: porte con mappe indipendenti; decoder 4-to-16 più sette OR; sette multiplexer 8-to-1 (Multiplexer e funzioni logiche realizzate con decoder e multiplexerIl multiplexer (MUX) $2^n$-to-1 ha $2^n$ ingressi dati, $n$ ingressi di selezione e un'uscita che copia l'ingresso selezionato: $Y=\sum_i m_i(S),I_i$. Si realizza con decoder + AND di enable + OR (costo 22 per il 4-to-1) o direttamente (costo 18). Un MUX $2^n$-to-1 realizza qualunque funzione di $n$ variabili (ingressi dati = colonna della tabella di verità); con un MUX $2^{n-1}$-to-1 si usano le $n-1$ variabili come selezione e gli ingressi dati valgono $0$, $1$, $X$ o $\overline X$ (l'ultima variabile). I MUX a vettori selezionano gruppi di bit.Multiplexer e funzioni logiche realizzate con decoder e multiplexer →).
- Encoder ottale binario: , , . Esempio: dà . Problemi: con due 1 (per esempio ) l'uscita è errata; con tutti 0 l'uscita è , come con .
- Priority encoder: la priorità decide quale ingresso conta, e l'uscita vale 1 se almeno un ingresso è a 1. Priorità : , , . Verifica su : , cioè (Interfacce di input-output - strobing, handshaking, interrupt e DMALe periferiche (tastiera, disco, display) hanno velocità, codici e funzionamento diversi dalla CPU: servono interfacce che sincronizzano e adattano i dati. Un unico bus collega più periferiche, ognuna con un decoder di indirizzo (memory-mapped: indirizzi comuni con la memoria; isolated: linee di controllo separate). Controllo asincrono con strobing (senza conferma) o handshaking (con conferma, più robusto). Trasmissione seriale (meno linee) o parallela; simplex, half e full duplex; USB a pacchetti con codifica NRZI. Modi di trasferimento: I/O programmato (busy-wait, spreca la CPU), interrupt (priorità: daisy chain, parallela con maschera), DMA (il controllore prende il bus con BR/BG e trasferisce senza CPU).Interfacce di input-output - strobing, handshaking, interrupt e DMA →).
- Errori: decoder preso per un convertitore binario; encoder semplice usato con ingressi non 1-hot; caso "tutti 0" non gestito nel priority encoder (serve ); costo con AND a 7 ingressi invece di 6.
Esercizi su questo argomento
- Esercizio 1 · segmento 2 di un display a sette segmenti con don't care (tema d'esame giugno 2022)
- Esercizio 10 · segmento a di un display a sette segmenti (tema d'esame febbraio 2023)
- Esercizio 20 · quiz su algebra di Boole, forme canoniche, mappe di Karnaugh e blocchi combinatori (temi d'esame 2022-2026)
Teoria collegata
- Interfacce di input-output - strobing, handshaking, interrupt e DMA
- Logica programmabile - ROM, PLA, PAL e FPGA
- Memorie ROM e RAM - SRAM, DRAM e organizzazione dei chip
- Multiplexer e funzioni logiche realizzate con decoder e multiplexer
- Progettazione di una rete combinatoria - approccio gerarchico e porte NAND-NOR
- Registri a scorrimento e contatori
- VHDL - istruzioni concorrenti, process e testbench