11 / 63 · Conceito
Decodificadores, seleção one-hot e entradas válidas
Converta endereços binários em linhas de seleção e defina enable, intervalos e invariantes.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
De um endereço a linhas de seleção
Um decodificadorDecodificador Circuito que ativa a linha de saída correspondente a um código binário. Com enable, pode colocar todas as saídas em 0 quando está desabilitado. de bits converte um endereço em uma seleção entre até saídas. Com enable , pode-se definir:
Em um decodificador 2 para 4: , , , . Com enable=0, todas as saídas valem 0; com enable=1, exatamente uma vale 1.
Mude a1a0 com enable=1 e observe que apenas uma entre d0–d3 é ativada. Depois coloque enable=0 e confira que todas se apagam.
d[i] = enable AND (2 × a1 + a0 = i)
O valor padrão completa a função
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
endmoduleA atribuição inicial cobre todos os caminhos de execução para evitar a retenção da saída anterior. Escrever always_comb não transforma automaticamente um ramo indefinido em um circuito correto.
Quando a quantidade de saídas não é potência de dois
Dez dispositivos exigem quatro bits de endereço, mas 10–15 são inválidos. É preciso especificar uma política, como todas as saídas em 0 e um indicador de erro em 1. Um código não usado não autoriza qualquer saída.
Além da correspondência entrada-saída, verifique se nunca há várias seleções ativas ao mesmo tempo e se todas se apagam ao desabilitar. Esses invariantesInvariante Condição que deve ser verdadeira em toda execução permitida. Por exemplo, a ocupação de uma FIFO com profundidade 4 sempre fica entre 0 e 4. Saiba mais são especialmente importantes para habilitação de escrita de memória e seleção de barramentos. À medida que o decodificador cresce, aumentam o fan-out e a carga da fiação dos endereços; por isso, uma decodificação hierárquica pode ser apropriada.
Experimente
Projete um decodificador de dez saídas. Determine a largura do endereço, a quantidade de códigos inválidos e a condição obrigatória com en=0.
Ler a explicação
O endereço precisa de bits e há seis códigos inválidos. Com en=0, todas as seleções devem valer 0, qualquer que seja o endereço. Para um endereço inválido, pode-se especificar que todas valham 0 e que um erro seja indicado separadamente.