Как управлять неинициализированными входными сигналами

Мне бы хотелось узнать ваше мнение о том, как тестировать и управлять входными сигналами компонентов, которые являются "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') чтобы проверить, находитесь ли вы в симуляции или синтезе.)

Другие вопросы по тегам