[an error occurred while processing this directive]
|
и схема стала занимать в 2 раза меньше места. Но в принципе не понятно
отличие от первоначального варианта. Какой общий смысл чтобы похожие места в следующий раз правильно описывать? Только опыт? Спасибо.
use work.pack.all;
entity add is
generic
(
width : INTEGER := 16
);
port
(
add_sub : in STD_LOGIC;
dataa : in STD_LOGIC_VECTOR (width-1 downto 0);
datab : in STD_LOGIC_VECTOR (width-1 downto 0);
result : out STD_LOGIC_VECTOR (width downto 0)
);
end add;
architecture first of add is
begin
process (add_sub, dataa, datab)
variable temp_a, temp_b : SIGNED(width-1 downto 0);
variable temp_r : SIGNED(width downto 0);
begin
temp_a := SIGNED(dataa);
temp_b := SIGNED(datab);
if (add_sub = '1') then
temp_r := (temp_a(width-1) & temp_a) + (temp_b(width-1) & temp_b);
else
temp_r := (temp_a(width-1) & temp_a) - (temp_b(width-1) & temp_b);
end if;
result <= STD_LOGIC_VECTOR(temp_r);
end process;
end first;
E-mail: info@telesys.ru