Можно ли создать определяемый пользователем атрибут VHDL для типа, который вызывает функцию, принимающую экземпляр типа в качестве аргумента? - PullRequest
0 голосов
/ 28 мая 2020

Я расширял свои знания VHDL и экспериментировал с пользовательскими атрибутами. Я хочу иметь возможность определять атрибут «max», который возвращает самый большой элемент массива и применяется ко всем экземплярам типа массива. Например, somearray'max вызывает максимум функции с аргументом somearray. Поведение аналогично предопределенному атрибуту somearray'length. Примером может быть:

type my_array is array (natural range <>) of integer range 0 to 255;

function maximum(a : my_array) return integer;

attribute max : integer;
attribute max of my_array : type is maximum(???); -- is there a way to make the argument generic?

signal data : my_array;
largest_element <= data'max;

До сих пор мне удавалось прикрепить атрибут только к определенному объекту c, например:

signal data : my_array;

attribute max : integer;
attribute max of data : signal is maximum(data);

Можно ли сделать его общим c для определенного c типа (например, предопределенных атрибутов), или это ограничение VHDL?

Конечно, я мог бы просто сделать это:

largest_element <= maximum(data); 

Но, как я уже сказал, это обучающее упражнение.

...