Laço While
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 59 de 90.
O loop while repete um bloco de código enquanto uma condição for verdadeira. Diferentemente do loop for, ele não tem um contador integrado. Você deve atualizar a variável do loop por conta própria.
Um loop while verifica uma condição antes de cada iteração. Se a condição for verdadeira, o loop é executado. Se for falsa, o loop para.
Sintaxe:
while (condition) begin
// Código a repetir
endExemplo simples
integer i = 0;
while (i < 5) begin
$display("i = %d", i);
i = i + 1;
endSaída:
i = 0
i = 1
i = 2
i = 3
i = 4O loop é executado enquanto i < 5.
Loop while vs loop for
| Loop for | Loop while | |
|---|---|---|
| Contador | Integrado | Você o gerencia |
| Quando usar | Número conhecido de iterações | Quando o loop será interrompido é desconhecido |
| Sintaxe | for (i=0; i<5; i=i+1) | while (i < 5) |
Laço while em ambientes de teste
Os laços while são úteis quando você não sabe exatamente de quantas iterações precisa:
integer i = 0;
while (i < 16) begin
$display("Testing value %d", i);
i = i + 1;
endEncontrando um Valor Específico
integer i = 0;
reg [7:0] data;
while (data[i] != 1) begin
i = i + 1;
end
$display("First 1 found at position %d", i);Regras importantes
| Regra | Explicação |
|---|---|
| A condição deve se tornar falsa | Caso contrário, ocorre um loop infinito |
| Atualize a variável do loop dentro dele | Ou o loop nunca termina |
A variável do loop deve ser integer ou reg | Não pode ser wire |
Use begin/end para várias instruções | Obrigatório para mais de uma linha |
Desafio
O que fazer:
Adicione o while ausente para imprimir os números de 0 a 2.
Experimente você mesmo
module while_challenge;
integer i;
initial begin
i = 0;
$display("Printing 0 to 2:");
// TODO: Adicione o loop while
// Loop while i < 3
// Dentro, imprima i
// Incremente i em 1
$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 ALU2Tipos 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