2

我想知道是否有一种方法可以只检查我对 VHDL 中的std 逻辑向量感兴趣的位。我的最新尝试如下所示:

IF (vectorname = "1-00") THEN

action

END IF;

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

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

4

2 回答 2

1

有什么问题std_match?恕我直言,这是“正确”的做法,我无法立即想到“采取不同方法”的理由......

于 2013-02-27T13:04:35.107 回答
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;
于 2013-09-06T14:47:53.537 回答