首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置初始值时对记录型信号的部分赋值

设置初始值时对记录型信号的部分赋值
EN

Stack Overflow用户
提问于 2019-03-31 04:34:09
回答 1查看 343关注 0票数 2

是否可以在初始化时对记录类型进行部分赋值?

类似于:

代码语言:javascript
复制
type t_foo is record
    a : integer;
    b : std_logic;
end record;

signal bar : t_foo := (b => '0');

在正常信号分配的情况下,我可以这样做:

代码语言:javascript
复制
bar.b <= '1';

然而,在初始化信号或常量时,这是不可能的。在我看来,在设置初始值时,所有记录成员都必须分配,或者根本不分配。

可能有一种使用函数的变通方法,但有没有更简单/更好/本机的方法?

EN

回答 1

Stack Overflow用户

发布于 2019-03-31 17:15:52

由于函数参数可以具有默认值,因此实现“部分初始化”的一种可能的解决方法是使用init函数:

代码语言:javascript
复制
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');

当调用函数时,只提供那些应该具有非默认值的参数,其他参数将保持不变。

编辑:固定变量赋值。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55435436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档