Я расширял свои знания 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);
Но, как я уже сказал, это обучающее упражнение.