使用VHDL我想要一些寄存器,每个寄存器存储16位.所以我发现VHDL有一个内置数组,我想用它在iy中的每个元素中存储16位所以我想知道VHDL是否将这个数组映射到实际的寄存器?
小智 3
简短的回答是否定的 - 数组类型不映射到寄存器。
长答案:
VHDL 中的数组类型只是相同类型元素的索引集合。在您的情况下,您可能会使用数组作为寄存器组的输出。
因此,假设您有一组 8 个寄存器,每个寄存器保存 16 位。该组的输出将是一个 16 位向量的数组(大小为 8)。该寄存器组的组件声明如下所示:
组件 reg8x16 港口( 时钟:在 std_logic 中; 重置:在 std_logic 中; 启用:在 std_logic 中; rout : 输出 r_array(0 到 7) ); 终端组件;
rout是寄存器组中已注册输出的数组。rout(0)因此,您可以使用类型为 的存储体取消引用寄存器 0 的输出std_logic_vector(15 downto 0)。
另外,不要忘记在某处声明数组类型(通常在包文件中)。它看起来像:
type r_array is array (integer range <>) of std_logic_vector(15 downto 0);
该(integer range <>)语句是数组索引范围的一种占位符 - 稍后当使用数组类型时(例如上面的组件声明中),它将被填充。
我不确定这是否回答了你的问题。我不会详细介绍如何创建 reg8x16 组件。基本上,您只需创建一个 16 位寄存器,其输出为 type 类型std_logic_vector(15 downto 0);(您可以在线查找如何执行此操作...这是非常基本的 VHDL)。然后,您只需实例化其中 8 个寄存器,并将它们放入名为 的组件中reg8x16。