Menu
Coddy logo textTech

Цикл While

Часть раздела Основы путешествия по Verilog на Coddy — урок 59 из 90.

Цикл while повторяет блок кода до тех пор, пока условие истинно. В отличие от цикла for, у него нет встроенного счётчика — вам нужно обновлять переменную цикла самостоятельно.

Цикл while проверяет условие перед каждой итерацией. Если условие истинно, цикл выполняется. Если ложно, цикл останавливается.

Синтаксис:

while (condition) begin
  // Код для повторения
end

Простой пример

integer i = 0;

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

Вывод:

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

Цикл выполняется до тех пор, пока i < 5.

While vs For Loop

 Цикл ForЦикл While
СчётчикВстроенныйУправляется вручную
Когда использоватьИзвестно число итерацийНеизвестно, когда цикл остановится
Синтаксисfor (i=0; i<5; i=i+1)while (i < 5)

Цикл While в тестовых окружениях (Testbenches)

Циклы while полезны, когда вы не знаете точно, сколько итераций вам понадобится:

integer i = 0;

while (i < 16) begin
  $display("Testing value %d", i);
  i = i + 1;
end

Поиск конкретного значения

integer i = 0;
reg [7:0] data;

while (data[i] != 1) begin
  i = i + 1;
end
$display("First 1 found at position %d", i);

Важные правила

ПравилоПояснение
condition должно стать falseИначе получится бесконечный loop
Обновляйте переменную цикла InsideИначе loop никогда не завершится
Переменная цикла должна быть integer или regНе может быть wire
Используйте begin/end для нескольких операторовТребуется, если строк больше одной
challenge icon

Задание

Что нужно сделать:

Добавьте пропущенный цикл while, чтобы вычеканить числа от 0 до 2.

Попробуйте сами

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: Добавьте цикл while
    // Цикл, пока i < 3
    // Внутри выведите i
    // Увеличьте i на 1
    
    $finish;
  end
endmodule
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы