Menu
CoddyTech

Laço For

Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 58 de 90.

Os loops em Verilog permitem executar um bloco de código várias vezes. Eles são especialmente úteis em testbenches para gerar padrões de teste repetitivos, inicializar a memória e percorrer arrays. Ao contrário das descrições de hardware, que são executadas em paralelo, os loops são executados sequencialmente, o que os torna ideais para simulação e testes.

O loop mais comumente usado é o loop for, que se repete um número específico de vezes. Um loop for executa um bloco de código repetidamente, com uma variável de loop que muda a cada iteração. Você controla exatamente quantas vezes ele é executado.

Sintaxe:

for (initialization; condition; increment) begin
  // Código a repetir
end
ParteO que fazExemplo
initializationDefine o valor iniciali = 0
conditionQuando parari < 10
incrementAltera a cada repetiçãoi = i + 1

Exemplo simples

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Saída:

i = 0
i = 1
i = 2
i = 3
i = 4

O loop é executado 5 vezes (i = 0, 1, 2, 3, 4).

Laço for em bancadas de teste

Os laços for são comumente usados para testar todas as combinações de entrada:

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Isso testa todos os 16 valores possíveis de um sinal de 4 bits.

Laço for com arrays

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Isso inicializa 10 posições de memória.

Regras importantes

RegraExplicação
A variável de controle do loop deve ser integer ou reg Não pode ser wire
Use begin/end para várias instruçõesNecessário para mais de uma linha
Evite loops infinitosCertifique-se de que a condição eventualmente se torne falsa
Use limites constantes em código sintetizávelA síntese desenrola o loop em uma cópia da lógica para cada iteração
challenge icon

Desafio

O que fazer:

Adicione o laço for que está faltando para imprimir os números de 0 a 3.

Experimente você mesmo

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Adicione um loop for
    // Inicialize i = 0
    // Repita enquanto i < 4
    // Incremente i = i + 1
    // Dentro do loop, imprima com: $display("i = %d", i);
    
    $finish;
  end
endmodule
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Verilog online