Цикл Repeat
Часть раздела Основы путешествия по Verilog на Coddy — урок 60 из 90.
Цикл repeat выполняет блок кода фиксированное количество раз. В отличие от цикла for, он не использует переменную-счётчик цикла.
Цикл repeat выполняется указанное количество раз. Вы передаете ему константу или выражение, которое определяет, сколько итераций необходимо выполнить.
Синтаксис:
repeat (number) begin
// Код для повторения
endПростой пример
repeat (5) begin
$display("Hello");
endВывод:
Hello
Hello
Hello
Hello
HelloСообщение выводится ровно 5 раз.
Repeat с выражением
integer count = 3;
repeat (count) begin
$display("Looping");
endВывод:
Looping
Looping
LoopingRepeat vs For Loop
| Цикл 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 отрицательное количество раз |
| Можно использовать константу или выражение | repeat (10) или repeat (count) |
| Нет доступной переменной цикла | Невозможно отслеживать номер итерации |
Используйте begin/end для нескольких операторов | Требуется для более чем одной строки |
Задание
Что нужно сделать:
Добавьте пропущенный цикл repeat, чтобы вывести "Verilog" 4 раза.
Попробуйте сами
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: Добавить цикл repeat
// Повторить 4 раза
// Внутри напечатать "Verilog"
$finish;
end
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial