我有一个非常奇怪的问题,我不是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不喜欢这种结构,如果有解决方法呢?
谢谢, 吉姆
答案 0 :(得分:8)
VHDL是强类型的 - 在测试环境中它预期为布尔值。试试(b = '1')
。
答案 1 :(得分:0)
您正在尝试将矢量与位进行比较,其中一个是将代码稍微更改为:
if(a =“100”)然后 如果(b)那么 - 做一点事 万一 elsif(a =“011”)然后 如果(b)那么 - 做点别的事 万一; 结束如果;