0

我正在努力使用泛型来为port组件的 interface() 定义记录。在一个较旧的问题中,我被指出使用类型泛型。但是我不知道如何访问记录的字段。是一个答案,即推广使用具有泛型类型的记录

假设以下组件:

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 可用),我如何访问由泛型提供的记录的字段?(我不想改变记录中向量的宽度)?


改写的问题:将具有通用宽度向量的记录集成到实体的端口中的最佳方法是什么?

4

1 回答 1

1

第一的:

  • PORT是一个关键字。您不能将其用作端口的名称。如果您在在论坛上发布之前修剪代码,如果您也对其进行测试,我们将不胜感激。(使它成为VETSMOD
  • 您使用的是哪个版本的 ModelSim?你确定它支持 VHDL 2008 吗?您确定它支持实体中的泛型吗?

回答你的问题:

在实体(和架构)内部,对数据类型一无所知。您只能通过作为通用参数传递的函数或过程来访问它。不过,目前尚不确定 ModelSim 真正支持了多少。

于 2013-05-29T08:46:34.903 回答