У меня проблемы с определением значений мест двоичного числа, хранящихся в формате std_logic_vector.Например, в приведенном ниже коде я пытаюсь увидеть, каково значение в INST_SPEED, от 0 до 99 км / ч.Код действительно длинный со многими условиями if.
if INST_SPEED > "0001001" and INST_SPEED < "0010100" then -- if INST_SPEED > 9 & INST_SPEED < 20
UPPER10 <= "0000001"; -- UPPER10 = 1
TEMP <= std_logic_vector(unsigned(INST_SPEED) - 10);
UPPER1 <= TEMP; -- LOWER10 = INST_SPEED - 10
elsif INST_SPEED > "0010011" and INST_SPEED < "0011110" then -- if INST_SPEED > 19 & INST_SPEED < 30
UPPER10 <= "0000010"; -- UPPER10 = 2
TEMP <= std_logic_vector(unsigned(INST_SPEED) - 20);
UPPER1 <= TEMP; -- LOWER10 = INST_SPEED - 20
elsif INST_SPEED > "0011101" and INST_SPEED < "101000" then -- if INST_SPEED > 29 & INST_SPEED < 40
UPPER10 <= "0000011"; -- UPPER10 = 3
TEMP <= std_logic_vector(unsigned(INST_SPEED) - 30);
UPPER1 <= TEMP; -- LOWER10 = INST_SPEED - 30
Однако теперь мне нужно написать аналогичный код для определения значения в диапазоне от 0 до 999.Если я пойду по этой логике, это будет означать 90 таких условий, если!
Кто-нибудь знает о более простом, более разумном способе выполнения этого процесса?Это действительно помогло бы мне, спасибо заранее!