Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> VHDL

Освоение циклов For в VHDL: практическое руководство

В предыдущем уроке мы изучали создание бесконечного цикла с помощью оператора loop и выхода из него с помощью exit. А что, если цикл должен выполняться определенное число раз? For-цикл — самое простое решение.

For-цикл итерируется по фиксированному диапазону целых чисел или перечисляемых значений. Текущее значение итерации автоматически доступно внутри цикла через неявно объявленную константу.

Эта статья входит в серию базовых уроков VHDL.

Синтаксис

for <constant> in <range> loop -- тело цикла end loop;

Здесь <constant> — пользовательское имя счетчика цикла, а <range> может быть целочисленным диапазоном (возрастающим или убывающим) или набором перечисляемых значений.

Целочисленные диапазоны

Пример кода

 entity T04_ForLoopTb is end entity; architecture sim of T04_ForLoopTb is begin process is begin for i in 1 to 10 loop report "i=" & integer'image(i); end loop; wait; end process; end architecture; 

Вывод симуляции (ModelSim)

VSIM 2> run # ** Note: i=1 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=2 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=3 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=4 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=5 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=6 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=7 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=8 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=9 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb # ** Note: i=10 # Time: 0 ns Iteration: 0 Instance: /t04_forlooptb

Анализ

For-цикл выполнил ровно десять итераций, выводя значение счетчика в симуляционное время 0. Поскольку внутри цикла нет оператора wait, весь цикл завершается мгновенно. Финальный wait; ставит процесс в бесконечную паузу, что типично для тестбенчей.

Мы также продемонстрировали две важные строковые операции:

Ключевые выводы

Переходите к следующему уроку для более глубоких концепций VHDL.

VHDL

  1. Как молибден формирует современную промышленность: применение, преимущества и динамика поставок
  2. Создание списков строк в VHDL: лучшие практики и пример
  3. Корректное завершение симуляции VHDL-тестбенча
  4. Реализация PWM-контроллера в VHDL: проектирование, симуляция и FPGA-демо
  5. Генерация случайных чисел в VHDL: от Uniform к OSVVM
  6. Использование внутрипроцессных процедур для более чистого проектирования FSM на VHDL
  7. Использование нечистых функций в VHDL: повышение читаемости и поддерживаемости FSM
  8. Освоение функций VHDL: практическое руководство по эффективному дизайну
  9. Проектирование конечного автомата в VHDL: практический пример светофора
  10. Освоение техник шлифовального станка для режущих инструментов: практическое руководство