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

2.5 Создание иерархического проекта

Устройства, описанные на языке AHDL(файлы с расширением.tdf) могут быть связаны другими файлами для создания иерархического проекта. Файлы нижнего уровня иерархии на более высоких уровнях будут использоваться как функции, описанные пользователем.

Всю информации по созданию иерархических проектов можно разбить на следующие разделы:

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

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

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

  • Экспорт и импорт графов переходов автоматов

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

В состав MAX+PLUS II входят библиотеки, содержащие множество примитивов и макрофункций, которые не могут быть параметризированы. Все логические функции, входящие в состав библиотек, поставляемых с MAX+PLUS II, могут быть использованы для создания иерархических проектов. При установке САПР библиотеки были скопированы в подкаталог\maxplus2\max2lib.

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

  • Объявление переменной функции (в разделе объявлений) и указание способа использования портов модуля (в логической секции)

  • Использование имени функции непосредственно в логической секции файла

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

В следующем примере (macro1.tdf) описывается четырехразрядный счетчик, выходы которого соединены с входами дешифратора 4/16 (4 входных линии – 16 выходных линий).

Данный пример содержит директиву «INCLUDE» для подключения прототипов функций4countи 16dmux к проекту. В разделе объявления переменных описаны две переменныеcounterтипа4countиdecoderтипа 16dmux. В логической секции описаны уравнения, присваивающие входным портам (аргументам) функций некоторые сигналы и сигналы, подаваемые на выход.

Впримере 2.31 показан ещё один способ использования не параметризированных модулейMAX+PLUS II. Устройство, спроектированное в этом примере, по функциям совпадает с устройством из примера 2.30.

Прототипы двух макрофункций, находящиеся в файлах 4count.inc и 16dmux.incимеют вид:

FUNCTION 4count (clk, clrn, setn, ldn, cin, dnup, d, c, b, a)

RETURNS (qd, qc, qb, qa, cout);

FUNCTION 16dmux (d, c, b, a)

RETURNS (q[15..0]);

Использование примитивов 4countи16dmux происходит в первом и во втором выражениях (раздела логических уравнений) соответственно. В первом уравнении используется метод позиционного указания аргументов, а во втором поименного. Комментарии показывают и другие способы определения портов функции.

При использовании позиционного способа указания аргументов функции (портов устройства) порядок указания аргументов важен, т.к. эти переменные будут поставлены в соответствие входам/выходам реального устройства в том порядке, в котором они указаны. При использовании именного способа указания аргументов порядок не важен, т.к. в этом случае указывается имя порта устройства.

Ключевое словоRETURNSиспользуется ля указания подмножества значений, возвращаемых функцией (см. пример 2.31).

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