11 / 63 · Concetto
Decoder, selezione one-hot e ingressi validi
Convertire indirizzi binari in selezioni e progettare enable, intervalli e invarianti.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
Convertire un indirizzo in linee di selezione
Un decoderDecoder Attiva la linea corrispondente a un codice binario. Con enable disattivato può portare tutte le uscite a 0. a bit converte l'indirizzo nella selezione di una fra al massimo uscite. Con abilitazione , l'uscita può essere definita così:
Nel decoder 2-to-4 si ha , , , . Con enable=0 tutte le uscite sono 0; con enable=1 esattamente una vale 1.
Cambiate a1a0 con enable=1: si accende una sola delle uscite da d0 a d3. Verificate anche che enable=0 spenga tutte le selezioni.
d[i] = enable AND (2 × a1 + a0 = i)
I valori predefiniti completano la funzione
module decoder2 (
input logic en,
input logic [1:0] addr,
output logic [3:0] select
);
always_comb begin
select = 4'b0000;
if (en) begin
case (addr)
2'd0: select = 4'b0001;
2'd1: select = 4'b0010;
2'd2: select = 4'b0100;
2'd3: select = 4'b1000;
default: select = 4'b0000;
endcase
end
end
endmoduleL'assegnazione iniziale copre tutti i percorsi d'esecuzione e impedisce di ricordare l'uscita precedente. Scrivere soltanto always_comb non rende automaticamente corretti i rami non definiti.
Quando il numero di uscite non è una potenza di due
Per dieci dispositivi serve un indirizzo a quattro bit, ma i codici 10–15 sono invalidi. Occorre specificare una politica, per esempio tutte le uscite a 0 e un flag d'errore a 1. Un codice inutilizzato non autorizza automaticamente uscite arbitrarie.
Oltre alla corrispondenza ingresso-uscita, verificate: non si attivano mai più selezioni insieme? Con disable sono tutte spente? Queste invariantiInvariante Condizione sempre vera in ogni esecuzione ammessa. Una FIFO profonda quattro contiene, per esempio, sempre da zero a quattro elementi. Approfondisci sono cruciali per write enable delle memorie e selezione dei bus. Decoder più grandi aumentano fan-out e carico dei collegamenti d'indirizzo, motivando una decodifica gerarchica.
Prova tu
Progettate un decoder con dieci uscite: definite larghezza d’indirizzo, numero di codici invalidi e condizione necessaria con en=0.
Leggi la spiegazione
Servono bit e sei codici sono invalidi. Con en=0 tutte le selezioni devono valere 0, indipendentemente dall’indirizzo. Anche per indirizzi invalidi si possono prescrivere tutte le uscite a 0 e un errore separato.