Los valores predeterminados evitan los latches
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 1 de 38.
Se debe asignar una salida combinacional para cada ruta de entrada. Si un bloque always omite asignar una salida, esa salida conserva su valor anterior, lo que puede inferir un latch. Una asignación default seguida de sobrescrituras hace visible la cobertura.
Fragmento relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
always @* begin
y = 0;
if (en) y = data;
endEl caso default cubre la ruta deshabilitada, por lo que la salida depende únicamente de las entradas actuales.
Asigna cada salida combinacional en todos los caminos; usa valores predeterminados antes de las sobrescrituras condicionales.
Desafío
IntermedioImplementa una salida de 8 bits controlada: cuando en es uno, y es igual a a; de lo contrario, y es cero. Asigna y en cada ruta combinacional. Columnas de salida: y. 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 en las entradas 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, retardos 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 en, input [7:0] a, output reg [7:0] y);
// Reemplaza este marcador de posición con tu diseño.
initial y = 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