У меня есть следующие объявления:Как я могу индексировать в vhdl std_logic_vector?
signal count:STD_LOGIC_VECTOR (3 downto 0);
signal txbuff:STD_LOGIC_VECTOR (7 downto 0);
- DOUT является
std_logic
выход - Я использую
IEEE.NUMERIC_STD.ALL
;
Я хочу использовать векторный счет как индекс в txbuff. Среди многих вещей, которые я пробовал следующий:
count<=std_logic_vector(unsigned(count)-1);
dout<=txbuff(unsigned(count));
, но я получаю следующее сообщение об ошибке:
Line 99. Wrong index type for txbuff.
Обратите внимание, что счетчик имеет длину 4 и может индексировать 2 ** 4 элемента, у которых txbuff имеет длину 8 (8 элементов). Использование большего целочисленного индекса может привести к названию среза 'dout <= txbuff (to_integer (unsigned (count)));' это вне диапазона для txbuff, вызывающего ошибку времени выполнения. Билл Линч подразумевает это в своем ответе. В вашем случае это будет 'dout <= txbuff (to_integer (unsigned (count (2 downto 0))));' или вы можете изменить размер счета? – user1155120