В вашем коде есть несколько проблем:
- Вы приводите результат своего вычисления к
unsigned
, в то время как левая часть равна std_logic_vector
- Возможно, что-то не так с типом данных
addr
, но вы не поделились этим с нами.
- В назначении отсутствует закрывающая скобка.
Будет проще, если вы будете использовать «unsigned» в своих определениях типов. Таким образом, вы выражаете, что битовый шаблон - это то, что вы хотите использовать в целочисленной арифметике.
type offsets_type is array (4 downto 0) of unsigned (4 downto 0);
signal av : offsets_type;
signal addr :unsigned(2 downto 0);
Это сэкономит вам несколько преобразований типов:
av(to_integer(addr)) <= av(to_integer(addr)) + "1";
Редактировать: вы использовали ieee.numeric_std.all
не так ли?