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.

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 reloj

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 ciclos

Método 1: Bloque always con retraso

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
  • Período = 10 unidades de tiempo
  • Frecuencia = 1/10 = 0.1 por unidad de tiempo

Método 2: Bucle infinito

reg clk;

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

El mismo resultado que el método always.

Método 3: Repetir durante ciclos fijos

reg clk;

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

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

challenge icon

Desafío

Añade el código que falta para generar un reloj que cambie de estado cada 4 unidades de tiempo (periodo = 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 retraso para cambiar el estado de clk cada 4 unidades de tiempo

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