Как задержать время в 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
- Насколько подробны планы работ?
- Как определить время обслуживания крановых тормозов
- Как сократить время обучения роботизированной сварке
- Как застраховать автомобиль в первый раз?
- Сколько времени занимает процесс изготовления?