VHDL: код для помещения числового значения в переменную STD_LOGIC_VECTOR - PullRequest
4 голосов
/ 14 июля 2011

Я хотел бы ввести число в переменную типа STD_LOGIC_VECTOR, но у меня проблемы с компилятором.

signal cl_output_ChA :   STD_LOGIC_VECTOR (16-1 downto 0);

cl_ouput_ChA <= 111111111111111;

Компилятор выдает мне эти два сообщения:

  • Целочисленное значение 111111111111111 больше, чем integer'high.
  • Тип cl_output_ChA несовместим с типом 111111111111111.

Может ли кто-нибудь дать мне правильную строку кода для добавления в эту переменную определенного числового значения? Большое вам спасибо.

Ответы [ 2 ]

8 голосов
/ 14 июля 2011

Прежде всего, ошибка в том, что написанное вами число рассматривается как целое число.

Я полагаю, что вы имеете в виду, что число является двоичным?В этом случае используйте "".

cl_ouput_ChA <= "111111111111111";

. Вы также можете перейти к гексам, х "".

cl_ouput_ChA <= x"ffff";

Если вы хотите назначить целое число для std_logic_vector, то вы можетесделайте это следующим образом.

library IEEE;
use IEEE.Std_Logic_1164.all;
use IEEE.Numeric_STD.all;

...

cl_ouput_ChA <= std_logic_vector(to_unsigned(12345, ch1_ouput_ChA'length)); -- natural
cl_ouput_ChA <= std_logic_vector(to_signed(12345, ch1_ouput_ChA'length));   -- signed

Где 12345 - это целое число (или натуральное число), а 16 - это ширина.

7 голосов
/ 14 июля 2011

Вы также можете сделать следующее, в котором каждый бит будет равен 1.

cl_ouput_ChA <= (others => '1');
...