声明与另一个信号类型相同的信号(VHDL)

Declare a signal of the same type as another signal (VHDL)

是否可以在 VHDL 中声明与另一个信号类型相同的信号?

例如,假设我们有以下信号声明:

signal address_q : integer range 0 to 31;

我需要声明一个与 address_q 变量 (integer range 0 to 31) 具有相同类型的变量 address_d。是否可以通过使用内置信号属性或其他方式来做到这一点?

第一种方式:

您可以一次声明更多信号,用逗号分隔它们。

signal address_q, address_d : integer range 0 to 31;

第二种方式:

您可以先声明您的类型,然后将其用于所有信号声明。

type my_type is integer range 0 to 31;

signal address_q : my_type;
signal address_d : my_type;

subtype 属性可能就是您要找的:

entity foo is
end entity foo;

architecture bar of foo is
  signal address_q : integer range 0 to 31;
begin
  process
    variable v: address_q'subtype;
  begin
    report to_string(v'subtype'left);
    report to_string(v'subtype'right);
    wait;
  end process;
end architecture bar;

使用 GHDL 进行仿真:

foo.vhd:10:5:@0ms:(report note): 0
foo.vhd:11:5:@0ms:(report note): 31

注意:此属性已在 VHDL 2008 中引入。请勿尝试将其用于旧版本的 VHDL 标准。