Menu
Coddy logo textTech

Codificadores de prioridade

Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 2 de 38.

Um codificador mapeia um bit de solicitação para um índice. Várias solicitações ativas precisam de uma regra de prioridade explícita. Uma cadeia de if/else-if dá prioridade às ramificações anteriores; um sinal valid separado distingue a ausência de solicitação do índice zero.

Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.

if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;

A primeira ramificação verdadeira vence, dando prioridade ao bit de requisição de maior valor.

Declare a ordem de prioridade e defina explicitamente a saída quando não houver solicitação.

challenge icon

Desafio

Médio

Codifique o bit mais alto afirmado de req de 4 bits em code. Defina valid se existir qualquer requisição; quando req for zero, code e valid serão zero. Colunas de saída: code, valid. Todos os valores de estímulo são valores binários conhecidos.

Complete design.v e preserve os nomes e as portas do módulo. O testbench.v bloqueado fornece alterações nas entradas e imprime as saídas depois que elas se estabilizam. Ele escolhe um cenário usando um argumento do simulador, como +CASE=1; não é necessária entrada padrão. Não adicione impressão, atrasos ou encerramento da simulação ao design. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminando com uma nova linha.

Experimente você mesmo

module dut (input [3:0] req, output reg [1:0] code, output reg valid);
    // Substitua este placeholder pelo seu design.
    initial code = 0;
    initial valid = 0;
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Design e Verificação RTL

Pratique por conta própria: Compilador de Verilog online