我想知道是否有一种方法可以只检查我对 VHDL 中的std 逻辑向量感兴趣的位。我的最新尝试如下所示:
IF (vectorname = "1-00") THEN
action
END IF;
我在这里只对检查向量的位 3、1 和 0 感兴趣。在这种情况下,位 2 无关紧要。我认为 a-
会起作用,因为它“不在乎”,但事实并非如此。
有什么方法可以简单地做到这一点?我知道这是可能的STD_MATCH
,但我想采取不同的方法。
我想知道是否有一种方法可以只检查我对 VHDL 中的std 逻辑向量感兴趣的位。我的最新尝试如下所示:
IF (vectorname = "1-00") THEN
action
END IF;
我在这里只对检查向量的位 3、1 和 0 感兴趣。在这种情况下,位 2 无关紧要。我认为 a-
会起作用,因为它“不在乎”,但事实并非如此。
有什么方法可以简单地做到这一点?我知道这是可能的STD_MATCH
,但我想采取不同的方法。
有什么问题std_match
?恕我直言,这是“正确”的做法,我无法立即想到“采取不同方法”的理由......
第一种方式(也由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;