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

Syntax 声明与另一个信号类型相同的信号(VHDL),syntax,signals,vhdl,Syntax,Signals,Vhdl,是否可以在VHDL中声明与另一个信号类型相同的信号 例如,假设我们有以下信号声明: signal address_q : integer range 0 to 31; 我需要声明一个变量address\u d,该变量的类型与address\u q变量的类型相同(整数范围0到31)。是否可以通过使用内置信号属性或其他方式执行此操作?第一种方式: 您可以一次声明多个信号,并用逗号分隔它们 signal address_q, address_d : integer range 0 to 31; 第

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

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

signal address_q : integer range 0 to 31;

我需要声明一个变量
address\u d
,该变量的类型与
address\u q
变量的类型相同(
整数范围0到31
)。是否可以通过使用内置信号属性或其他方式执行此操作?

第一种方式:

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

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;

第一路:

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

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;

子类型
属性可能就是您要查找的:

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标准的旧版本。

子类型属性可能就是您要查找的:

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标准。

我知道如何使用这两种标准,但我希望可能会有一些技巧使用信号属性来获取信号类型,比如
type my_type is signal'type
@MarkoGulin OK。我已经赶了你没有,我没有在问题中具体说明我到底想要什么。谢谢你的回答!:)保留答案,这是原始问题的可能解决方案之一。如果没有其他方法,我会接受答案。我知道如何使用这两种方法,但我希望可能会有一些技巧使用信号属性来获取信号类型,比如
type my_type is signal'type
@MarkoGulin OK。我已经赶了你没有,我没有在问题中具体说明我到底想要什么。谢谢你的回答!:)保留答案,这是原始问题的可能解决方案之一。如果没有其他方法,我会接受答案。这正是我想要的,但不幸的是,它在2008年之前的版本中不起作用。这正是我想要的,但不幸的是,它在2008年之前的版本中不起作用。