Как задержать время в VHDL:ждать
В предыдущем уроке мы узнали, что процесс можно рассматривать как программный поток. Мы также узнали, что wait; оператор заставляет программу приостанавливаться на неопределенный срок. Но есть ли способ заставить программу ждать любое другое значение времени, кроме бесконечности?
Если мы удалим wait; вообще и попробуйте скомпилировать программу, компилятор будет жаловаться на бесконечный цикл. Цикл, на который ссылается компилятор, — это цикл процесса. . Поток процесса в VHDL никогда не завершится, он будет непрерывно зацикливаться между begin и end process; заявления. Должен быть wait оператор где-то внутри цикла процесса.
Эта запись в блоге является частью серии учебных пособий по основам VHDL.
Пока wait; приведет к остановке программы навсегда, wait for можно использовать для задержки выполнения программы на любое время.
Синтаксис wait for оператор:wait for <time_value> <time_unit>;
где <time_value> число и <time_unit> является одной из следующих единиц времени:
| фс | фемтосекунды |
| ps | пикосекунды |
| нс | наносекунды |
| нас | микросекунды |
| мс | миллисекунды |
| сек | секунды |
| мин | минуты |
| час | часы |
Упражнение
Это обучающее видео покажет вам, как использовать wait for оператор, чтобы приостановить процесс на заданное время.
Код, который мы создали в этом руководстве:
entity T02_WaitForTb is
end entity;
architecture sim of T02_WaitForTb is
begin
process is
begin
-- This is the start of the process "thread"
report "Peekaboo!";
wait for 10 ns;
-- The process will loop back to the start from here
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 , что означает 10 наносекунд. При работе с цифровой логикой, работающей на тактовой частоте МГц, вы обычно будете работать с наносекундными приращениями.
Когда мы запустили код в симуляторе, он напечатал «Пикабу!» на консоль каждые 10 нс. Поскольку это имитация, report оператор занимает нулевое время, как и цикл.
Вывод
- Поток процесса приостановится на
wait forна точно указанное время - Все утверждения, кроме
waitоператоры не требуют времени моделирования
Перейти к следующему руководству »
VHDL
- Решение для неизвестного времени
- Как создать список строк в VHDL
- Как создать управляемый Tcl тестовый стенд для модуля кодовой блокировки VHDL
- Как использовать процедуру в процессе в VHDL
- Как бесплатно установить симулятор и редактор VHDL
- Насколько подробны планы работ?
- Как определить время обслуживания крановых тормозов
- Как сократить время обучения роботизированной сварке
- Как застраховать автомобиль в первый раз?
- Сколько времени занимает процесс изготовления?