Вы должны использовать тип signed
для указания значений со знаком. Целое число также можно использовать для объявления значений более понятным для человека способом, но с этим у вас нет определений на уровне битов, что, на мой взгляд, нежелательно в VHDL. Например, вы игнорируете количество битов, используемых для любого сигнала с integer
, что может быть полезно для языка высокого уровня, но не слишком полезно для VHDL.
library ieee;
use ieee.numeric_std.all;
entity TwoBitSubtractor is port(
x : in signed(2 downto 0);
y : in signed(2 downto 0);
result : out signed(2 downto 0));
end TwoBitSubtractor;
architecture gates of TwoBitSubtractor is
begin
result <= x - y;
end gates;
Посмотрите, как они объявлены в порту объекта. Более подробную информацию о подписанных / неподписанных, пожалуйста, проверьте здесь
Также работает онлайн-симуляция TwoBitSubtractor
с testbench
, отметьте здесь