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
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 |
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
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.
- 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
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
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): 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
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
- 1-hot: un solo 1. Decoder -to-: ingresso binario 1-hot; uscite = mintermini ; AND a ingressi. 2-to-4: = AND di diretti/negati.
- Gerarchico: 3-to-8 = 2-to-4 + 1-to-2 + 8 AND2 (costo ingressi); 6-to-64 = 2 × 3-to-8 + 64 AND2 (costo ; piatto ). Enable: uscite a 0 se ; per meglio sugli ingressi.
- Funzione = decoder + OR dei mintermini (, ); se più di metà, NOR dei mintermini di .
- BCD 7 segmenti con X per –: , , , ...
- Encoder ottalebinario: , , ; sbaglia con due 1 () o con tutti 0.
- Priority encoder 4 ingressi: , , (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 →).
- Errori: decoder binario; encoder senza priorità; costo con AND a 7 ingressi.
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