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

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

While против For Loop

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

Цикл while в тестбенчах

Циклы 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
Обновляй переменную loop внутриИначе loop никогда не завершится
Переменная 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 &lt; 3
    // Внутри вывести i
    // Увеличить i на 1
    
    $finish;
  end
endmodule
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog