是否可以在初始化时对记录类型进行部分分配?
像这样:
type t_foo is record
a : integer;
b : std_logic;
end record;
signal bar : t_foo := (b => '0');
在正常分配信号的情况下,我可以这样做:
bar.b <= '1';
但是在初始化信号或常量时这是不可能的。在我看来,设置初始值时必须分配所有记录成员,或者根本不分配任何成员。
使用函数可能有一种解决方法,但是有没有更简单/更好/本机的方法?
答案 0 :(得分:0)
由于可能具有函数参数的默认值,因此实现“部分初始化”的一种可能的解决方法是使用init函数:
type t_foo is record
a : integer;
b : std_logic;
end record;
function init_t_foo(a : integer := 83423; b : std_logic := 'Z') return t_foo is
variable ifoo : t_foo;
begin
ifoo.a := a;
ifoo.b := b;
return ifoo;
end function init_t_foo;
constant bar : t_foo := init_t_foo(b => '1');
仅在调用该函数时应提供非默认值的参数,其他参数将保持不变。
编辑:固定变量分配。