将不同长度的常量初始化为除全零/ 1之外的其他值

时间:2018-03-08 02:41:00

标签: vhdl

我正在为随机数发生器设计一个带有可变多项式的简单LFSR。 lfsr长度被定义为通用。我需要将起始值常量初始化为除零/ 1之外的其他内容。我之前找到了答案,但我似乎无法再找到答案。这是我正在尝试做的事情:

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');

将不同大小的常量定义为纯'(其他=>'0')无法捕获的常量的正确语法是什么?

2 个答案:

答案 0 :(得分:1)

假设有人想将5位常量c_INITIAL初始化为"00001",那么常量的声明将是:

constant c_INITIAL : std_logic_vector((g_LFSR_LENGTH - 1) downto 1) := ((others => '0'), 0 => '1');

答案 1 :(得分:0)

您可以将自然/整数转换为矢量

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));