我用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;
但我不断收到错误,因为它不能用作所选名称中的前缀。我从来没有使用函数中的记录,所以我觉得在访问记录元素时我做错了。
感谢您的帮助!
答案 0 :(得分:2)
您定义的是type
类型是项目的描述符,通常是signal
或variable
。
VHDL中的常见类型有std_logic
,std_logic_vector
,integer
等......您有权创建自己的类型。您描述的类型方向是正确的。
要使用它,您必须在函数中声明一个使用以下类型定义的变量:
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;