Подставляемая ссылка для реализации логической функции представляет собой булевское выражение. Это быстрый способ для реализации логической функции, требующий лишь одну строку в разделе Logic и не требующий объявления переменной.
При необходимости реализации объекта мегафункции или макрофункции нужно убедиться, что логика ее функционирования описана в соответствующем файле проекта. Затем с помощью оператора Function Prototype декларируется прототип функции и далее реализуется объект функции посредством подставляемой ссылки или путем объявления объекта.
Для реализации объекта примитива также используется подставляемая ссылка или производится описание в разделе объявления объектов. Однако в отличие от мега - и макрофункций логика функционирования примитивов предопределена, то есть нет необходимости определять логику функционирования примитива в отдельном файле проекта. В большинстве случаев нет необходимости использовать оператор Function Prototype для определения прототипа функции.
Следующие примеры демонстрируют прототипы функций compare
и lpm_add _sub. Функция compare имеет входные порты a[3..0] и b[3..0], а также выходные порты less, equal, greater; функция lpm_add_sub имеет входные порты dataa[LPM_WIDTH-1..0], cin и add_sub, а также выходные порты result[LPM_WIDTH-1..0], cout и overflow.
FUNCTION compare (a[3..0], b[3..0])
RETURNS (less, equal, greater);
FUNCTION lpm_add_sub (cin, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0], add_sub)
WITH (LPM_WIDTH, LPM_REPRESENTATION)
RETURNS (result[LPM_WIDTH-1..0], cout, overflow);
Подставляемые ссылки (in-line logic function references) для функций compare и lpm_add_sub
указываются в правой части показанного ниже выражения:
(clockwise, , counterclockwise) = compare(position[], target[]);
sum[] = lpm_add_sub (.datab[] = b[], .dataa[] = a[])
WITH (LPM_WIDTH = 8)
RETURNS (.result[]);
Подставляемая ссылка для логической функции имеет следующие характеристики: