Проблема типа данных в простом операторе IF в VHDL - PullRequest
1 голос
/ 02 марта 2011

У меня действительно странная проблема, и я не на 100%, почему компилятор жалуется.Код выглядит следующим образом:

variable a : std_logic_vector(2 downto 0);
variable b : std_logic;
....
if (a = "100") AND (b) then
  -- do something
elsif (a = "011") OR (b) then
  -- do something else

Затем я получаю сообщение об ошибке:

 "AND can not have such operands in this context",
 "OR can not have such operands in this context", respectively for the second IF   

выражение.

Любой, кто знает, почему VHDL не нравится эта конструкцияесли есть обходной путь для этого?

Спасибо, Джим

Ответы [ 2 ]

8 голосов
/ 02 марта 2011

VHDL строго типизирован - в тестовом контексте он ожидает логические значения. Попробуйте (b = '1').

0 голосов
/ 30 июня 2012

Вы пытаетесь сравнить вектор с битом, во-первых, нужно было немного изменить код:

если (a = "100"), то если (b), то - сделать что-нибудь, если elsif(a = "011") тогда if (b) then - сделать что-то еще end if;конец если;

...