Язык AHDL

       

Оператор Define


Оператор Define позволяет определить оценочную функцию (evaluated function), представляющую собой математическую функцию,  возращающую значение, вычисленное на основе необязательных входных аргументов.

В следующем примере описывается оценочная функция MAX, предопределяющая существование по меньшей мере одного порта в разделе Subdesign:

DEFINE MAX(a,b) = (a > b) ? a : b;

SUBDESIGN

(

   dataa[MAX(WIDTH,0)..0]: INPUT;

   datab[MAX(WIDTH,0)..0]: OUTPUT;

)

BEGIN

   datab[] = dataa[];

END;

Оператор Define имеет следующие характеристики:

¨    Оператор Define начинается с ключевого слова DEFINE, за  которым следует символическое имя и список из одного или более аргументов, заключенных в круглые скобки.

¨    Аргументы отделяются друг от друга запятыми. Символ (=) отделяет список аргументов от арифметического выражения

Þ   При отсутствии аргументов оценочная функция эквивалентна константе.

Þ   Компилятор производит вычисления арифметических выражений приведенных в операторе Define и упрощает их до числовых значений. Генерации логических схем при этом не производится.

¨    Оператор заканчивается символом (;).

¨    Один раз определенная оценочная функция может использоваться затем в пределах всего текстового файла проекта (TDF).

¨    Для определения оценочных функций могут использоваться ранее определенные оценочные функции. Например, приведенная ниже оценочная функция MIN_ARRAY_BOUND вычисляется на основе значения оценочной функции MAX:

DEFINE MAX(a,b) = (a > b) ? a : b;

DEFINE MIN_ARRAY_BOUND(x) = MAX(0, x) + 1;

При использовании оператора Define необходимо соблюдать следующие правила:

¨    Оценочная функция может быть использована только после того как она была определена.

¨    Имена оценочных функций должны быть уникальными.

¨    Имена оценочных функций не должны содержать пробелов. Для разделения слов в имени оценочной функции и улучшения ее восприятия следует пользоваться символом подчеркивания.

¨    Оператор Define может использоваться произвольное количество раз в рамках одного текстового файла проекта.

¨    Oператор Define должен быть расположен за пределами других разделов  языка AHDL.



Содержание раздела