Menu
Coddy logo textTech

Codificadores de prioridad

Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 2 de 38.

Un codificador mapea un bit de solicitud a un índice. Múltiples solicitudes activas necesitan una regla de prioridad explícita. Una cadena if/else-if da prioridad a las ramas anteriores; una señal válida separada distingue la ausencia de solicitud del índice cero.

Fragmento relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.

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

La primera rama verdadera gana, lo que da prioridad al bit de solicitud de mayor valor.

Indica el orden de prioridad y define explícitamente la salida sin solicitud.

challenge icon

Desafío

Intermedio

Codifica el bit afirmado de mayor posición de req de 4 bits en code. Establece valid si existe alguna solicitud; cuando req es cero, code y valid son cero. Columnas de salida: code, valid. Todos los valores de estímulo son valores binarios conocidos.

Completa design.v y conserva los nombres de sus módulos y puertos. El testbench.v bloqueado proporciona cambios de entrada e imprime las salidas una vez que se estabilizan. Elige un escenario mediante un argumento del simulador como +CASE=1; no se requiere entrada estándar. No añadas impresiones, retrasos ni terminación de la simulación al diseño. La salida esperada es una fila de valores decimales por observación, separados por un espacio y terminada con un salto de línea.

Pruébalo tú mismo

module dut (input [3:0] req, output reg [1:0] code, output reg valid);
    // Reemplaza este marcador de posición con tu diseño.
    initial code = 0;
    initial valid = 0;
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Diseño y verificación RTL

Practica por tu cuenta: Compilador de Verilog online