Вот мой раздели пример: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
с GHDL 0.32rc1 (20141104) [Dunoon edition]
на Arch Linux.
В соответствии с VHDL operators оба сравнения возвращают boolean и существует and
определение для двух булевых. Так что я делаю неправильно?
И я думал, что могу избежать влияния C фона ... VHDL также решает перегрузки по типу возврата, не так ли? –
@Dadam: Перегрузка по типу возврата - это точно проблема, и да VHDL делает. –
Вы также можете отметить, что круглые скобки в решении Paebbels являются излишними. Операторы отношения ("=") являются более приоритетными, чем логические операторы ("и"). IEEE Std 1076-2008, 9.2 Операторы, 9.2.1 Общие положения. – user1155120