VHDL如何进行减法计算?两者互补吗? 对于2位减法器,我被证明使用向量进行I / O,但它需要3个输入引脚/开关才能测试输出。 (下载到DE0 Nano Board)。 所以我尝试使用整数值:
entity TwoBitSubtractor is port(
x,y : in integer range 0 to 3;
result : out integer range -3 to 3);
end TwoBitSubtractor;
architecture gates of TwoBitSubtractor is
begin
result <= x - y;
end gates;
它编译成功,但是板上的某些输出使我感到困惑。 例如: 01-10 = 100
这是DE0纳米板的ss
对于-1,不是111吗?
答案 0 :(得分:1)
您正在使用integer
信号进行计算,但是只能使用std_logic
类型或使用std_logic_vector
来设置一组IO引脚。因此,在您尚未显示给我们的最高实体中的某个地方,integer
和std_logic(_vector)
之间存在转换。没有隐式功能,您必须转换为signed
或unsigned
数据类型,请在此处(Duolos VHDL designer guide)获得转换功能。
我猜您正在使用unsigned
值,请尝试在顶级实体中使用signed
。输入内容也是如此,您不能使用integer
或"01"
来指定"10"
,而只能使用像0、1、2、3这样的文字。