在vhdl中定义记录方法

时间:2011-10-14 12:42:59

标签: methods record vhdl xilinx

是否可以为VHST中的记录定义类似OOP样式的实例方法,以便XST识别?

对于记录类型矩形

type rectangle is record
    x      : integer;
    y      : integer;
    width  : integer;
    height : integer;
end record; 

我想定义 is_square get_area 等方法。

可以使用属性吗?

2 个答案:

答案 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包。