С целыми числами вам придется использовать операторы *
и /
.Если они имеют постоянные степени-2 в нужных местах (то есть справа от деления по обе стороны от умножения), синтезатор будет «делать правильные вещи».
Или (как отметил Чарльз) используйте signed
или unsigned
типы из ieee.numeric_std library
.
Кстати, почему вы используете conv_std_logic_vector
, когда вы использовали ieee.numeric_std
?
ored <= std_logic_vector(to_unsigned(mid1, 6));
должно бытьто, что вам нужно, то вы можете избавиться от неприятной ieee.std_logic_arith
библиотеки
(в сторону: если вы (или будущий читатель этого) нацелены на FPGA (и я согласен, что вы не можете, но многолюди в наши дни :) вы можете обнаружить, что есть необходимость в некоторой передаче этой архитектуры, если целевая частота вообще сложна. При кратком синтезе глазного яблока, есть более полудюжины сумматоров, пара реальных множителей инесколько муксов - все в одном такте. В частности, это исключит использование жестких множителей во всех известных мне ПЛИС)