VHDL如何迭代记录中的所有元素

VHDL如何迭代记录中的所有元素,vhdl,Vhdl,是否有任何方法可以迭代记录类型的所有元素?为了简单起见,假设记录中的所有元素类型都是std_逻辑 例如: type bar is record bar1 : std_logic; bar2 : std_logic; bar3 : std_logic; end record; 我如何(甚至可能)访问任意记录类型的元素 (我知道,使用新的VHDL,我们将进行内省) 有了VHDL2008,我是否可以使用一些属性来访问元素,并且假设我们事先知道元素的类型,那么我们如何迭代该记录 不

是否有任何方法可以迭代记录类型的所有元素?为了简单起见,假设记录中的所有元素类型都是std_逻辑

例如:

type bar is record 
   bar1 : std_logic;
   bar2 : std_logic;
   bar3 : std_logic;
end record;
我如何(甚至可能)访问任意记录类型的元素

(我知道,使用新的VHDL,我们将进行内省)


有了VHDL2008,我是否可以使用一些属性来访问元素,并且假设我们事先知道元素的类型,那么我们如何迭代该记录

不能对记录进行迭代(使用任何当前或未来版本)。这没有什么意义,因为您不能根据类型采取不同的操作。只能对数组进行迭代。

不能对记录进行迭代(使用任何当前或未来版本)。这没有什么意义,因为您不能根据类型采取不同的操作。迭代只能在数组上完成。

没有VHDL。与数组类型不同,记录子类型不依赖于元素的数量。数组复合类型的记录元素的子类型可以通过内省找到。两种不同的记录类型不能紧密相关。元素的数量不是未知的,元素类型也不是未知的。这个问题的例子并不令人信服。我认为可能有办法做到这一点。不是使用记录,而是使用自定义容器类型。你能提供一些关于你的用例的更多细节吗?这里没有VHDL。与数组类型不同,记录子类型不依赖于元素的数量。数组复合类型的记录元素的子类型可以通过内省找到。两种不同的记录类型不能紧密相关。元素的数量不是未知的,元素类型也不是未知的。这个问题的例子并不令人信服。我认为可能有办法做到这一点。不是使用记录,而是使用自定义容器类型。你能提供一些关于你的用例的更多细节吗?这个陈述现在是错误的。VHDL 2019允许记录反射。这取决于时间点。顺便说一句,目前没有工具支持VHDL 2019的“反射”属性(或者2019年的大部分)。是的,绝对不支持合成。然而,RovieraPRO现在有很多人支持它。不完全是这样,但他们已经足够使用主要的新功能,并且对修复bug非常敏感。现在这种说法是错误的。VHDL 2019允许记录反射。这取决于时间点。顺便说一句,目前没有工具支持VHDL 2019的“反射”属性(或者2019年的大部分)。是的,绝对不支持合成。然而,RovieraPRO现在有很多人支持它。虽然还不完全,但它们足以使用主要的新功能,并且对修复bug的反应非常迅速。