Menu
Coddy logo textTech

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;
end

El 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.

challenge icon

Desafío

Intermedio

Implementa 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;
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