Изучение VHDL

       

Атрибуты пользователя.


Эти атрибуты предназначены для присваивания объектам языка дополнительных свойств, не предусмотренных встроенными типами и атрибутами. При проектировании дискретных устройств такими свойствами могут быть способ кодирования состояний автомата, указания компилятору – синтезатору по управлению оптимизацией, размещению блоков, их исполнению, назначение портов номерам выводов, начальное состояние схем памяти и т.п. Т.е. эти свойства не связаны напрямую с алгоритмом, реализуемым в программе. Задание атрибута состоит из его объявления и спецификации.

Объявление атрибута имеет синтаксис, похожий на объявление переменной:

\объявление атрибута\::=atribute \идентификатор\ : \ тип\   

где \тип\ - любой ранее определенный тип, например, string, positive, time.

Спецификация атрибута имеет синтаксис:

\спецификация атрибута\::=attribute \идентификатор\ of 

\имя объекта\[{,\имя объекта\}] | others | all :  \класс объекта\ is \выражение\

\имя объекта\::= ((\идентификатор\ |\символьный литерал\ | \символ оператора\)

                     [\сигнатура\])

\класс объекта\::= entity   | architecture | configuration | package | procedure   | function         | type             |   subtype | constant      | signal             | variable           file         | component  | label          | literal          | units                group

Здесь \идентификатор\ - имя атрибута, объявленнного ранее, \имя объекта\ - имя объекта, которому присоединен атрибут.  \сигнатура\ - это  список типов параметров, если объектом является процедура, функция или перечисляемый литерал, предназначенный для идентификации перезагружаемых процедур, функций и литералов.

Спецификация атрибута обычно вставляется сразу же после объявления этого атрибута.

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

type \состояние\ is ( \сброс\,\начало\,\работа\,\конец\);

attribute enum_encoding : string;

attribute enum_encoding of \состояние\ : type is "000  001  010  100" ;



Содержание раздела