声明与另一个信号类型相同的信号(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 标准。
是否可以在 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 标准。