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.
Desafío
IntermedioCodifica 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;
endmoduleEsta 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
1RTL combinacional confiable
Los valores predeterminados evitan los latchesCodificadores de prioridadValidación one-hotDecodificación segura de caseRepaso: enrutador de solicitudes4RTL secuencial controlado
Prioridad de reinicio y habilitaciónContadores con saturaciónPipeline de datos y validaciónDetección de flancos muestreadosRepaso: contador de eventos7Proyecto - Monitor de muestras
Acumular muestrasAceptar muestras habilitadas2Anchos y aritmética con signo
Conservar los bits de acarreoComparaciones con signoDesplazamientos aritméticos a la derechaDesbordamiento y saturaciónRepaso: diferencia con signoPractica por tu cuenta: Compilador de Verilog online