Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование цифровых устройств на программир...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
949 Кб
Скачать
☆

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

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

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

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

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

  1. Непосредственное обращение (In_Line Reference)

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

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

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

  1. Параметризированные (Parameterized)

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

Рассмотрим вариант текстового описания модуля Top_level_module, представленного ниже:

В нем используется три компонента, каждый из которых является модулем более низкого уровня в иерархии описаний. Предположим, что для модулей Module_1 и Module_LPM созданы файлы включения:

Файл Module_1.inc

Файл Module_LPM.inc

Ниже представлено текстовое описание, в котором осуществляется непосредственное обращение к прототипам модулей

Прототипы модулей Module_1 и Module_LPM, содержащиеся в файлах включения, подсоединяются к данному текстовому описанию с помощью оператора Include. Прототип же модуля Module_2 задан непосредственно в текстовом описании.

В разделе Variable объявлены две переменные Int_A[8..1] и Int_D[8..1], являющиеся символическими именами шин, связывающих компоненты Module_1 и Module_LPM, Module_LPM и Module_2 соответственно.

Уравнение Int_A[ ]=Module_1(.CLK=CLK, .D[ ]=Din[ ]) иллюстрирует непосредственное обращение к прототипу модуля и сопоставление входов прототипа и передаваемых значений по именам. Возвращаемое значение, другими словами выходной сигнал компонента, присваивается внутренней переменной Int_A[ ].

В следующей строке текстового описания, в строке с комментариями, приведено уравнение, логически эквивалентное уравнению, рассмотренному выше. Однако в нем используется позиционное сопоставление входов прототипа и передаваемых значений.

Значение параметра WIDTH задается при непосредственном обращении к прототипу параметризированного модуля.

Рассмотрим теперь текстовое описание модуля Top_Level_Module в котором компоненты объявляются внутренними переменными.

В разделе переменных объявлены три переменные – символические имена модулей, используемых в данном текстовом описание как компоненты.

Отметим, что при объявлении переменной Var_Module_LPM, обозначающей параметризированный модуль, задано значение параметра WIDTH.

Лекция 19.12.12