Врезка 9
INCLUDE "4count"; INCLUDE "16dmux";
SUBDESIGN macro1 ( clk : INPUT; out[15..0] : OUTPUT; ) VARIABLE counter : 4count; decoder : 16dmux; BEGIN counter.clk = clk; counter.dnup = GND; decoder.(d,c,b,a) = counter.(qd,qc,qb,qa); out[15..0] = deckder.q[15..0]; END;
|
Вызов макрофункций 4count и 16dmux осуществляется в логической секции непосредственной ссылкой (в правой части булевых уравнений).
В файлах, написанных на AHDL, можно легко создавать и использовать пользовательские макрофункции, выполняя следующие действия:
создать логику для макрофункции в файле проекта;
определить порты макрофункции в объявлении прототипа функции.
Прототип функции даёт краткое описание функции: её имя, а также входные, выходные и двунаправленные порты. Можно также использовать машинные порты для макрофункций, которые импортируют или экспортируют цифровой автомат.
Объявление прототипов функций может быть размещено в Include-файле, который вызывается в пользовательском файле. Используя команду Create Default Include File, можно автоматически создавать Include-файл с прототипом функции для любого файла проекта.
вставить в файл пример макрофункции с помощью объявления примера в секции VARIABLE или с помощью непосредственной ссылки в тексте;
использовать макрофункцию в файле.
Для использования макрофункции её нужно либо включить в описание прототипа функции в TDF-файле, либо указать в директиве INCLUDE файла TDF имя Include-файла, содержащего прототип этой макрофункции.
Управление синтезом
Можно ограничить логический синтез с помощью замены переменных типа узел (NODE) примитивами SOFT и LCELL. Переменные NODE и примитивы LCELL обеспечивают наилучшее управление логическим синтезом. Примитивы SOFT обеспечивают более слабое управление логическим синтезом.
Переменные NODE, которые объявляются в секции VARIABLE, накладывают слабые ограничения на логический синтез. Во время синтеза модуль логического синтеза компилятора системы MAX+plusII заменяет каждый пример использования переменной NODE логикой, которую она представляет. Затем происходит минимизация логики до одной логиче-ской ячейки. Этот метод обычно приводит к ускорению работы схемы, но в результате может получиться слишком сложная логика или же её трудно свести к одной ячейке.
Буферы SOFT обеспечивают лучшее управление использованием ресурсов, чем переменные NODE. Модуль логического синтезатора выбирает, когда заменить примеры использования примитивов SOFT примитивами LCELL.
Буферы SOFT могут помочь уничтожить логику, которая оказалась слишком сложной, и сделать проект проще; однако при этом может быть увеличено число логических операций, и соответственно уменьшится быстродействие.
Наиболее сильное управление процессом логического синтеза обеспечивается примитивами LCELL. Модуль логического синтезатора минимизирует всю логику, которая запускает примитив LCELL, таким образом, чтобы можно было свести её к одной логической ячейке. Примитивы LCELL реализуются в виде одной логической ячейки (их нельзя убрать из проекта, даже если они имеют единственный вход). Если проект минимизирован до такой степени, что один примитив LCELL имеет единственный вход, в этом случае вместо примитивов LCELL можно использовать примитивы SOFT, которые убираются в процессе логического синтеза.
Следующее занятие будет посвящено примеру реализации алгоритмов фильтрации и демодуляции на ПЛИС.
