2016-12-04 24 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'; 

这是一个容易犯的错误。