如何访问记录元素并为其赋值?

时间:2018-03-09 11:33:07

标签: vhdl record

我用VHDL创建了一条记录

type direction is record
  left : std_logic;
  right : std_logic;
end record direction;

我的函数应该返回此记录,并为0或1的左右分配值。

这部分功能如下:

begin

if (x = 0) then
    direction.left <= '0';
else
    direction.left <= '1';
end if;
....

return direction;
end;

但我不断收到错误,因为它不能用作所选名称中的前缀。我从来没有使用函数中的记录,所以我觉得在访问记录元素时我做错了。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您定义的是type

类型是项目的描述符,通常是signalvariable

VHDL中的常见类型有std_logicstd_logic_vectorinteger等......您有权创建自己的类型。您描述的类型方向是正确的。

要使用它,您必须在函数中声明一个使用以下类型定义的变量:

variable my_direction : direction;

然后您可以在函数中使用变量my_direction

type direction is record
  left : std_logic;
  right : std_logic;
end record direction;

function my_func (x...) return direction is
  variable my_direction : direction;
begin

if (x = 0) then
    my_direction.left := '0';
else
    my_direction.left := '1';
end if;
....

return my_direction;
end;