VHDL 找到运算符“+”的“0”定义无法确定“+”的精确重载匹配定义

VHDL found '0' definition of operator "+" cannot determine exact overloaded matching definition for "+"

我遇到的问题是这一行 B1 <= (-c1 * (A3 + A1) + A3 + A2 - A1); 一直显示为错误。我知道这个问题已经存在于 Whosebug 上,但是 none 的解决方案对我有所帮助。我已经从头开始创建了项目,这也无济于事。我不知道下一步该怎么做,我希望有人能在这里帮助我。

提前致谢

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_arith.ALL;
use IEEE.STD_LOGIC_signed.ALL;
use IEEE.STD_LOGIC_unsigned.ALL;
use IEEE.NUMERIC_STD.ALL;



entity ParallelAdaptor is
    Port ( A1 : in STD_LOGIC;
           A2 : in STD_LOGIC;
           A3 : in STD_LOGIC;
           c1 : in STD_LOGIC;
           B1 : out STD_LOGIC;
           B2 : out STD_LOGIC;
           B3 : out STD_LOGIC);
end ParallelAdaptor;

architecture Behavioral of ParallelAdaptor is

begin

    B1 <= (-c1 * (A3 + A1) + A3 + A2 - A1);


end Behavioral;

我认为 STD_LOGIC 是一个位(我的 vhdl 经验大约是 20 年前),你不能对它进行这些操作。 所以你至少需要一个可以保存结果的输出...... 并且输出 B2 和 B3 未使用...

我建议你从这里尝试一些东西https://www.nandland.com/vhdl/tutorials/tutorial-introduction-to-vhdl-for-beginners.html