Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
по Суворову / методы / Лекции.doc
Скачиваний:
113
Добавлен:
31.05.2015
Размер:
1.92 Mб
Скачать

Пример:

Предположим, что разработчик желает создать сигнал A типа severity и что A может принимать значения только OKAY, NOTE и WARNING.

TYPE severity IS (OKAY, NOTE, WARNING, ERROR, FAILURE); SUBTYPE go_status IS severity RANGE OKAY TO WARNING; SIGNAL A: go_status;

Базовый тип и ограничение диапазона могут быть включены непосредственно в объявление объекта. Объявление сигнала A, эквивалентное приведенному выше, будет выглядеть следующим образом:

SIGNAL A: severity RANGE OKAY TO WARNING;

Другие примеры:

SUBTYPE pin_count IS INTEGER RANGE 0 TO 400; SUBTYPE digits IS character range '0' TO '9';

Подтипы, объявленные таким образом, могут также участвовать в описании ограниченных массивных типов (см. «Массивы»). Во-вторых, подтип может определить границы диапазона индексов для неограниченного (unconstrained) массивного типа. В этом случае объявление подтипа выглядит следующим образом: SUBTYPE имя_подтипа IS имя_базового_типа (диапазон_индексов [, диапазон_индексов] ); диапазон_индексов определяется следующим образом:

m TO n n DOWNTO m где m, n — целочисленные константы, m <= n.

Такое использование подтипа может быть удобно при наличии большого числа объектов некоторого типа с одинаковыми ограничениями на индексы.

Пример:

TYPE bit6_data IS ARRAY (POSITIVE RANGE <>) OF bit6; SUBTYPE data_store IS bit6_data (63 DOWNTO 0); SIGNAL A_reg, B_reg,C_reg: data_store; VARIABLE temp: data_store;

В языке имеются два предопределенных числовых подтипа natural и positive, которые определены как:

SUBTYPE NATURAL IS INTEGER RANGE 0 TO highest_integer; SUBTYPE POSITIVE IS INTEGER RANGE 1 TO highest_integer;

  1. Языки синтезируемого описания аппаратного обеспечения.

Общие сведения

Как известно, изначально язык описания аппаратуры VHDL создавался как средство моделирования цифровых систем. Однако его популярность и определенные удобства, появившиеся у разработчика, привели к тому, что модели на языке VHDL стали средством описания алгоритмов, синтезируемых специальными программными средствами в файлы прошивки (межсоединений) ПЛИС. В то же время для каждого программного продукта набор поддерживаемых конструкций языка различается, и порой довольно существенно. В настоящее время сделана попытка определить синтезируемое подмножество языка VHDL в стандарте IEEE P1076.6. Определяются те элементы языка, которые могли бы быть синтезированы средствами синтеза (компиляторами) на уровне регистровых передач (register transfer level). В этом случае средства синтеза (synthesis tools), удовлетворяющие стандарту IEEE P1076.6, могли бы обеспечить подлинную переносимость проекта и возможность единообразного описания. Рассмотрим элементы синтезируемого подмножества языка VHDL.

Переопределенные типы (redefined types)

Средства синтеза, которые соответствуют стандарту IEEE P1076.6, должны поддерживать следующие переопределенные типы:

 BIT, BOOLEAN и BIT_VECTOR в соответствии со стандартом IEEE Std 1076-1993;

 INTEGER в соответствии со стандартом IEEE Std 1076-1993;

 STD_ULOGIC, STD_ULOGIC_VECTOR, STD_LOGIC и STD_LOGIC_ в соответствии с пакетом (Package) STD_LOGIC_1164 (стандарт IEEE Std 1164-1993);

 SIGNED и UNSIGNED в соответствии с пакетом NUMERIC_BIT, являющимся частью стандарта IEEE Std 1076.3-1997;

 SIGNED и UNSIGNED в соответствии с пакетом (package) NUMERIC_STD, являющимся частью стандарта IEEE Std 1076.3-1997.

Кроме того, должна быть обеспечена поддержка средствами синтеза типов, определенных пользователем (user-defined types).