Menu
Coddy logo textTech

Цикл Repeat

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

Цикл repeat выполняет блок кода фиксированное количество раз. В отличие от цикла for, он не использует переменную-счетчик цикла.

Цикл repeat выполняется заданное количество раз. Вы передаете ему константу или выражение, которое определяет, сколько итераций необходимо выполнить.

Синтаксис:

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

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

repeat (5) begin
  $display("Hello");
end

Вывод:

Hello
Hello
Hello
Hello
Hello

Сообщение выводится ровно 5 раз.

Повторение с выражением

integer count = 3;

repeat (count) begin
  $display("Looping");
end

Вывод:

Looping
Looping
Looping

Цикл Repeat против цикла For

 Цикл ForЦикл Repeat
Переменная-счетчикДа (явная)Нет
Когда использоватьНужно значение индексаНужно просто повторение
Примерfor (i=0; i<5; i=i+1)repeat (5)

Генерация нескольких тактовых циклов

initial begin
  clk = 0;
  repeat (20) begin
    #5 clk = ~clk;
  end
end

Это генерирует 20 фронтов тактового сигнала (10 полных циклов).

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

ПравилоОбъяснение
Число должно быть неотрицательнымНельзя повторять отрицательное количество раз
Можно использовать константу или выражениеrepeat (10) или repeat (count)
Переменная цикла недоступнаНевозможно отследить номер итерации
Используйте begin/end для нескольких операторовТребуется для более чем одной строки
challenge icon

Задание

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

Добавьте недостающий цикл repeat, чтобы вывести "Verilog" 4 раза.

Шпаргалка

Цикл repeat выполняет блок кода фиксированное количество раз без использования переменной счетчика цикла.

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

Можно использовать константу или выражение с переменной:

integer count = 3;
repeat (count) begin
  $display("Looping");
end

Распространенный вариант использования — генерация тактовых сигналов:

repeat (20) begin
  #5 clk = ~clk;
end

Repeat против цикла For: Используйте repeat, когда вам нужно только повторение (индекс не требуется); используйте for, когда вам нужно значение счетчика итераций.

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

module repeat_challenge;
  
  initial begin
    $display("Printing 4 times:");
    
    // TODO: Добавить цикл repeat
    // Повторить 4 раза
    // Внутри вывести "Verilog"
    
    $finish;
  end
endmodule
quiz iconПроверьте себя

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

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