Geração de Clock
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 71 de 90.
Um clock é um sinal que alterna continuamente entre 0 e 1 em intervalos regulares. Os clocks são essenciais para lógicas sequenciais, como flip-flops e contadores.
Por que gerar um clock
Em ambientes de teste, você precisa de um clock para testar circuitos sequenciais. O clock controla o comportamento de flip-flops, registradores e máquinas de estado.
Métodos para gerar um clock
| Método | Descrição |
|---|---|
always com atraso de # | Método mais comum |
loop forever | Método alternativo |
loop repeat | Para um número fixo de ciclos |
Método 1: Bloco always com atraso
reg clk;
initial begin
clk = 0;
end
always #5 clk = ~clk;clk = 0no tempo 0- A cada 5 unidades de tempo,
clkalterna
- Período = 10 unidades de tempo
- Frequência = 1/10 = 0.1 por unidade de tempo
Método 2: Loop infinito
reg clk;
initial begin
clk = 0;
forever begin
#5 clk = ~clk;
end
endMesmo resultado do método always.
Método 3: Repetir por ciclos fixos
reg clk;
initial begin
clk = 0;
repeat (10) begin
#5 clk = ~clk;
end
endGera exatamente 10 bordas de clock (5 ciclos completos) e então para.
Desafio
Add o código ausente para gerar um relógio que faz toggle every 4 time units (período = 8 time units).
O que fazer:
- Inicialize
clkcomo 0 notime0 usando uminitialblock - Use um
alwaysblockcom um atraso para fazertoggleemclkevery4timeunits
Experimente você mesmo
module clock_challenge;
reg clk;
// TODO: Passo 1 - Adicione um bloco initial para definir clk = 0
// TODO: Passo 2 - Adicione um bloco always para alternar clk a cada 4 unidades de tempo
initial begin
$monitor("Time %0t: clk = %b", $time, clk);
#20;
$display("Clock generated for 20 time units");
$finish;
end
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU13Temporização e Atrasos
O Que São AtrasosAtrasos de PortasAtrasos de AtribuiçãoDiretiva de Escala de TempoGeração de ClockRevisão - Controle de Temporização2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online