VHDL: код для помещения числового значения в переменную STD_LOGIC_VECTOR.

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

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

cl_ouput_ChA <= 111111111111111;

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

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

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


person Peterstone    schedule 14.07.2011    source источник
comment
Может ли кто-нибудь создать тег под названием «код», это может указывать на то, что кто-то запрашивает фрагмент кода.   -  person Peterstone    schedule 14.07.2011


Ответы (2)


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

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

cl_ouput_ChA <= "111111111111111";

Вы также можете использовать hex, x"".

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 — ширина.

person George    schedule 14.07.2011
comment
Я полагаю, 16 - это количество битов, необходимых для представления этого числа, не так ли? - person Peterstone; 14.07.2011
comment
@Peterstone: Да, но посмотрите мое редактирование, которое показывает способ, который будет масштабироваться, если вы по какой-либо причине измените длину своих векторов. - person Martin Thompson; 15.07.2011
comment
@Martin, спасибо за редактирование, чтобы добавить атрибут «длина». - person George; 18.07.2011

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

cl_ouput_ChA <= (others => '1');
person fbo    schedule 14.07.2011