用VHDL对输入信号进行采样并检查其值

用VHDL对输入信号进行采样并检查其值,vhdl,Vhdl,我有2个input信号-ID\u 1,ID\u 2,它们被采样到ID\u vec LEDx\u GRNn是输出。 此时,a、b、c、d中只有一个应该是“1”,其他的应该是“0”,之后应该只打开一个led,关闭其他led 由于某些原因,所有的指示灯都亮着,所以我猜我做错了什么。 我错过了什么? ID_1、ID_2具有常量值 signal id_vec :std_logic_vector (1 downto 0); signal flag :std_logic; signal a:std_logic

我有2个
input
信号-
ID\u 1,ID\u 2
,它们被采样到
ID\u vec

LEDx\u GRNn
输出
。 此时,
a、b、c、d
中只有一个应该是“1”,其他的应该是“0”,之后应该只打开一个led,关闭其他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); 
signal id_vec:std_logic_vector(1到0);
信号标志:标准逻辑;
信号a:std_逻辑;
信号b:标准逻辑;
信号c:标准逻辑;
信号d:std_逻辑;
id_vec(0)你不是这个意思:

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';
a