【问题标题】:Top level using port maps with records in VHDL使用带有 VHDL 记录的端口映射的顶层
【发布时间】:2014-12-16 21:17:48
【问题描述】:

为了能够在我的 VHDL 设计中支持可扩展性,我开始使用记录作为组件的输入和输出。目前,我想在顶级架构中使用端口映射将我的组件链接到外部。问题是,记录有多个变量,必须与不同的来源联系起来。

目前我在 VHDL 代码中使用的记录如下所示(名称已替换为假货):

TYPE some_record_input IS RECORD
    input_one   :   sfixed(3 downto -32);
    input_two   :   sfixed(3 downto -32);
    input_rst   :   std_logic;
END RECORD;

TYPE some_record_output IS RECORD
    output_one  :   std_logic_vector(15 downto 0);
    output_dn   :   std_logic;
END RECORD;

因此,我将 fixed_pkg 库用于定点。
这些记录在实体端口映射中的使用如下。

ENTITY my_component IS
port
(
    clk     :   IN  std_logic;
    data    :   IN  some_record_input;
    result  :   OUT some_record_output
);
END my_component;

现在是出现问题的部分。我在顶层使用这个组件将它与我的 Altera 板可用的按钮和 LED 链接起来。目前这是通过在我的顶级实体主体中使用端口映射来完成的:

A0 : my_component PORT MAP(clk => CLK, data => (input_one => IONE, input_two => ITWO, input_rst => RST), result => (output_one => OONE, output_dn => ODN));

因此,大写信号是输出信号。显然这不是要走的路,因为 modelsim 不编译它。我想知道是否有人可以告诉我如何为 VHDL 中的顶级实体完成端口映射记录。提前致谢。

【问题讨论】:

  • 声明记录类型的信号并将它们直接映射到端口。
  • 我不确定你的问题是什么。您的意思是如何将引脚分配给您的顶级记录/顶级端口映射中的记录如何映射到 UCF 引脚名称?

标签: components vhdl record toplevel


【解决方案1】:

而不是聚合,使用记录元素的单独关联:

A0 : my_component
PORT MAP(
  clk => CLK, 
  data.input_one => IONE, 
  data.input_two => ITWO, 
  data.input_rst => RST, 
  result.output_one => OONE, 
  result.output_dn => ODN
);

执行此操作时,请确保单独关联数据和结果的所有部分。还要确保不要在对象的各个关联之间混合其他内容,因此,数据的所有部分必须彼此相邻。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多