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étodo | Descripción |
|---|---|
always con un retraso de # | Método más común |
Bucle forever | Método alternativo |
Bucle repeat | Para 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 = 0en el tiempo 0- Cada 5 unidades de tiempo,
clkcambia 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
endMismo 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
endGenera exactamente 10 flancos de reloj (5 cycles completos) y después se detiene.
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:
- Inicializa
clka 0 en el time 0 usando uninitialblock - Usa un
alwaysblock con un retraso para cambiarclkcada 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
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
Qué es VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicPractica por tu cuenta: Compilador de Verilog online