Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс.DOC
Скачиваний:
25
Добавлен:
16.04.2019
Размер:
1.48 Mб
Скачать

8.10.5. Проблемно составляющая языка

Проблемно-ориентированная составляющая языка позволяет реализовать определенные выше свойства описываемых в языке систем.Все введенные в языке средства для этой цели оказываются серьезно связанными между собой. Как уже указывалось, к проблемно ориентированным средствам необходимо отнести: средства для описания структурного со- единения параллельно работающих компонент, средства для описания поведения во време ни параллельно работающих компонент и, наконец, средства для связи параллельно-после довательно работающих компонент, Набор средств, призванных решить эти задачи опира ется на набор параллельных операторов языка, исполнение которых тесно связано с поня тием сигнала и со связанными с ним атрибутами, а также с понятием времени.

Параллельные операторы определяют параллельное (во времени) поведение проекта,

и порядок их выполнения не связан с порядком их появления внутри архитектурного тела

данного иерархического уровня. К параллельным операторам этого типа принадлежат:

• оператор процесса (Process Statement);

• оператор блока (Block Statement);

• оператор условного назначения сигнала (Condition Signal Assignment Statement);

• оператор выборочного назначения сигнала (Selected Signal Assignment Statement);

• оператор параллельного вызова процедуры (Procedure Call Statement);

• оператор параллельного сообщения (Assert Statement);

При создании структуры соединений объектов используются два параллельных оператора — оператор конкретизации (создания экземпляра) компонента (Component Instantiation Statement) и оператор генерации. Альтернативным вариантом задания компонент и их соединений между собой является понятие блока.

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

8.10.6. Структурное описание

Для структурной организации проекта используется ряд операторов языка. Прежде всего сама структура описания тела модуля проекта предполагает возможность (при структурном варианте описания) объявления в декларативной части компонентов, из которых будет собран модуль, и сигналов, при помощи которых отдельные компоненты будут соединяться друг с другом. А в исполняемой части архитектурного тела модуля проекта нужно использовать операторы, конкретизирующие объединение компонент между собой и их связь с остальными операторами архитектурного тела. Сигналы в таком случае ис- пользуются в двух качествах: с одной стороны, имена сигналов отождествляются с именами цепей, соединяющих порты (контакты) отдельных компонентов между собой, а с другой стороны, те же самые имена сигналов используются уже по прямому назначению (как воз- действия, передаваемые в поведенческий модуль).

Определение тела объекта (модуля проекта)

<Architecture_Declaration>::=

ARCHITECTURE<имя_архитектуры_объекта>OF<имя_объекта>IS

—объявление конфигурации

— объявление глобальных переменных и констант

— объявление функции и подпрограмм

—объявление сигналов

[{SIGNAL<Список_имён>:<тип>;}]

—объявление компонент

[{COMPONENT<имя_типа_компонента>

[GENERIC(<параметры_настройки>);]

[PORT(<имя_имен_входов>:IN<тип>);

<список_имен_выходов>: OUT<тип>;]

END COMPONENT;}]

BEGIN

—описание структурного соединения

[{<имя_компонента>:< имя_типа_компонента>

[GENERIC МАР (<список_настроек>;]

РОRT МАР (<список сигналов>);]

— описание поведения

[<параллельные_операторы>]

END [<имя_архитектуры_объекта>];

При описании структуры соединения компонентов между собой в определении архитек- турного тела может быть использован параллельный оператор конкретизации компонента.

Оператор конкретизации компонента

Определение оператора.

<Component_Instantiation_Statement>::=

<имя_компонента>: <имя_типа компонента>

[GENERIC МАР(<параметры_настройки>)]

[PORT МАР(<параметры соединения>)];

Оператор позволяет использовать один и тот же тип компонента несколько раз, используя при создании очередного экземпляра компонента уникальные имена и конкретизируя связи одноименных входов. Соответствие входных и выходных портов может осуществляться как обычным позиционным соответствием формальных и фактических параметров, так и путем использования символа ключевого соответствия (=>).

Альтернативным вариантом разбиения проекта на отдельные структурные элементы (декомпозицию проекта) является использование оператора блока.

Оператор-блок (Block Statement)

Определение.

< Block_Statement>::=

<метка_блока>: ВLОСК [(<охранное_выражениение>)]

[GENERIC (<список_парметров_настройки>);]

[GENERIC МАР (<список_настроек>);]

РОRТ (<список_выводов>);

РОRТ МАР (<список_соединений>);

<декларации_блока>;

BEGIN

<параллельные_операторы>

END BLOCK <метка_блока>;

Блок является подмодулем, который может использоваться внутри архитектурного тела. Блок является элементом (единицей) модульного описания структуры со своим собствен ным интерфейсом и функционированием. Для этого блок имеет раздел описания и раздел исполняемых операторов. Блоки могут быть иерархически вложены. Оператор блока по- зволяет записывать структуру и поведение модулей системы одновременно и соответ ственно более компактно.

В разделе деклараций блока могут размещаться: декларации подпрограмм; тела под- программ; типы, подтипы; декларации констант; константы; декларации атрибутов; специ фикации атрибутов; альтернативные точки входа; сигналы. Использование конструкции «охранное выражение» позволяет блокировать выполнение охраняемых (сопровождаемых опцией GUARDED) параллельных операторов назначения сигналов в теле блока.

Еще одним средством, позволяющим создавать компактную запись структуры описы- ваемой сиётемы, является оператор генерации.

Оператор генерации (Generate Statement)

Описание оператора.

<Generate_Statement>::=<метка>: FOR<параметр>IN<диапазон>GENERATE

| IF<условие> GENERATE

<параллельные операторы>

END GENERATE[<метка>]

Оператор генерации является удобным механизмом для описания объединения компонентов в регулярных структурах. Наличие вариантов FOR и IF упрощает создание структур с некоторыми вариациями начальных и конечных компонентов. Несмотря на внешнее сходство с последовательными операторами FOR и IF, следует учитывать специфику этого оператора: только параллельные операторы могут использоваться внутри параллельного оператора генерации.