В общем, определите, сколько тактов 4us работает на вашей тактовой частоте.
Еще лучше, пусть VHDL сделает всю работу за вас. Если у вас есть глобальный пакет для вашего дизайна с константой, равной такту:
constant clock_period : time := 125 ns;
затем вы можете сделать:
constant bus_timeout_for_example : natural := 4 us / clock_period;
Затем создайте целочисленную переменную в вашем процессе. Увеличивайте его каждый такт. Когда он достигнет значения, которое вы рассчитали выше, это конец ваших 4-х нас.
EDIT:
Теперь вы опубликовали код некоторых комментариев:
- Не используйте std_logic_vectors для арифметики - http://parallelpoints.com/node/3
- Сделайте все это синхронным с одним сигналом clk (т. Е. Dec_clk - это все, что у вас есть в списке чувствительности) - если вам нужно обнаружить «края» в других сигналах, сохраните их и сопоставьте их в следующем тактовом цикле, чтобы увидеть, изменился Вызов * _edge более чем одного сигнала во всем вашем проекте вызывает проблемы (как у новичка). Тогда
gapen
может быть переменной внутри одного процесса. И отметьте gapen
внутри «синхронизированной» части.
- Используйте переменную, вычисленную как я описываю, и целочисленного типа - тогда вы можете сравнить с числами:
if gapcnt = bus_timeout then