Для проекта, над которым я сейчас работаю, я пытаюсь взять некоторые входные данные, сохранить их в регистре, а затем найти среднее арифметическое регистра. Все мои входы имеют длину 24 бита. Мои регистры имеют длину 4 входа, поэтому я просто удаляю последние 3 цифры наименее значащих бит при делении их на 4, чтобы вычислить среднее арифметическое, а затем просто добавляю их.
среднее — это мой register(95 downto 0)
(4 x 24 = 96), а mean_medium
— это тип unsigned
.
Когда я кодирую следующую строку
signal mean_medium : unsigned (23 downto 0) := (others => '0');
mean_medium <= unsigned(medium (95 downto 75)) +
unsigned(medium (71 downto 51)) +
unsigned(medium (47 downto 27)) +
unsigned(medium (23 downto 3)) ;
Я принял следующее предупреждение:
Несоответствие ширины. mean_medium имеет ширину 24 бита, но присваиваемое выражение имеет ширину 21 бит.
Есть ли у вас какие-либо предложения, чтобы исправить это?