如果记录有多个字段,则可以使用:
type record_one_field_t is record
abit : bit;
abit2 : bit;
end record;
constant record_one_field : record_one_field_t := ('0', '1');
但如果只有一个字段:
type record_one_field_t is record
abit : bit;
end record;
constant record_one_field : record_one_field_t := ('0');
GHDL 0.34给出:
can't match character literal '0' with type record type "record_one_field_t"
我认为这是因为('0')
被视为一个角色。
为什么我要这样做而不只是使用bit
变量:
答案 0 :(得分:6)
命名关联。
constant record_one_field : t := (abit => '0');
通常你可以使用命名或位置关联,但对于只有一个组件的记录或数组,只有命名关联有效,因为位置不明确,完全如你所怀疑。
答案 1 :(得分:1)
IEEE 1076-2008 9.3.3.1(记录聚合)明确表示不可能,并且您需要使用Brian Drummond提到的命名关联:
应始终使用命名关联指定包含单个元素关联的聚合,以便将它们与带括号的表达式区分开来。
提及in a comment。