Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. RASH Использование отражений для остановки ВД
  2. Активное использование проектных и исследовательских технологий в образовательном процессе.
  3. АНАЛИЗ С ИСПОЛЬЗОВАНИЕМ ФИНАНСОВЫХ КОЭФФИЦИЕНТОВ
  4. АНАЛИЗ ЧУВСТВИТЕЛЬНОСТИ ПРОЕКТА С ИСПОЛЬЗОВАНИЕМ ЭЛЕКТРОННЫХ ТАБЛИЦ
  5. В макияже акценты одновременно на глаза и губы, в косметике использование насыщенных цветов.
  6. Виды продукции с использованием изображений большого формата
  7. Визуализация сложных логических функций

MAX+PLUS II содержит параметрические мегафункции, а также функции библиотеки параметрических модулей (LPM). Например, параметры используются для определения ширины порта или будет ли блок памяти RAM реализован как синхронный или асинхронный. Параметрические функции могут содержать другие подпроекты, которые в свою очередь могут быть параметрическими или непараметрическими. Параметры можно использовать с некоторыми макрофункциями, которые не являются параметрическими. (Примитивы не могут быть параметрическими). Все логические функции MAX+PLUS II можно использовать для создания иерархических проектов. Мега и макрофункции автоматически устанавливаются в подкаталоги каталога \maxplus2\max2lib, созданного во время инсталляции; логика примитивов встроена в язык AHDL.

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

 

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

· Так как параметрические функции не обязательно имеют начальные значения для не подсоединенных входов, Вы должны убедиться что все необходимые порты подсоединены. С другой стороны, примитивы и макрофункции всегда имеют начальные значения для не подсоединенных входов.

 

Файл lpm_add1.tdf, приведенный ниже, реализует 8-битный сумматор с помощью ссылки на параметрическую мегафункцию lpm_add_sub.

 

INCLUDE "lpm_add_sub.inc";

SUBDESIGN lpm_add1

(

a[8..1], b[8..1]: INPUT;

c[8..1]: OUTPUT;

carry_out: OUTPUT;

)

BEGIN

% Экземпляр мегафункции со связью порта по положению %

(c[], carry_out,) = lpm_add_sub(GND, a[], b[], GND,,)

WITH (LPM_WIDTH=8,

LPM_REPRESENTATION="unsigned");

%Эквивалентный экземпляр со связью по имени %

--(c[],carry_out,)= lpm_add_sub(.dataa[]=a[],.datab[]=b[],

--.cin=GND,.add_sub=GND)

-- WITH (LPM_WIDTH=8,

LPM_REPRESENTATION="unsigned");

END;

 

Прототип функции для lpm_add_sub приведен ниже:

 

FUNCTION lpm_add_sub(cin, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0], add_sub)

WITH (LPM_WIDTH, LPM_REPRESENTATION, LPM_DIRECTION, ADDERTYPE,

ONE_INPUT_IS_CONSTANT)

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

 

Здесь требуется только параметр LPM_WIDTH и экземпляр функции lpm_add_sub в файле lpm_add1.tdf определяет значения параметров только для LPM_WIDTH и LPM_REPRESENTATION.

Файл lpm_add2.tdf, приведенный ниже, идентичен с lpm_add1.tdf, но реализует 8-битный сумматор с помощью объявления Instance.

 

INCLUDE "lpm_add_sub.inc";

SUBDESIGN lpm_add2

(

a[8..1], b[8..1]: INPUT;

c[8..1]: OUTPUT;

carry_out: OUTPUT;

)

VARIABLE

8bitadder: lpm_add_sub WITH (LPM_WIDTH=8,

LPM_REPRESENTATION="unsigned");

BEGIN

8bitadder.cin = GND

8bitadder.dataa[] = a[]

8bitadder.datab[] = b[]

8bitadder.add_sub = GND

c[] = 8bitadder.result[]

carry_out = 8bitadder.cout

END;


Дата добавления: 2015-08-21; просмотров: 69 | Нарушение авторских прав


Читайте в этой же книге: Определение параметров (оператор Parameters) | Определение прототипов логических функций (оператор Function Prototype). | Определение порядка следования битов (оператор Options) | Объявление объектов (Instance Declarations) | Объявление конечных автоматов (State Machine Declarations) | Задание исходных значений (Defaults Statment) | Оператор проверки логического выражения (If Then.) | Использование ссылок на прототипы функций (In-Line Logic Function Reference) | Выполнение контроля выражений с помощью оператора Assert | Использование значений переменных по умолчанию |
<== предыдущая страница | следующая страница ==>
Использование непараметрических функций| Импорт и экспорт конечных автоматов

mybiblioteka.su - 2015-2024 год. (0.007 сек.)