2016-12-04 22 views
1

我有2 input信號 - ID_1,ID_2其中採樣到id_vec
LEDx_GRNnoutput。 在這一點上,a,b,c,d中只有一個應該是'1'和其他的'0',之後應該只有一個導致其他導致關閉。採樣輸入信號並檢查它們的值VHDL

由於某種原因,所有的LED都打開了,所以我猜測我做錯了什麼。
我是否錯過了?
ID_1,ID_2具有常量值。

signal id_vec :std_logic_vector (1 downto 0); 
signal flag :std_logic; 
signal a:std_logic; 
signal b:std_logic; 
signal c:std_logic; 
signal d :std_logic; 

id_vec(0)<=ID_1; 
id_vec(1)<=ID_2; 

a <='1' when id_vec<="10" else '0'; 
b <='1' when id_vec<="00" else '0'; 
c <='1' when id_vec<="01" else '0'; 
d <='1' when id_vec<="11" else '0'; 


LED1_GRNn <= not (a); 
LED2_GRNn <= not (b); 
LED3_GRNn <= not (c); 
LED4_GRNn <= not (d); 

回答

1

你不會是這樣的:

a <='1' when id_vec<="10" else '0'; 
b <='1' when id_vec<="00" else '0'; 
c <='1' when id_vec<="01" else '0'; 
d <='1' when id_vec<="11" else '0'; 
--    ^
--     | 
--  an easy mistake to make       

你的意思是這樣的:

a <='1' when id_vec="10" else '0'; 
b <='1' when id_vec="00" else '0'; 
c <='1' when id_vec="01" else '0'; 
d <='1' when id_vec="11" else '0'; 

這是一個容易犯的錯誤。