我有一条记录定义如下

type ifx_t is
record
  data                        : std_logic_vector(127 downto 0);
  address                     : std_logic_vector (19 downto 0);
  WrReq                       : std_logic;--
  RdReq                       : std_logic; --
end record;
type Array_ifx_t is array (0 to 2) of ifx_t;

而且我必须初始化该记录数组的实例,并且尝试了以下方法,但它不起作用
signal pair_in       : Array_ifx_t:= (others =>((others =>'0'),(others=>'0'),'0','0'));

请帮助。

最佳答案

如评论中所述,当使用ModelSim编译问题代码时,ModelSim可以正常工作。但是,其他工具可能对使用Array_ifx_t中的元素的类型化值更为严格。

对于类型化的分配和命名记录元素的使用,我认为这可以使getter概述并避免位置引用引起的错误,您可以使用以下方法进行初始化:

constant IFX_T_0S : ifx_t := (data => (others =>'0'),
                              address => (others=>'0'),
                              WrReq => '0',
                              RdReq => '0');

signal pair_in : Array_ifx_t:= (others => IFX_T_0S);

关于arrays - 初始化VHDL中的记录数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20630356/

10-13 08:18