Цикл повторения
Часть раздела Основы путешествия по 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
LoopingRepeat и For Loop
| For Loop | Repeat Loop | |
|---|---|---|
| Переменная-счётчик | Да (явно) | Нет |
| Когда использовать | Нужно значение индекса | Нужно только повторение |
| Пример | 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 для нескольких операторов | Требуется для более чем одной строки |
Задание
Что нужно сделать:
Добавьте отсутствующий цикл repeat, чтобы вывести "Verilog" 4 раза.
Попробуйте сами
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: Добавить цикл repeat
// Повторить 4 раза
// Внутри напечатать "Verilog"
$finish;
end
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog