2013-02-27 86 views
1

我想知道是否有一種方法來檢查只有我感興趣的位的std邏輯載體的VHDL。我的最新嘗試如下所示:VHDL:如何檢查矢量的選定位

IF (vectorname = "1-00") THEN 

action 

END IF; 

我在這裏只想檢查向量的位3,1和0。位2在這種情況下是不相關的。我認爲-會起作用,因爲它「不關心」,但它不會。

任何簡單的方法?我知道這可能與STD_MATCH,但我想採取不同的方法。

+0

'如果(vectorname(3)= '1' 和vectorname(1 DOWNTO 0)=「00)then'好的問題,但我從來沒有想過更好的編碼方式,我期待看到其他解決方案。 – vermaete 2013-02-27 09:10:29

+0

VHDL-2008可以嗎?'='運算符應該與' - '一起工作嗎?但是,它可以在模擬器中工作,但如果綜合工具沒有在2008年那麼遠,你再次被阻塞。 – vermaete 2013-02-27 10:13:20

回答

1

std_match怎麼了?這是「正確」的方式做到這一點恕我直言,我不能馬上想到的理由「採取不同的方法」 ......

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;