如何在VHDL中初始化位向量

时间:2013-12-31 11:16:48

标签: initialization vhdl

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

variable var : bit_vector := B"00000000000000000000000000000100";

我收到这些错误:

  

无法将整数文字与类型数组类型“bit_vector”

匹配

  

使用无约束数组类型声明变量“var”   

我该如何解决这个问题?感谢。

3 个答案:

答案 0 :(得分:6)

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

variable var : bit_vector(31 downto 0) ...

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

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

或初始值为位字符串,如:

variable var : bit_vector(31 downto 0) := "00000000000000000000000000000010";

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

答案 1 :(得分:4)

更客观,通用的分配如下:

var:=(1 =>'1',其他=>'0');

答案 2 :(得分:3)

添加@ MortenZilmer的答案,请注意:

  1. 如果声明常量而不是变量,编译器对原始代码没有问题:
  2. constant const: bit_vector := b"00000000000000000000000000000100"; -- works OK

    1. 如果在base 10中编写,则可以使bitstring文字更具可读性。您还可以指定bitstring文字的位数,如下例所示:
    2. variable var: bit_vector(31 downto 0) := 32d"2";