我是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 "+".
答案 0 :(得分:2)
错误只是告诉您执行未针对给定类型的信号定义的操作。例如,在单个std_logic信号上没有定义' - '(减号)操作。 VHDL实际上是强类型的。
如果您要描述ALU,我建议您阅读numeric_std library的VHDL代码。在那里,您将了解如何使用std_logic_vectors,无符号,签名等等。
Doulos page也是强制性的。