Prioridad de reinicio y habilitación
Parte de la sección Diseño y verificación RTL del Journey de Verilog de Coddy. Lección 16 de 38.
Un bloque sincronizado puede mantener un registro omitiendo una asignación en los flancos deshabilitados. Este almacenamiento intencionado se diferencia de un latch combinacional accidental. Escribe una prioridad explícita entre el restablecimiento, la carga y la habilitación. Aquí los restablecimientos son síncronos: solo surten efecto en el flanco ascendente del reloj.
Fragmento relevante; las declaraciones y conexiones circundantes se proporcionan en el desafío.
always @(posedge clk) begin
if(rst) q <= 0;
else if(en) q <= data;
endEl reinicio tiene prioridad cuando ambos controles están activados, y los flancos no reiniciados con la habilitación desactivada conservan q.
Usa una cadena de prioridad sincronizada y define con precisión el comportamiento de reinicio, carga, habilitación y retención.
Desafío
IntermedioImplementa un registro de 8 bits q con reinicio síncrono activo en alto rst y habilitación en. En un flanco ascendente, el reinicio tiene prioridad y borra q; de lo contrario, los flancos con la habilitación activa cargan a; los flancos con la habilitación desactivada mantienen q. Columnas de salida: q. Todos los controles y datos permanecen estables antes de cada flanco ascendente del reloj; los resultados se observan después.
Completa design.v y conserva los nombres de los módulos y los puertos. El testbench.v bloqueado proporciona cambios de entrada e imprime las salidas una vez estabilizadas. 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 clk, input rst, input en, input [7:0] a, output reg [7:0] q);
// Reemplaza este marcador de posición con tu diseño.
initial q = 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