我想知道是否有一種方法來檢查只有我感興趣的位的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