Перезагрузка процедур и функций.
В языке VHDL допускается определять несколько процедур и функций с одинаковыми названиями. При вызове функции или процедуры из числа функций или процедур с одинаковым названием выбирается такая, которая подходит по типам и числу входных и выходных параметров. Такая функция перезагружает (overloads) остальные функции. Перезагрузка процедур и функций удобна при вычислениях с различными типами. Например, над типами integer, real, подтипами signed, unsigned определены одни и те же арифметические функции, но имеющие различное сочетание типов аргументов и результатов.
Примером перезагрузки служит следующая функция, которая не входит ни в один стандартный пакет:
function "and"(x1,x2:bit) return boolean is
begin
return (x1 and x2) ='1';
end;
Если эта функция объявлена, то теперь транслятор не выдаст сообщения об ошибке при выполнении оператора if, вызывающего эту функцию:
variable a,b,c: bit;
…
if (a and b and c) then
…
end if;
так как выражение в скобках будет иметь правильный тип boolean.