Определите метод для записи в VHDL - PullRequest
1 голос
/ 14 октября 2011

Можно ли определить что-то вроде метода экземпляра в стиле ООП для записи в VHDL, которая будет распознаваться XST?

Для типа записи прямоугольник :

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

Я бы хотел определить методы, такие как is_square , get_area и т. Д.

Можно ли это сделать с помощью атрибутов?

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Есть ли причина, по которой вы не хотите просто определять несколько функций вместе с вашими пользовательскими типами?

В дополнение к определению новых функций (таких как ваш is_square, выше) вы можете переопределить существующие функции (такие как +, <и т. Д.), Если это имеет смысл для вашего кода. </p>

Обычно вы бы упаковывали свои пользовательские типы и функции для манипулирования ими в пакет, который затем использовали бы в своем коде. См., Например, стандартные пакеты VHDL math_real и numeric_std.

3 голосов
/ 14 октября 2011

Нет, но вы можете подобраться к 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.

...