Несоответствие типов массивов в VHDL - PullRequest
0 голосов
/ 11 марта 2011

Очень простая проблема с моим VHDL-кодом.Я определил следующий код:

type irf_array is array(0 to 1) of integer;
signal index : std_logic;
....
index := input(5);
out   := irf_array(index);

При попытке скомпилировать этот простой кодовый код я получаю следующую ошибку:

Error: array index type mismatch [6.4]

Поэтому мне интересно, есть ли у кого-нибудь представление о том, как яможет использовать значение std_logic в качестве входных данных для моего массива.

Большое спасибо!

1 Ответ

4 голосов
/ 11 марта 2011

Ваш индекс массива должен быть целым числом. Если вы хотите использовать тип на основе std_logic, вам, вероятно, следует использовать типы со знаком или без знака (которые включают концепцию числового значения, в отличие от простого сигнала std_logic) и соответствующее преобразование типов:

type irf_array is array(0 to 1) of integer;
signal index : unsigned(0 downto 0);
....
index(0) := input(5);
out   := irf_array(to_integer(index));

Вы можете использовать std_logic_vector вместо беззнакового типа с дополнительным преобразованием:

signal index : std_logic_vector(0 downto 0);
...
out   := irf_array(to_integer(unsigned(index)));
...