[an error occurred while processing this directive]
Написал такой сумматор вычитатель(+)
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено переходящий от AHDL к VHDL 03 ноября 2004 г. 12:59

а квартус генерит два сумматора, хотя понятно что комбинационная схема должна бать проще. Научите пожалуйста как писать поведенчески, чтобы не генерировались в "лоб" лишние схемы.

library ieee,work;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
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

if (add_sub = '1') then
temp_a := SIGNED(dataa);
temp_b := SIGNED(datab);
else
temp_a := SIGNED(dataa);
temp_b := -SIGNED(datab);
end if;

temp_r := (temp_a(width-1) & temp_a) + (temp_b(width-1) & temp_b);
result <= STD_LOGIC_VECTOR(temp_r);

end process;
end first;

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru