2

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

对于记录类型矩形

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

我想定义is_squareget_area等方法。

可以使用属性来完成吗?

4

2 回答 2

3

不,但你可以接近protected类型。

这是一个示例,取自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 综合。

于 2011-10-14T14:33:17.283 回答
3

您是否有某些原因不想简单地定义一些函数以及您的自定义类型?

除了定义新函数(例如上面的 is_square)之外,如果这对您的代码有意义,您还可以覆盖现有函数(例如 +、< 等)。

通常,您会将自定义类型和操作它们的函数包装到一个包中,然后在您的代码中使用。例如,参见标准 VHDL math_real 和 numeric_std 包。

于 2011-10-14T14:46:11.347 回答