Menu
Coddy logo textTech

For Loop

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

Циклы в Verilog позволяют выполнять блок кода многократно. Они особенно полезны в тестбенчах для генерации повторяющихся тестовых шаблонов, инициализации памяти и перебора массивов. В отличие от описаний аппаратного обеспечения, которые выполняются параллельно, циклы выполняются последовательно, что делает их идеальными для моделирования и тестирования.

Наиболее часто используемый loop — это <strong>for</strong> loop, который повторяется заданное количество раз. Loop for многократно выполняет блок кода с переменной loop, которая изменяется на каждой итерации. Ты точно управляешь количеством его запусков.

Синтаксис:

for (initialization; condition; increment) begin
  // Код для повторения
end
ЧастьЧто делаетПример
initializationЗадаёт начальное значениеi = 0
conditionКогда остановитьсяi < 10
incrementИзменяется в каждом loopi = i + 1

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

integer i;

for (i = 0; i < 5; i = i + 1) begin
  $display("i = %d", i);
end

Вывод:

i = 0
i = 1
i = 2
i = 3
i = 4

Цикл выполняется 5 раз (i = 0, 1, 2, 3, 4).

Цикл For в тестовых стендах

Циклы For часто используются для проверки всех комбинаций входных данных:

integer test_value;

for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
  $display("test_value = %d", test_value);
end

Так проверяются все 16 возможных значений 4-битного сигнала.

Цикл For с массивами

reg [7:0] memory [0:9];
integer i;

initial begin
  for (i = 0; i < 10; i = i + 1) begin
    memory[i] = i * 8;
  end
end

Инициализирует 10 ячеек памяти.

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

ПравилоПояснение
Переменная Loop должна быть типа integer или reg Не может быть типа wire
Используйте begin/end для нескольких операторовТребуется, если строк больше одной
Избегайте бесконечных цикловУбедитесь, что condition в конечном итоге станет ложным
Лучше всего использовать в тестовых стендахБольшинство циклов нельзя синтезировать
challenge icon

Задание

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

Add пропущенный for loop, чтобы print числа от 0 до 3.

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

module for_challenge;
  integer i;
  
  initial begin
    $display("Printing 0 to 3:");
    
    // TODO: Добавьте цикл for
    // Инициализируйте i = 0
    // Цикл пока i &lt; 4
    // Инкрементируйте i = i + 1
    // Внутри выведите с помощью: $display("i = %d", i);
    
    $finish;
  end
endmodule
quiz iconПроверьте себя

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

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

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