如何实例化VHDL中只有一个字段的记录?

时间:2016-06-20 13:58:46

标签: vhdl

如果记录有多个字段,则可以使用:

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变量:

  • 我正在开始设计,这些是输入,我想我稍后会添加更多输入
  • 好奇心

2 个答案:

答案 0 :(得分:6)

命名关联。

constant record_one_field : t := (abit => '0');

通常你可以使用命名或位置关联,但对于只有一个组件的记录或数组,只有命名关联有效,因为位置不明确,完全如你所怀疑。

答案 1 :(得分:1)

IEEE 1076-2008 9.3.3.1(记录聚合)明确表示不可能,并且您需要使用Brian Drummond提到的命名关联:

  

应始终使用命名关联指定包含单个元素关联的聚合,以便将它们与带括号的表达式区分开来。

提及in a comment