将不同长度的常量初始化为除所有 zeros/ones 之外的其他内容
Initialize constant of varying length to something other than all zeros/ones
我正在为随机发生器设计一个带有可变多项式的简单 LFSR。 lfsr 长度被定义为通用长度。我需要将起始值常量初始化为 zeros/ones 以外的值。我以前找到过这个问题的答案,但我似乎再也找不到答案了。这是我正在尝试做的事情:
entity GaloisLfsr is
generic
(
g_LFSR_LENGTH : integer := 5
);
...
end entity GaloisLfsr;
architecture zGaloisLfsr of GaloisLfsr is
constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 0) := ((others => '0'), '1');
定义大小可变的常量到纯“(others => '0')”无法捕获的常量的正确语法是什么?
您可以将 natural/integer 转换为向量
use IEEE.NUMERIC_STD.ALL;
...
constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 0) := std_logic_vector(to_unsigned(g_polynomial , g_LFSR_LENGTH));
假设要将 5 位常量 c_INITIAL
初始化为 "00001"
,则常量的声明为:
constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 1) := ((others => '0'), 0 => '1');
我正在为随机发生器设计一个带有可变多项式的简单 LFSR。 lfsr 长度被定义为通用长度。我需要将起始值常量初始化为 zeros/ones 以外的值。我以前找到过这个问题的答案,但我似乎再也找不到答案了。这是我正在尝试做的事情:
entity GaloisLfsr is
generic
(
g_LFSR_LENGTH : integer := 5
);
...
end entity GaloisLfsr;
architecture zGaloisLfsr of GaloisLfsr is
constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 0) := ((others => '0'), '1');
定义大小可变的常量到纯“(others => '0')”无法捕获的常量的正确语法是什么?
您可以将 natural/integer 转换为向量
use IEEE.NUMERIC_STD.ALL;
...
constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 0) := std_logic_vector(to_unsigned(g_polynomial , g_LFSR_LENGTH));
假设要将 5 位常量 c_INITIAL
初始化为 "00001"
,则常量的声明为:
constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 1) := ((others => '0'), 0 => '1');