Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Altera / MAX+PLUS II - AHDL.doc
Скачиваний:
138
Добавлен:
10.12.2013
Размер:
7.02 Mб
Скачать

2.5.2 Использование параметризированных функций

MAX+PLUS IIсодержит множество параметризированных мегафункций и библиотеку параметризированных модулей (LPM – Library of Parameterized Modules). Так, например, параметры могут быть использованы для указания ширины входной шины элемента «И» и т.д. Параметризированные функции могут включать в себя другие модули, которые могут быть как параметризированными, так и не параметризированными. При установкеMAX+PLUS IIбиблиотеки мега- и макрофункций были скопированы в подкаталог\maxplus2\max2lib.

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

  • Описание переменной типа параметризированной функции должно содержать ключевое слово WITH,за которым следует определение значений параметров.

  • Необходимо убедится в том, что всем обязательным портам назначены необходимые значения

Входы и выходы вашей макро- и мега-функции должны быть объявлены в разделе объявления прототипов функций (Function Prototype Statement). Прототипы стандартных мега- и макрофункций находятся в подкаталогах\maxplus2\max2lib\mega_lmp и\maxplus2\max2inc соответственно. С помощью директивы «INCLUDE» вы можете подключать примитивы к своему проекту.

Далее будет показан способ использования параметризированных функций на примере создания 8-битного сумматора.

Прототип функции lpm_add_sub, находящийся в файлеlpm_add_sub.inc имеет вид:

FUNCTION lpm_add_sub (cin, dataa[LPM_WIDTH-

1..0], datab[LPM_WIDTH-1..0], add_sub, clock, aclr)

WITH (LPM_WIDTH, LPM_REPRESENTATION, LPM_DIRECTION,

LPM_PIPELINE, ONE_INPUT_IS_CONSTANT)

RETURNS (result[LPM_WIDTH-1..0], cout, overflow);

Впримере 2.33 будет спроектировано то же устройство, что и в примере 2.32, но при этом будет использован другой способ объявления параметризированной функции.

2.5.3 Создание и использование макрофункций

На языке AHDL вы можете создавать, а затем использовать собственные мега- и макрофункции.

После того как вы описали свою функцию необходимо выполнить несколько операций, для того чтобы её можно было использовать в других файлах проекта:

  1. Скомпилируйте и протестируйте работу функции

  2. Если вы планируете использовать какую-либо функцию в нескольких проектах, то вам необходимо будет добавить путь к файлу, в котором описана функция, к списку пользовательских библиотек с помощью команды User Libraries(менюOptions). Если вы намерены использовать данную функцию только в текущем проекте, то сохраните её в том же каталоге что и проект.

  3. В текстовом редакторе необходимо будет создать файл, содержащий прототип функции, и символьный файл, необходимый для использования функции в графическом редакторе. Для этого:

    1. Для создания файла, содержащего прототип функции (файл с расширением .inc) необходимо выполнить командуCreate Default Include File (менюFile). После создания такого файла вы можете использовать описанную функцию в файлах проекта более высокого уровня при помощи директивы «INCLUDE»

    2. Для создания символьного файла, необходимого для использования функции в графическом редакторе, выполните команду Create Default Symbol (менюFile)

После того как вы выполните вышеуказанные операции, станет возможным использование описанной функции в любых файлах текущего и других проектов.

Соседние файлы в папке Altera