vhdl - 设置初始值时对记录类型信号的部分分配
问题描述
是否可以在初始化时对记录类型进行部分分配?
就像是:
type t_foo is record
a : integer;
b : std_logic;
end record;
signal bar : t_foo := (b => '0');
如果是正常的信号分配,我可以这样做:
bar.b <= '1';
然而,在初始化信号或常数时这是不可能的。在我看来,在设置初始值时必须分配所有记录成员,或者根本不分配。
使用函数可能有一种解决方法,但有没有更简单/更好/原生的方法?
解决方案
由于函数参数可能具有默认值,因此实现“部分初始化”的一种可能解决方法是使用 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');
调用函数时,只提供那些应该具有非默认值的参数,其他参数将保持不变。
编辑:固定变量赋值。
推荐阅读
- python - 使用带有 Pandas DataFrame 的 Scikit-Learn OneHotEncoder
- docker - 如何使用 nginx-proxy 运行 laradock?
- amazon-elastic-beanstalk - 为什么 .elasticbeanstalk 文件夹包含在 .gitignore 中?
- python - 当我从一个模块中导入一个特定函数时,除了该函数之外还有代码,它运行整个模块
- python - 处理在 Python 中的构造一致性较差的 CSV
- mysql - Eloquent 按关系过滤(仅最后一条记录)
- powershell - 如果文件夹中的文件超过 1 分钟,则发送电子邮件,否则不要在 Powershell 中发送任何内容
- java - 我可以从 spring bean 访问 graphql-context 吗?
- java - 我正在使用 java JpaRepository 创建一个 Api 我需要在查询中放置一个变量
- java - Java Streams 术语 - 中间 - 非终端之间的区别