11 / 63 · Concepto
Decodificadores, selección one-hot y entradas válidas
Convierta direcciones binarias en líneas de selección y defina enable, rangos e invariantes.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
De una dirección a líneas de selección
Un decodificadorDecodificador Circuito que activa la línea de salida correspondiente a un código binario. Con enable, puede llevar todas las salidas a 0 cuando está deshabilitado. de bits convierte una dirección en una selección entre hasta salidas. Con enable , puede definirse:
En un decodificador 2 a 4: , , , . Con enable=0, todas las salidas valen 0; con enable=1, exactamente una vale 1.
Cambie a1a0 con enable=1 y observe que se activa solo una de d0–d3. Después ponga enable=0 y compruebe que todas se apagan.
d[i] = enable AND (2 × a1 + a0 = i)
El valor predeterminado completa la función
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
endmoduleLa asignación inicial cubre todos los caminos de ejecución para evitar conservar la salida anterior. Escribir always_comb no convierte automáticamente una rama indefinida en un circuito correcto.
Cuando el número de salidas no es una potencia de dos
Diez dispositivos requieren cuatro bits de dirección, pero 10–15 son inválidos. Debe especificarse una política, como todas las salidas a 0 y un indicador de error a 1. Que un código no se use no autoriza cualquier salida.
Además de la correspondencia entrada-salida, verifique que nunca se activan varias selecciones a la vez y que al deshabilitar se apagan todas. Estos invariantesInvariante Condición que debe cumplirse en toda ejecución permitida. Por ejemplo, la ocupación de una FIFO de profundidad 4 siempre está entre 0 y 4. Más información son especialmente importantes para permisos de escritura de memoria y selección de buses. Al crecer el decodificador aumentan fan-out y carga de cableado de las direcciones; por eso puede convenir una decodificación jerárquica.
Inténtalo tú
Diseñe un decodificador de diez salidas. Determine el ancho de dirección, el número de códigos inválidos y la condición obligatoria con en=0.
Leer la explicación
La dirección necesita bits y hay seis códigos inválidos. Con en=0, todas las selecciones deben valer 0, cualquiera que sea la dirección. Para una dirección inválida puede especificarse que todas valgan 0 y se indique un error por separado.