采样输入信号并检查它们的值 VHDL

sample input signals and check their values VHDL

我有 2 个 input 信号 - ID_1,ID_2 采样到 id_vec.
LEDx_GRNnoutput。 在这一点上,a,b,c,d中只有一个应该是'1',其他的应该是'0',这之后应该只让一个发光,其他的不发光。

出于某种原因,所有 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); 

你不是这个意思:

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

这是一个容易犯的错误。