簡體   English   中英

如何在VHDL中初始化位向量

[英]How to initialize a bit vector in VHDL

我想要一個矢量,我希望它有一個值2.我嘗試了很多東西,但我總是得到一個錯誤。 現在我有這個:

variable var : bit_vector := B"00000000000000000000000000000100";

我收到這些錯誤:

無法將整數文字與類型數組類型“bit_vector”匹配

不允許使用無約束數組類型“bit_vector”聲明變量“var”

我怎樣才能解決這個問題? 謝謝。

你必須給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 ;-)

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

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

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

  1. 如果聲明常量而不是變量,編譯器對原始代碼沒有問題:

constant const: bit_vector := b"00000000000000000000000000000100"; -- works OK

  1. 如果在基數10中編寫,則可以使bitstring文字更具可讀性。您還可以指定bitstring文字的位數,如下例所示:

variable var: bit_vector(31 downto 0) := 32d"2";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM