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

Как задержать время в 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 оператор занимает нулевое время, как и цикл.

Вывод

Перейти к следующему руководству »


VHDL

  1. Решение для неизвестного времени
  2. Как создать список строк в VHDL
  3. Как создать управляемый Tcl тестовый стенд для модуля кодовой блокировки VHDL
  4. Как использовать процедуру в процессе в VHDL
  5. Как бесплатно установить симулятор и редактор VHDL
  6. Насколько подробны планы работ?
  7. Как определить время обслуживания крановых тормозов
  8. Как сократить время обучения роботизированной сварке
  9. Как застраховать автомобиль в первый раз?
  10. Сколько времени занимает процесс изготовления?