我想知道是否有一种方法来检查只有我感兴趣的位的std逻辑载体的VHDL。我的最新尝试如下所示:VHDL:如何检查矢量的选定位
IF (vectorname = "1-00") THEN
action
END IF;
我在这里只想检查向量的位3,1和0。位2在这种情况下是不相关的。我认为-
会起作用,因为它“不关心”,但它不会。
任何简单的方法?我知道这可能与STD_MATCH
,但我想采取不同的方法。
我想知道是否有一种方法来检查只有我感兴趣的位的std逻辑载体的VHDL。我的最新尝试如下所示:VHDL:如何检查矢量的选定位
IF (vectorname = "1-00") THEN
action
END IF;
我在这里只想检查向量的位3,1和0。位2在这种情况下是不相关的。我认为-
会起作用,因为它“不关心”,但它不会。
任何简单的方法?我知道这可能与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;
'如果(vectorname(3)= '1' 和vectorname(1 DOWNTO 0)=“00)then'好的问题,但我从来没有想过更好的编码方式,我期待看到其他解决方案。 – vermaete 2013-02-27 09:10:29
VHDL-2008可以吗?'='运算符应该与' - '一起工作吗?但是,它可以在模拟器中工作,但如果综合工具没有在2008年那么远,你再次被阻塞。 – vermaete 2013-02-27 10:13:20