Menu
Coddy logo textTech

Clock Generation

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

Un reloj es una señal que cambia 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 bancos de pruebas, necesitas un reloj para probar circuitos secuenciales. El reloj controla el comportamiento de los flip-flops, los registros y las máquinas de estados.

Métodos para generar un Clock

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

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 cambia de estado
  • 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: Repetir durante un número fijo de cycles

reg clk;

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

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

challenge icon

Desafío

Add el código que falta para generar un reloj que cambie cada 4 time units (período = 8 time units).

Qué hacer:

  1. Inicializa clk a 0 en el time 0 usando un initial block
  2. Usa un always block con un retraso para cambiar clk cada 4 time units

Pruébalo tú mismo

module clock_challenge;
  reg clk;
  
  // TODO: Paso 1 - Añade un bloque initial para establecer clk = 0
  
  
  // TODO: Paso 2 - Añade un 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

Practica por tu cuenta: Compilador de Verilog online