2013-05-28 29 views
0

我努力使用泛型为组件的接口(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 

如何访问记录的字段supp假设记录始终有一个该名称的字段(vhdl2008可用)? (我不想改变记录中矢量的宽度)?


改写问:什么是创纪录的载体整合与一般宽度为实体的端口的最佳方式?

回答

1

第一:

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

回答你的问题:

实体(和架构)里面,没有人知道关于数据类型。您只能通过作为通用参数传递的函数或过程来访问它。不过,目前还不知道ModelSim真的支持了多少。

+0

什么是'VETSMOD'?对不起,我没有测试修剪过的代码。我使用的是Modelsim 10.2,它支持vhdl 2008。是的,它支持类型泛型,当我尝试访问记录时,问题只会发生。你是对的,但我想我明确表示了我的意见。 – ted

+0

我更新了我的问题,虽然我完全理解了你描述的问题,但我正在寻找一种解决问题的方法,以向导体显示dynmaic宽度(参见上面问题的底部)。在另一个说明中,我喜欢你的eclipse插件。 – ted

+0

好吧,谷歌告诉我有关[vetsmod](http://www.sigasi.com/content/vetsmod-get-better-feedback-your-vhdl-code-snippets) – ted

相关问题