GHDL:运算符“和”没有函数声明

时间:2015-03-15 23:14:10

标签: vhdl logical-operators ghdl

这是我的剥离示例:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity queue is
    port(
        reset: in std_logic;
        input_ready: out std_logic
    );
end entity;

architecture reference of queue is
    signal queue_size: unsigned(15 downto 0);
begin
    process
    begin
            input_ready <= (reset = '0') and (queue_size < 1024);
    end process;
end architecture;

这一行:

input_ready <= (reset = '0') and (queue_size < 1024);

产生

no function declarations for operator "and"
ghdl: compilation error

运行时

ghdl -a queue.vhdl
在Arch Linux上使用GHDL 0.32rc1 (20141104) [Dunoon edition]

根据VHDL operators,两个比较都返回布尔值,并且两个布尔值有and定义。那么我做错了什么?

1 个答案:

答案 0 :(得分:3)

两个子表达式(reset = '0')(queue_size < 1024)返回一个布尔值。 and运算符还返回一个布尔结果,您尝试将其分配给std_logic输出。

解决方案:

input_ready <= '1' when (reset = '0') and (queue_size < 1024) else '0';

注意:此行不需要周围的过程。