如何定义记录类型的默认值

时间:2019-03-30 20:28:12

标签: vhdl fpga asic

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

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

1 个答案:

答案 0 :(得分:0)

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

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的对象时,用户都必须确保设置正确的初始值。使用常量定义初始值可以节省一些输入,并使以后更容易更改初始值。但是同样,不可能以这种方式强制执行特定的初始值,这全都取决于编码准则和人为错误,因此这是次优的解决方案。