首页 > 解决方案 > 如何定义记录类型的默认值

问题描述

是否可以为记录类型或通常任何用户定义的类型定义默认值?

类似(伪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 从类型更改为子类型定义。

标签: vhdlfpgaasic

解决方案


我冒昧地将评论变成答案。记录类型的初始值可以由该类型的常量定义。

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定义类型对象时都设置正确的初始值。使用常量来定义初始值可以节省一些输入,并且可以更容易地在以后更改初始值。但同样,以这种方式强制执行特定的初始值是不可能的,这一切都归结为编码纪律和人为错误,因此这是一个次优的解决方案。


推荐阅读