Menu
Coddy logo textTech

Laço For

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

Loops em Verilog permitem que você execute um bloco de código várias vezes. Eles são especialmente úteis em testbenches para gerar padrões de teste repetitivos, inicializar memória e iterar sobre arrays. Ao contrário das descrições de hardware que rodam em paralelo, os loops executam sequencialmente, tornando-os ideais para simulação e testes.

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

Sintaxe:

for (initialization; condition; increment) begin
  // Código para repetir
end
ParteO que fazExemplo
initializationDefine o valor iniciali = 0
conditionQuando parari < 10
incrementMuda 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 executa 5 vezes (i = 0, 1, 2, 3, 4).

Loop For em Testbenches

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

reg [3:0] 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.

Loop 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 locais de memória.

Regras Importantes

RegraExplicação
A variável de loop deve ser integer ou reg Não pode ser wire
Use begin/end para múltiplas instruçõesNecessário para mais de uma linha
Evite loops infinitosCertifique-se de que a condição eventualmente se torne falsa
Melhor utilizado em testbenchesA maioria dos loops não é sintetizável
challenge icon

Desafio

O que fazer:

Adicione o loop for que falta para imprimir os números de 0 a 3.

Folha de consulta

O laço for em Verilog repete um bloco de código um número específico de vezes:

for (initialization; condition; increment) begin
  // Código para repetir
end

Exemplo imprimindo de 0 a 4:

integer i;

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

Regras principais:

  • A variável do laço deve ser integer ou reg (não wire)
  • Use begin/end para múltiplas instruções
  • Garanta que a condição eventualmente se torne falsa para evitar laços infinitos
  • Laços são melhor utilizados em testbenches (na maioria das vezes não são sintetizáveis)

Experimente você mesmo

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Adicionar loop for
    // Inicializar i = 0
    // Loop enquanto i < 4
    // Incrementar i = i + 1
    // Dentro, imprimir 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