Как управлять неинициализированными входными сигналами
Мне бы хотелось узнать ваше мнение о том, как тестировать и управлять входными сигналами компонентов, которые являются "U", "X", "-",...
Например, если я хочу, чтобы вывод был "X" для всех недопустимых входов, где хотя бы один бит ввода не равен "0" или "1":
entity foo is
port (
signal inp : std_logic_vector(7 downto 0);
signal outp: std_logic );
end entity foo;
architecture bar of foo is
begin
process(inp)
if (inp < "11001010") then
outp <= '1';
else
outp <= '0';
end if;
end process;
end architecture bar;
Таким образом, тест по умолчанию является ложным.
Как бы общий способ проверить входные данные?
1 ответ
Решение
Использование Is_X
от std_logic_1164
; это вернется true
если твой std_logic_vector
содержит любой из 'U', 'X', 'Z', 'W', '-'.
Is_X
всегда вернется false
во время синтеза (вы можете, например, использовать Is_X('W')
чтобы проверить, находитесь ли вы в симуляции или синтезе.)