Можно ли получать и считать время в Modelsim?
Например, я хочу сбросить датчик. Для сброса датчиков требуется лог c '1' в течение 60 мкс, поэтому мой код отправляет его. Мне нужно поймать сигнал в файле testbench. Могу я написать что-нибудь подобное?
if signal = '1' for 60 us then...
Это было бы как команда wait: wait for 100 us;
, но наоборот.
Я пытался сделать это, создав дополнительные часы подайте сигнал и посчитайте нарастающие фронты. Тем не менее, я надеюсь, что есть более простое решение.
upd. Итак, в моем случае я не знаю правильного кода, однако я попытаюсь объяснить подробно.
entity testbench is
end entity testbench;
architecture tb of testbench is
signal reset_signal : std_logic;
signal flag_success : std_logic;
begin
RESET_PROCESS : process -- example process
begin
reset_signal <= '1';
wait for 100 us;
reset_signal <= '0';
report "End simulation" severity failure;
end process RESET_PROCESS;
SENSOR_PROCESS : process
begin
-- i don't now how to write it correctly
-- pseudocode
if reset_signal = '1' within 60 us then
flag_success <= '1';
else
flag_success <= '0';
end if;
end process;
end architecture tb;
RESET_PROCESS, как и моя программа, посылает reset_signal для 60 нас. SENSOR_PROCESS должен получить сигнал reset_signal. Я могу добавить clk в SENSOR_PROCESS и могу сосчитать восходящие грани. Тем не менее, это modelsim, он знает все временные характеристики, поэтому я думаю, что это можно сделать без clk.
Я нашел атрибуты и написал код:
if reset_signal = '0' then
if reset_signal'quiet(60 us) then
flag_success <= '1';
else
flag_success <= '0';
end if;
end if;
-- or
if reset_signal = '0' then
wait for 60 us;
if reset_signal'stable(60 us) then
flag_success <= '1';
else
flag_success <= '0';
end if;
end if;
К сожалению, код не работает ..