使用 VHDL,我想要一些寄存器,每个寄存器存储 16 位。
所以我发现VHDL有一个内置数组,我想用它来存储iy中每个元素的16位,所以我想知道VHDL是否将此数组映射到实际寄存器?
简短的回答是否定的 - 数组类型不映射到寄存器。
长答案:
VHDL 中的数组类型只是相同类型元素的索引集合。在您的情况下,您可能会使用数组作为寄存器组的输出。
因此,假设您有一组 8 个寄存器,每个寄存器保存 16 位。该组的输出将是一个 16 位向量的数组(大小为 8)。该寄存器组的组件声明如下所示:
component reg8x16
port(
clock: in std_logic;
reset: in std_logic;
enable: in std_logic;
rout : out r_array(0 to 7)
);
end component;
rout
是寄存器组中已注册输出的数组。因此,您可以使用以下命令从存储体中取消引用寄存器 0 的输出rout(0)
,其类型为std_logic_vector(15 downto 0)
.
另外,不要忘记在某处声明数组类型(通常在包文件中)。它看起来像:
type r_array is array (integer range <>) of std_logic_vector(15 downto 0);
The (integer range <>)
statements 是数组索引范围的一种占位符 - 稍后当使用数组类型时(例如在上面的组件声明中),它将被填充。
我不确定这是否回答了你的问题。我不会详细介绍如何创建 reg8x16 组件。基本上,您只需创建一个 16 位寄存器,其输出类型为std_logic_vector(15 downto 0);
(您可以在线查找如何执行此操作...这是非常基本的 VHDL)。然后你只需实例化其中 8 个寄存器,并将它们放入名为的组件中reg8x16
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)