中缀运算符“ - ”没有可行的条目

时间:2014-11-02 00:39:01

标签: vhdl

我是VHDL的初学者。 以下是我的算术扩展器代码(我的ALU设计的一部分)

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

entity arith_extd is port (
    m,s1,s0 : in std_logic; -- control signals
    A,B     : in std_logic; -- Full adder inputs
    O       : out std_logic -- Cout
);
end arith_extd; 

architecture logic_1 of arith_extd is
begin
    o <= ((A - 1) and (not m) and (not s0) and (not s1))
        or ((A + B) and (not m) and  s0 and (not s1))
        or ((A + (not B) + 1 )and (not m) and  (not s0 )and s1) 
        or ((A - 1) and (not m) and s0 and s1 );
end logic_1;

编译运算符(+, - )和“和”之后的以下错误:

Error: F:/arith_ex.vhd(16): No feasible entries for infix operator "-".
Error: F:/arith_ex.vhd(16): Bad expression in left operand of infix expression "and"
Error: F:/arith_ex.vhd(18): Bad expression in left operand of infix expression "+".

1 个答案:

答案 0 :(得分:2)

错误只是告诉您执行未针对给定类型的信号定义的操作。例如,在单个std_logic信号上没有定义' - '(减号)操作。 VHDL实际上是强类型的。

如果您要描述ALU,我建议您阅读numeric_std library的VHDL代码。在那里,您将了解如何使用std_logic_vectors,无符号,签名等等。

Doulos page也是强制性的。