如何在VHDL中初始化位向量

jas*_*son 3 initialization vhdl

我想要一个矢量,我希望它有一个值2.我尝试了很多东西,但我总是得到一个错误.现在我有这个:

variable var : bit_vector := B"00000000000000000000000000000100";
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

无法将整数文字与类型数组类型"bit_vector"匹配

不允许使用无约束数组类型"bit_vector"声明变量"var"

我怎样才能解决这个问题?谢谢.

Mor*_*mer 6

你必须给出var一个范围(约束它),如:

variable var : bit_vector(31 downto 0) ...
Run Code Online (Sandbox Code Playgroud)

然后你可以为它分配一个常量,例如:

library ieee;
use ieee.numeric_bit_unsigned.all;
...
variable var : bit_vector(31 downto 0) := to_bit_vector(2, 32);
Run Code Online (Sandbox Code Playgroud)

或者以比特字符串给出的初始值如下:

variable var : bit_vector(31 downto 0) := "00000000000000000000000000000010";
Run Code Online (Sandbox Code Playgroud)

to_bit_vector正如您所看到的,使用不易出错,因为示例代码中的常量不是2但实际上是4 ;-)


小智 5

更客观的通用分配如下:

var := (1=>'1', others=>'0');