Использование операторов Wait For для задержки выполнения в VHDL
В предыдущем уроке мы сравнили процесс VHDL с потоком программы и представили оператор wait;, который приостанавливает процесс бесконечно. Но что, если процесс должен приостановиться на определенную длительность?
Удаление wait; полностью вызывает ошибку компиляции, потому что каждый процесс VHDL — это бесконечный цикл, который должен содержать хотя бы один оператор wait. Цикл выполняется непрерывно между разделителями begin и end process;.
Эта статья входит в серию базовых уроков VHDL.
В то время как wait; останавливает выполнение навсегда, конструкция wait for позволяет задержать процесс на любой желаемый интервал времени.
Синтаксис wait for:
wait for <time_value> <time_unit>;
где <time_value> — числовой литерал, а <time_unit> может быть одним из следующих:
| fs | фемтосекунды |
| ps | пикосекунды |
| ns | наносекунды |
| us | микросекунды |
| ms | миллисекунды |
| sec | секунды |
| min | минуты |
| hr | часы |
Упражнение
Посмотрите видеоурок, чтобы увидеть wait for в действии, приостанавливающем процесс на заданный пользователем период.
Пример VHDL, который мы построили, показан ниже:
entity T02_WaitForTb is end entity; architecture sim of T02_WaitForTb is begin process is begin -- Процесс "поток" начинается здесь report "Peekaboo!"; wait for 10 ns; -- Возврат к началу end process; end architecture;
Запуск в ModelSim дает следующий вывод консоли:
VSIM 2> run # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Peekaboo! # Time: 10 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Peekaboo! # Time: 20 ns Iteration: 0 Instance: /t02_waitfortb ...
Анализ
В этом примере задержка 10 ns типична для логики, работающей на частотах МГц, где наносекундная гранулярность соответствует периодам тактового сигнала.
Во время симуляции оператор report и управление циклом потребляют нулевое время; только wait for продвигает симуляционное время.

Вывод
- Процесс VHDL приостанавливается точно на длительность, указанную в
wait for. - Все остальные операторы в процессе выполняются мгновенно в симуляционном времени.
Переходите к следующему уроку →
VHDL
- Расчет времени достижения целевого напряжения в RC и RL цепях
- Создание списков строк в VHDL: лучшие практики и пример
- Создание Tcl-управляемого тестбенча для VHDL-модуля кодового замка
- Использование внутрипроцессных процедур для более чистого проектирования FSM на VHDL
- Бесплатный симулятор и редактор VHDL: руководство для студентов
- Баланс детализации и эффективности в планировании заданий обслуживания
- Когда планировать ТО крановых тормозов: ключевые индикаторы
- Ускорение обучения робототехнической сварке: сократите время, повысьте эффективность
- Первое автострахование: пошаговое руководство для новичков
- Точные прогнозы сроков поставки при аутсорсинге металлофаabricации