Laço Repeat
Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 60 de 90.
O laço repeat executa um bloco de código um número fixo de vezes. Ao contrário do laço for, ele não utiliza uma variável de contador de laço.
Um loop repeat executa um número especificado de vezes. Você fornece a ele uma constante ou expressão que determina quantas iterações executar.
Sintaxe:
repeat (number) begin
// Código para repetir
endExemplo Simples
repeat (5) begin
$display("Hello");
endSaída:
Hello
Hello
Hello
Hello
HelloA mensagem é impressa exatamente 5 vezes.
Repetir com uma Expressão
integer count = 3;
repeat (count) begin
$display("Looping");
endSaída:
Looping
Looping
LoopingRepeat vs Loop For
| Loop For | Loop Repeat | |
|---|---|---|
| Variável de contagem | Sim (explícita) | Não |
| Quando usar | Precisa do valor do índice | Apenas precisa de repetição |
| Exemplo | for (i=0; i<5; i=i+1) | repeat (5) |
Gerando Múltiplos Ciclos de Clock
initial begin
clk = 0;
repeat (20) begin
#5 clk = ~clk;
end
endIsso gera 20 bordas de clock (10 ciclos completos).
Regras Importantes
| Regra | Explicação |
|---|---|
| O número deve ser não negativo | Não é possível repetir um número negativo de vezes |
| Pode usar constante ou expressão | repeat (10) ou repeat (count) |
| Nenhuma variável de loop disponível | Não é possível rastrear o número da iteração |
Use begin/end para múltiplas instruções | Necessário para mais de uma linha |
Desafio
O que fazer:
Adicione o loop repeat ausente para imprimir "Verilog" 4 vezes.
Folha de consulta
O loop repeat executa um bloco de código um número fixo de vezes sem uma variável de contador de loop.
repeat (number) begin
// Código para repetir
endPode usar uma constante ou expressão de variável:
integer count = 3;
repeat (count) begin
$display("Looping");
endCaso de uso comum — gerando ciclos de clock:
repeat (20) begin
#5 clk = ~clk;
endRepeat vs Loop For: Use repeat quando você só precisa de repetição (nenhum índice é necessário); use for quando você precisar do valor do contador de iteração.
Experimente você mesmo
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: Adicionar loop repeat
// Repetir 4 vezes
// Dentro, imprimir "Verilog"
$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 SoftwareNíveis de Abstração de ProjetoSeu Primeiro MóduloComentários4Operadores Parte 1
Operadores AritméticosOperador de MóduloOperadores de ComparaçãoRecapitulação - Matemática SimplesOperadores Bitwise7Atribuição e Portas Lógicas
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ão
Instrução IfIf - ElseRecapitulação - Comparador SimplesInstrução CaseCasex e CasezRecapitulação - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteger e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores Parte 2
Operadores LógicosOperadores de ReduçãoOperadores de DeslocamentoOperador de ConcatenaçãoOperador CondicionalRecapitulação - Desafio de Operadores3Sistemas de Numeração
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRecapitulação - Formatos de Números6Módulos
Estrutura de MóduloPortas de Entrada e SaídaPortas InoutInstanciação de MóduloMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação - Construa um Módulo