首页 > 解决方案 > 在VHDL中,通用映射分配的RHS指的是什么?

问题描述

根据我对 VHDL 的理解,端口映射声明将是:

signal reset_n : std_logic;

...

port map (
    ...
    reset_n => reset_n
);

...其中端口映射分配的 LHS 是组件上的端口名称,而 RHS 是您在上面声明的信号。

但是对于通用地图,RHS 指的是什么?

...
generic map (
    ...
    baud_rate => baud_rate
);

LHS 是实体中的通用字段,由 RHS 指定的任何内容写入(对吗?),将值传递到通用的 VHDL 方式。但是,如果 RHS 没有被声明为信号,那么分配/连接到 LHS 的是什么?引擎盖下发生了什么?

标签: genericsvhdlfpga

解决方案


起初,LHS 被称为正式的,而 RHS 被称为实际的。

形式是指您在实体中声明的常量。

entity foo is
  generic (
    constant baud_rate : T_BAUD
  );
end entity;

实际值在通用映射正式的. 在您的情况下,实际是一个常数,您可以关联:

  • 来自更高层的另一个通用常量
  • 在架构声明区域中声明的常量或在包中声明的全局常量
  • 一个表达式,包括一个文字。

例子:

entity e is
  generic (
    baudrate : T_BAUD
  );
end entity;

architecture a of e is
  constant BR : T_BAUD := 100 kBd;
begin
  inst1: entity work.foo
    generic map (
      baud_rate => baudrate
    );
  inst2: entity work.foo
    generic map (
      baud_rate => BR
    );
  inst3: entity work.foo
    generic map (
      baud_rate => 115.2 KBd
    );
end architecture;

推荐阅读