Справочная информация
Я новичок в VHDL и пытаюсь понять, как кодировать двойной триггер для обработки метастабильности, связанной с тем, что пользователь нажимает кнопку на моей плате fpga (Cyclone V).).Я понимаю логику использования двойного триггера для стабилизации данных, но не знаю, как реализовать в VHDL. (Источники: связанный с StackOverflow вопрос , eetimes article )
Вопрос
Я не уверен, как кодировать двойной триггер (см. Мою попытку ниже).Может ли кто-нибудь предоставить пример кода, который показывает работающий двойной триггер?
Пример кода моей попытки сделать двойной триггер
--input is std_logic;
input <= key(0) -- user pressed key =1, key can be pressed and held
process(input)
signal inputFF : std_logic;
begin
if rising_edge(clock) then
inputFF<= input;
if input = '1' and inputFF = '1' then
-- enter if-statement: user pressed the key and the data was
-- synchronized by going through a double flip flop?
end if;
end if;
end process;
Мои мысли: Я не уверен, что оператор if действует как двойной триггер или нет.Я передаю входные данные на inputFF по восходящему краю, а затем проверяю, равны ли input и inputFF 1.