【发布时间】:2020-10-13 22:38:41
【问题描述】:
使用 VHDL 2008,您可以定义不受约束的类型/子类型。例如:
slv_array_t is array(natural range <>) of std_logic_vector;
然后您可以创建子类型,其中一个或多个维度保持打开状态以供以后限制。
subtype slv32_array_t is slv_array_t(open)(31 downto 0);
signal some_object : slv32_array_t(7 downto 0);
当open 维度是第一个维度时,这很好。但是,如果不受约束的维度不是第一个维度,我该如何约束子类型?下面给出维度已经被约束的错误inn ActiveHDL。
Index constraint cannot be applied to constrained type.
subtype slv_array8_t is slv_array_t(7 downto 0)(open); -- legal
signal some_object : slv_array8_t(31 downto 0);
以下也有同样的错误:
signal some_object : slv_array8_t(7 downto 0)(31 downto 0);
那么,实际上有没有一种方法可以使用 VHDL 2008 将这种类型限制在对象中?它甚至进入了 VHDL 2019 吗?
【问题讨论】:
-
signal some_object: slv_array8_t(open)(31 downto 0);5.3.2 数组类型,5.3.2.1 通用,变量声明末尾有一个例子。语义在 5.3.2.2 索引约束和离散范围中描述。
标签: vhdl