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

3.9 Порты

Портом в MAX+PLUS IIназывается вход или выход логической функции. С описанием порта вы можете встретиться в двух случаях:

  1. При описании входов или выходов проекта

  2. При использовании входов/выходов примитивов в логической секции

3.9.1 Порты файла

Порты, являющиеся входами/выходами текущего файла проекта, описываются в разделе «определения устройства» в следующем виде:

<имя порта>:<тип порта>[=<значение «по умолчанию»>]

Существуют следующие типы портов:

INPUT MACHINE INPUT

OUTPUT MACHINE OUTPUT

BIDIR

В том случае, когда текущий файл является верхним файлов в иерархии, имена портов совпадают с именами контактов ПЛИС. Значение «по умолчанию» (VCC или GND) могут присваиваться портам, имеющим типINPUTили BIDIR. Это значение будет использоваться только в том случае, когда порту не было присвоено никакого значения.

В следующем примере показан способ описания портов:

SUBDESIGN top

(

foo, bar, clk1, clk2, c[4..0][6..0] : INPUT = VCC;

a0, a1, a2, a3 : OUTPUT;

b[7..0] : BIDIR;

)

Вы можете осуществлять импорт и экспорт графов переходов при помощи портов типа MACHINE INPUTи MACHINE OUTPUT.

Входы/выходы типаMACHINE INPUT илиMACHINE OUTPUTне могут использоваться в файле верхнего уровня проекта.

3.9.2 Использование портов

В следующем примере будет показан один из способов соединения портов с переменной:

VARIABLE

reg : DFF;

BEGIN

reg.clk = clock;

reg.d = data_input;

output = reg.q;

END;

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

<имя примитива>.<имя порта>=<имя узла>, где

<имя примитива> – имя, определенное пользователем для примитива

<имя порта> ­– имя входа/выхода примитива

Кроме вышеизложенного способа соединения порта с переменной существует еще 2способа:

FUNCTION 21mux (s, a, b)

RETURNS (y);

.

.

.

BEGIN

output = 21mux (.s=select, .b = dataB, .a = dataA);

END;

В данном примере узлы output,select, dataB иdataAсоединяются соответственно с портамиy, s, b, a.В этом примере выражение, соединяющее порт и переменную может быть записано в общем виде так:

.<имя порта>=<имя узла>

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

Третий способ относится к разряду поименных. Рассмотрим пример:

BEGIN

Output = 21mux(select, dataA, dataB);

END;

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

В таблице 3.9 приведены имена портов стандартных примитивов:

Таблица 3.9 Имена портов стандартных примитивов

Имя порта

Описание

.q

Выход триггера или защелки

.d

Информационный вход D-триггера или защелки

.t

Вход T-триггера

.j

JвходJK-триггера

.k

KвходJK-триггера

.s

Вход установки RS-триггера

.r

Вход сброса RS-триггера

.clk

Синхровход

.ena

Вход сигнала разрешения синхронизации

.prn

Инверсный сигнал установки триггера

.clrn

Инверсный сигнал сброса триггера

.reset

Сигнал сброса для графа перехода

.oe

Порт сигнала разрешения выдачи

.in

Вход примитива

.out

Выход примитива

Для получения более подробной информации см. следующие разделы:

  • Имена в AHDL, использование кавычек

  • “Port Syntax” помощи по MAX+PLUS II

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