Menu
CoddyTech

Цикл 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 и цикл for

 Цикл forЦикл while
СчётчикВстроенныйВы управляете им
Когда использоватьИзвестное число итерацийНеизвестно, когда цикл остановится
Синтаксис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);

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

ПравилоОбъяснение
Условие должно стать ложнымИначе возникнет бесконечный цикл
Обновляйте переменную цикла внутри циклаИначе цикл никогда не завершится
Переменная цикла должна иметь тип 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Проверьте себя

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

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

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