是否可以在初始化时对记录类型进行部分赋值?
类似于:
type t_foo is record
a : integer;
b : std_logic;
end record;
signal bar : t_foo := (b => '0');在正常信号分配的情况下,我可以这样做:
bar.b <= '1';然而,在初始化信号或常量时,这是不可能的。在我看来,在设置初始值时,所有记录成员都必须分配,或者根本不分配。
可能有一种使用函数的变通方法,但有没有更简单/更好/本机的方法?
发布于 2019-03-31 17:15:52
由于函数参数可以具有默认值,因此实现“部分初始化”的一种可能的解决方法是使用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');当调用函数时,只提供那些应该具有非默认值的参数,其他参数将保持不变。
编辑:固定变量赋值。
https://stackoverflow.com/questions/55435436
复制相似问题