2015-11-07 4 views
0

Привет, я хотел бы спросить, как я мог добавить два вектора в VHDL, один из которых равен 7 вниз 0, а другой - 8 до 0. Я пробовал что-то вроде этого, Но это не работает. Заранее спасибо.Как добавить два вектора разного размера VHDL

IS_CARRY <= '0' & (IN1 + IN2) 
+0

Попробуйте 'IS_CARRY <= (('0' & IN1) + IN2)', предполагая, что 'IN1' является более узкой шиной. –

+0

Я решил. Я должен включить 'use IEEE.STD_LOGIC_ARITH.ALL; использовать IEEE.STD_LOGIC_UNSIGNED.ALL; 'Спасибо :) –

ответ

4

Необходимо удлинить более короткий вектор до 9 бит, а затем выполнить добавление.

Объявления:

signal in1 : UNSIGNED(7 downto 0); 
signal in2 : UNSIGNED(8 downto 0); 
signal res : UNSIGNED(8 downto 0); 

Пример:

res <= ('0' & in1) + in2; 

Это не рекомендуется использовать STD_LOGIC_ARITH и STD_LOGIC_UNSIGNED. Вместо этого используйте NUMERIC_STD. Выполнение арифметики на STD_LOGIC_VECTOR s не является хорошим стилем. Для этой цели используйте типы SIGNED и UNSIGNED.

Смежные вопросы