我想知道是否有办法只检查我对VHDL中 std logic 向量感兴趣的位。我的最新尝试看起来像这样:
IF (vectorname = "1-00") THEN
action
END IF;
我在这里只对检查向量的第3,1和0位感兴趣。在这种情况下,位2无关紧要。我认为-
会起作用,因为它“不关心”,但事实并非如此。
有什么方法可以做到这一点吗?我知道STD_MATCH
有可能,但我想采取不同的方法。
答案 0 :(得分:1)
std_match
出了什么问题?这是做“恕我直言”的“正确”方式,我无法立即想到“采取不同方法”的理由......
答案 1 :(得分:0)
第一种方式(也作为评论以vermaete回答):
IF vectorname(3) = '1' AND vectorname(1 DOWNTO 0) = "00" THEN
action
END IF;
......如果它在一个过程中,则上述工作。如果没有,请使用以下内容:
my_output <= "11111111" WHEN vectorname(3) = '1' AND vectorname(1 DOWNTO 0) = "00" ELSE "00000000";
第二种方式:
SIGNAL bits_i_care_about : STD_LOGIC_VECTOR(2 DOWNTO 0);
bits_i_care_about <= vectorname(3) & vectorname(1 DOWNTO 0);
p_my_process : PROCESS(bits_i_care_about)
BEGIN
IF bits_i_care_about = "100" THEN
action
END IF;
END PROCESS;