我正在努力使用泛型来定义组件的接口(port
)的记录。在一个较老的问题中,我被指向使用类型泛型。但是我不知道如何访问记录的字段。 Here是一个答案是使用类型泛型的记录被提升
假设以下组件:
entity genericInput is
generic(
type recordType
);
port(
result: integer;
port: in recordType
);
end entity;
architecture behav of genericInput is
begin
result <= port.part1;
end architecture;
这个实例化:
type myRecord is record
part1: integer;
part2: std_logic_vector(1 to 100)
end record;
inst: genericInput
generic map(recordType <= myRecord)
port map(...)
我从modelsim得到了编译错误:
** Error: ****.vhd(21): Unknown expanded name. --line on which i attempt port.part1
** Error: ****.vhd(22): VHDL Compiler exiting
如果记录总是有一个具有该名称的字段(vhdl2008可用),我如何访问泛型提供的记录的字段? (我不想改变记录中矢量的宽度)?
重新提出问题:将记录与通用宽度向量集成到实体端口的最佳方法是什么?
答案 0 :(得分:1)
首先:
PORT
是关键字。您不能将其用作端口的名称。如果您在发布论坛之前修改代码,非常感谢您进行测试。 (将其设为 VETSMOD )回答你的问题:
在实体(和架构)内部,对数据类型一无所知。您只能通过作为通用参数传递的函数或过程来访问它。不过,目前还不确定ModelSim究竟支持了多少。