VHDL:如何检查向量的选定位

时间:2013-02-27 09:02:50

标签: vhdl boolean-logic bitvector

我想知道是否有办法只检查我对VHDL中 std logic 向量感兴趣的位。我的最新尝试看起来像这样:

IF (vectorname = "1-00") THEN

action

END IF;

我在这里只对检查向量的第3,1和0位感兴趣。在这种情况下,位2无关紧要。我认为-会起作用,因为它“不关心”,但事实并非如此。

有什么方法可以做到这一点吗?我知道STD_MATCH有可能,但我想采取不同的方法。

2 个答案:

答案 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;