Menu
Coddy logo textTech

Generación de reloj

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 71 de 90.

Una señal de reloj es una señal que conmuta continuamente entre 0 y 1 a intervalos regulares. Los relojes son esenciales para la lógica secuencial como los flip-flops y los contadores.

Por qué generar un reloj

En los testbenches, necesita un reloj para probar circuitos secuenciales. El reloj impulsa el comportamiento de los flip-flops, registros y máquinas de estados.

Métodos para generar un reloj

MétodoDescripción
always con retardo #El método más común
Bucle foreverMétodo alternativo
Bucle repeatPara un número fijo de ciclos

Método 1: Bloque Always con Retardo

reg clk;

initial begin
  clk = 0;
end

always #5 clk = ~clk;
  • clk = 0 en el tiempo 0
  • Cada 5 unidades de tiempo, clk conmuta
  • Period = 10 unidades de time
  • Frecuencia = 1/10 = 0.1 por unidad de time

Método 2: Bucle Forever

reg clk;

initial begin
  clk = 0;
  forever begin
    #5 clk = ~clk;
  end
end

Mismo resultado que el método always.

Método 3: Repeat para Cycles fijos

reg clk;

initial begin
  clk = 0;
  repeat (10) begin
    #5 clk = ~clk;
  end
end

Genera exactamente 10 edges de reloj (5 cycles completos), después se detiene.

challenge icon

Desafío

Agrega el código que falta para generar un reloj que alterne cada 4 unidades de tiempo (período = 8 unidades de tiempo).

Qué hacer:

  1. Inicializa clk a 0 en el tiempo 0 usando un bloque initial
  2. Usa un bloque always con un retardo para alternar clk cada 4 unidades de tiempo

Pruébalo tú mismo

module clock_challenge;
  reg clk;
  
  // TODO: Paso 1 - Añade el bloque initial para establecer clk = 0
  
  
  // TODO: Paso 2 - Añade el bloque always para alternar clk cada 4 unidades de tiempo
  

  initial begin
    $monitor("Time %0t: clk = %b", $time, clk);
    #20;
    $display("Clock generated for 20 time units");
    $finish;
  end
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 Fundamentos