VHDL:将数值放入STD_LOGIC_VECTOR变量的代码

Pet*_*one 4 numeric vhdl

我想在STD_LOGIC_VECTOR类型的变量中输入一个数字,但我的编译器有问题.

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

cl_ouput_ChA <= 111111111111111;
Run Code Online (Sandbox Code Playgroud)

编译器给我这两条消息:

  • 整数值111111111111111大于整数'高.
  • cl_output_ChA的类型与类型111111111111111不兼容.

谁能给我一个合适的代码行来把这个变量放入一个特定的数值?非常感谢.

Geo*_*rge 8

首先,错误是因为您编写的数字被视为整数.

我认为你的意思是数字是二进制的吗?在那种情况下使用"".

cl_ouput_ChA <= "111111111111111";
Run Code Online (Sandbox Code Playgroud)

你也可以去十六进制,x"".

cl_ouput_ChA <= x"ffff";
Run Code Online (Sandbox Code Playgroud)

如果要为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
Run Code Online (Sandbox Code Playgroud)

其中12345是整数(或自然),16是宽度.


fbo*_*fbo 7

您还可以执行以下操作,每个位置放1个.

cl_ouput_ChA <= (others => '1');
Run Code Online (Sandbox Code Playgroud)