是否可以为VHST中的记录定义类似OOP样式的实例方法,以便XST识别?
对于记录类型矩形:
type rectangle is record
x : integer;
y : integer;
width : integer;
height : integer;
end record;
我想定义 is_square , get_area 等方法。
可以使用属性吗?
答案 0 :(得分:3)
不,但你可以接近protected
类型。
以下是一个取自Protected Shared Variables in VHDL: IEEE Std 1076a
的示例type shared_counter is protected body
variable count : integer := 0;
procedure reset is
begin
count := 0;
end procedure reset;
procedure increment (by : integer := 1) is
begin
count := count + by;
end procedure increment;
impure function value return integer is
begin
return count;
end function value;
end protected body shared_counter;
我不知道受保护类型的概念是否可以通过XST合成。
答案 1 :(得分:3)
是否有一些原因您不想简单地定义一些函数以及您的自定义类型?
除了定义新函数(例如上面的is_square)之外,如果对您的代码有意义,您可以覆盖现有函数(例如+,<等)。
通常,您可以将自定义类型和函数包装到一个包中,然后将其用于代码中。例如,请参阅标准VHDL math_real和numeric_std包。