在vhdl中定义记录方法

发布于 2024-12-10 00:58:19 字数 324 浏览 0 评论 0原文

是否可以为 VHDL 中的记录定义类似 OOP 风格的实例方法以供 XST 识别?

对于记录类型矩形

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

我想定义is_squareget_area等方法。

可以使用属性来完成吗?

Is is possible to define something like OOP-style instance method for a record in VHDL to be recognized by XST?

For a record type rectangle:

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

I'd like to define methods like is_square, get_area, etc.

Can it be done using attributes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

几味少女 2024-12-17 00:58:19

不,但您可以接近 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 综合。

No, but you can get close with protected types.

Here's an example, taken from 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;

I have no idea if the concept of a protected type is synthesisable with XST though.

装迷糊 2024-12-17 00:58:19

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

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

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

Is there some reason you don't want to simply define a few functions along with your custom type(s)?

In addition to defining new functions (such as your is_square, above), you can override existing functions (such as +, <, etc) if that makes sense for your code.

Normally, you'd wrap your custom types and the functions to manipulate them into a package you'd then use in your code. See for example the standard VHDL math_real and numeric_std packages.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文