VHDL中简单IF语句中的数据类型问题

时间:2011-03-02 16:43:24

标签: vhdl systemc

我有一个非常奇怪的问题,我不是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 个答案:

答案 0 :(得分:8)

VHDL是强类型的 - 在测试环境中它预期为布尔值。试试(b = '1')

答案 1 :(得分:0)

您正在尝试将矢量与位进行比较,其中一个是将代码稍微更改为:

if(a =“100”)然后     如果(b)那么    - 做一点事  万一 elsif(a =“011”)然后    如果(b)那么    - 做点别的事   万一; 结束如果;