vhdl - 如何定义记录类型的默认值
问题描述
是否可以为记录类型或通常任何用户定义的类型定义默认值?
类似(伪VHDL)的东西:
type t_foo is record
a : integer := 4;
b : std_logic := '0';
end record;
或者
subtype glarp is integer range 0 to 10 := 5;
编辑:将 glarp 从类型更改为子类型定义。
解决方案
我冒昧地将评论变成答案。记录类型的初始值可以由该类型的常量定义。
type t_foo is record
a : integer;
b : std_logic;
end record;
constant INIT_T_FOO : t_foo := (a => 4, b => '0');
signal bar : t_foo := INIT_T_FOO;
这种方法的缺点是用户必须确保每次t_foo
定义类型对象时都设置正确的初始值。使用常量来定义初始值可以节省一些输入,并且可以更容易地在以后更改初始值。但同样,以这种方式强制执行特定的初始值是不可能的,这一切都归结为编码纪律和人为错误,因此这是一个次优的解决方案。
推荐阅读
- python - 我怎样才能使它在 Tkinter 中单击按钮时,当前显示在屏幕上的任何和所有标签都被新标签替换?
- php - PHP 数学差异
- cassandra - 不同数据中心内的 Canssandra 复制
- matlab - 在 IDL 数组的范围内找到?
- algorithm - 交换元素以满足特定条件的充分算法
- python - 如何使用 python 计算和绘制从调查中收到的数据
- python - 当该字段仅存在于子类中时,为什么 Django 告诉我该字段与基类中的字段发生冲突?
- android - Android Frebase 用户数据检索
- protractor - 如何在 Angular 8 中为 Protractor 配置 Jest 规范报告器?
- go - 为什么 goroutine 中的无缓冲通道得到这个顺序