Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_ПКИМС_ПЛИС.doc
Скачиваний:
35
Добавлен:
05.06.2015
Размер:
1.85 Mб
Скачать

1.1. Прототип модуля

Язык AHDL позволяет при описании модуля использовать в качестве его компонентов созданные ранее модули. Для этого текстовое описание модуля верхнего уровня иерархии должно содержать описание прототипов этих модулей.

Прототип задается с помощью оператора Function Prototype Statement, который может быть расположен либо непосредственно в текстовом описании, либо в файле включения (Include File) содержимое которого подсоединяется к текстовому описанию на этапе компиляции.

Файл включения (Include File) с описанием прототипа модуля создается с помощью команды Create Default Include File (меню File) выполняемой в окне текстового редактора пакета MAX+PLUSII и содержащего описание модуля.

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

  • непосредственное обращение (In_Line Reference);

  • присвоение прототипу символического имени, т.е. объявление его переменной, и обращение к нему как к переменной.

Отметим, что указанные способы обращения к прототипу совпадают со способами обращения к примитиву.

1.2. Структура иерархического проекта

Язык позволяет создавать иерархическое описание модуля, в котором выделяются:

  • модуль нижнего уровня (либо нескольких нижних уровней);

  • модуль верхнего уровня иерархии.

В языке AHDL определены два типа модулей:

  • параметризованные(Parameterized);

  • непараметризованные (Unparameterized).

1.3. Иерархическое описание накапливающего сумматора.

Рассмотрим пример иерархического описания накапливающего сумматора. Схема сумматора приведена на рис. 1.3.1.

Rg_a

OUT[8..1]

D[8..1]

CLC

R

Add

A[8..1]

B[9..1]

Rg_out

OUT[9..1]

D[9..1]

CLC

R

Рис. 1.3.1. Схема накапливающего сумматора.

Как видно из рисунка 1.3.1. накапливающий сумматор состоит из входного регистра Rg_a, собственно сумматора Add и выходного регистра Rg_out, в котором собственно и накапливается сумма входных чисел. Сумматор имеет вход сброса накопленной суммы R. На каждом такте своей работы накапливающий сумматор записывает в регистр Rg_a входное число а в регистр Rg_out – накопленную сумму предыдущих чисел. Модуль Add формирует сумму текущего слагаемого с ранее накопленной суммой чисел.

Структурно описание накапливающего сумматора включает следующие файлы.

Файл входного регистра Rg_a.tdf, содержащий следующее текстовое описание:

SUBDESIGN RG_A

(D[8..1],CLK,Reset:INPUT = GND;

OUT[8..1] : OUTPUT;)

Variable tr[8..1] : dff;

BEGIN

TR[].(CLK,CLRn) = (CLK,!Reset);

TR[].D = D[];

OUT[] = TR[].Q;

END;

Модуль имеет входную шину данных D[8..1], тактовый вход CLK и вход сброса Reset. Выходные данные выводятся на шину OUT[8..1]. Запись информации в регистр осуществляется по положительному фронту сигнала CLK.

Регистр реализован на базе стандартных примитивов DFF.

Файл двоичного сумматора Add.tdf, содержащий следующее текстовое описание:

SUBDESIGN ADD

(A[8..1],B[9..1]:INPUT;

OUT[9..1] : OUTPUT;)

BEGIN

OUT[] = B[]+(GND,A[]);

END;

Модуль имеет входные шины данных A[8..1], и B[9..1]. Сумма формируется на выходной шине OUT[9..1]. При описании функционирования сумматора на языке AHDL используется знак арифметической операции «+». По этому знаку происходит автоматическое формирование необходимой схемы сумматора. Для выравнивания числа разрядов слагаемых во временную группу (GND,A[]), добавлен нулевой старший разряд.

Файл входного регистра Rg_out.tdf, содержащий следующее текстовое описание:

SUBDESIGN RG_OUT

(D[9..1],CLK,Reset:INPUT = GND;

OUT[9..1] : OUTPUT;)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]