Главная страница  Автономные управляющие системы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40

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

Пример

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 t q> : data store;

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

SUBTYPE NATURAL IS INTEGER RANGE 0 TO hlghast integer;

SUBTYPE POSITIVE IS INTEGER RANGE 1 TO highest integer;

4.4. ОПЕРАТОРЫ VHDL

4.4.1. Основы синтаксиса

Исходный текст программы на языке VHDL состоит из последовательностей операторов, записанных с учетом следующих правил.

♦ каждый оператор - это последовательность слов, содержащих буквы английского алфавита, цифры и знаки пунктуации,

♦ слова разделяются произвольным количеством пробелов, табуляций и переводов строки,

♦ операторы разделяются символами

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

Комментарии могут быть включены в текст программы с помощью двух подряд идущих символов - . После появления этих символов весь текст до конца строки считается комментарием

Для указания системы счисления для констант могут быть применены спецификаторы:

В - двоичная система счисления, например В-ОО! 1 ,

О - восьмеричная система счисления, например О 3760 ;

Н - шестнадцатеричная система счисления, например H F6A0 .

4.4.2. Объекты

Объекты являются контейнерами для хранения различных значений в рамках модели Идентификаторы объектов могут содержать буквы, цифры и знаки подчеркивания Идентификаторы должны начинаться с буквы, не должны заканчиваться знаком подчеркивания, и знаки подчеркивания не могут идти подряд Прописные и строчные буквы в VHDL не различаются Все объекты должны быть явно объявлены перед использованием, за исключением переменной цикла в операторе for, которая объявляется по умолчанию

Каждый объект характеризуется типом и классом Типы разделяются на предопределенные в языке VHDL и определяемые пользователем Тип показывает, какого рода данные может содержать объект Класс показывает, что можно сделать с данными, содержащимися в объекте. В языке VHDL определены следующие классы объектов.

♦ Constant - константы. Значение константы определяется при ее объявлении и не может быть изменено Константы могут иметь любой из поддерживаемых типов данных

♦ Variable - переменные. Значение, хранимое в переменной, меняется везде, где встречается присваивание данной переменной. Переменные могут иметь любой из поддерживаемых типов данных

♦ Signal - сигналы. Сигналы представляют значения, передаваемые по проводам и определяемые присвоением сигналов (отличным от присвоения переменных). Сигналы могут иметь ограниченный набор типов (обычно bit, bit vector, stdjogic, std logic vector, integer, и, возможно, другие, в зависимости от среды разработки). Повторное использование присваивания сигналов в наборе параллельных операторов не допускается. В наборе последовательных операторов такое присваивание допустимо и даст значение сигнала, соответствующее последнему по порядку присваиванию Синтаксис объявления объектов

Constant ( name [, name] ) : Type [ ( index range [ , index range ] ) ] := initial value;

Variable ( name [, name] ) : Type [ ( index range [ , index range ])][:= initial value ] ;

Signal ( name [, name] ) : Type [ ( index range ) ];

Диапазон значений индексов задается в виде int value to int val-ие или int value downto int value

4.4.3. Атрибуты

Атрибуты (или иначе свойства) определяют характеристики объектов, к которым они относятся Стандарт VHDL предусматривает как предопределенные, так и определяемые пользователем атрибуты, однако современные инструментальные средства в большинстве своем поддерживают только предопределенные атрибуты Для обращения к атрибутам объекта используется символ (напримерЛГ;еЛ)

В VHDL определены следующие атрибуты

left - левая граница диапазона индексов массива,

right - правая граница диапазона индексов массива,

low - нижняя граница диапазона индексов массива,

high - верхняя граница диапазона индексов массива,

range - диапазон индексов массива,

reverserange - обращенный диапазон индексов массива,

length - ширина диапазона индексов массива

4.4.4. Компоненты

Объявление компонента определяет интерфейс к модели на VHDL (entity и arc/iitectore), описанной в другом файле Обычно объявление компонента совпадает с соответствующим объявлением entity Они могут различаться только значениями по умолчанию Эти значения используются, когда какой-либо из выводов компонента остается не присоединенным (ключевое слово орел) при установке компонента в схему

Оператор объявления компонента может находиться внутри объявления architecture или в заголовке пакета (package) Соответствующие компоненту объявления entity и architecture не обязательно должны существовать в момент анализа схемы В момент моделирования или синтеза должны существовать объявления entity и architecture для компонентов, которые не только объявлены, но и установлены в схему Это позволяет, например, конструктору задать объявления библиотечных элементов, а реальное их описание (объявления entity и architecture) задавать по мере использования этих элементов в конструкции.

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

Component name [ port( port list ); ]

end component;



4.4.5. Выражения

Выражения могут содержать следующие операторы: преобразование типа, and, or, nand, nor, xor, =, /=, <, <=, >, >=, +, -, &, *, /, mod, rem, abs, not.

В зависимости от избранной САПР при синтезе может поддерживаться подмножество приведенных выше операторов. Порядок вычисления выражений определяется приоритетом операторов:

and, or, nand, nor, xor - самый низкий приоритет

=. /= <, <=. >. >=

+, -, & (бинарные)

+, - (унарные)

,/,mod,rem

abs, not - высший приоритет

Операторы с более высоким приоритетом выполняются раньше Чтобы изменить такой порядок используются скобки

При моделировании (но не при синтезе) схемы возможно также описание формы сигнала в виде выражения. Записывается оно следующим образом

Vlhen others End case;

=> sequence of etatements;

Оператор casa подобно оператору If задает ветвление алгоритма Значения в списках разделяются символом °. Когда значение выражения встречается в одном из списков значений, выполняется соответствующая последовательность операторов Если значение выражения не присутствует ни в одном из списков, то выполняется список операторов, соответствующий ветви whan othars.

[ loopjabel: ]

for loop Jndexyanable In range loop sequence of statements and loop [ loopjabel ];

Оператор цикла позволяет многократно выполнить последовательность операторов. Диапазон значений задается в виде valuel to value2 или valuel downto value2. Переменная цикла последовательно принимает значения из заданного диапазона. Количество итераций равно количеству значений в диапазоне.

Value expression [ after time expression ]

( , value expresslon [ after time expression ]

4.4.6. Операторы

С помощью операторов описывается алгоритм, определяющий функционирование схемы. Они могут находиться в теле функции, процедуры или процесса.

Wertontf/cond/tion;

Приостанавливает выполнение процесса, содержащего данный оператор до момента выполнения условия.

Signal <= expression

Оператор присваивания сигнала устанавливает его значение равным выражению справа

Variable ;= expression

Оператор присваивания устанавливает значение переменной равным выражению справа.

Return expression;

Этот оператор возвращает значение из функции Null

Пустой оператор, не выполняет никаких действий. 4.5. ИНТЕРФЕЙС И ТЕЛО ОБЪЕКТА

Полное VHDL-описание об-ьекта состоит как минимум из двух отдельных описаний описание интерфейса объекта и описание тела объекта (описание архитектуры).

Интерфейс описывается в объявлении объекта entity declaration и определяет входы и выходы объекта, его входные и выходные порты ports и параметры настройки generic. Параметры настройки отражают тот факт, что некоторые объекты могут иметь управляющие входы, с помощью которых может производиться настройка объектов, в частности задаваться время задержки

Например, у объекта Q1 три входных порта XI, Х2, ХЗ и два выхода У1, У2 Описание его интерфейса на VHDL имеет вид

Procedure name {parameter {, parameter}) Оператор вызова процедуры состоит из имени процедуры и списка фактических параметров

Entity Q1 is

Port (XI, Х2, ХЗ: in real; Yl, Y2: out real); End Ql.

If condition then

Seq;uence of statements ( Elsif condition then

Sequence of stateiMnts ) [ else

sequence of statements J end if ;

Оператор If используется для ветвления алгоритма по различным условиям.

Case expression is

When choices list => sequence of stBteiaents;

( nhen choices list => sequence of stateiiients; }

Порты объекта характеризуются направлением потока информации Они могут быть:

♦ входными (ш);

♦ выходными (out);

♦ двунаправленными (inout),

♦ двунаправленными буферными (buffer);

♦ связными (linkage).

А также имеют тип, характеризующий значения поступающих на них сигналов:

♦ целый (integer),

♦ вещественный (real);

♦ битовый (bit);

♦ символьный (character)



Тело объекта специфицирует его структуру или поведение. Его описание по терминологии VHDL содержится в описании его архитектуры architecture.

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

Средства VHDL для отображения структур цифровых систем базируются на представлении о том, что описываемый объект entity представляет собой структуру из компонент component, соединяемых друг с другом линиями связи. Каждая компонента, в свою очередь, является объектом и может состоять из компонент низшего уровня (иерархия объектов) Взаимодействуют объекты путем передачи сигналов signa! по линиям связи Линии связи подключаются к входным и выходным портам компонент В VHDL сигналы отождествляются с линиями связи

Имена сигналов и имена линий связи совпадают (они отождествляются) Для сигналов (линий), связывающих компоненты друг с другом, необходимо указывать индивидуальные имена

Описание структуры объекта строится как описание связей конкретных компонент, каждая из которых имеет имя, тип и карты портов Карта портов port map определяет соответствие портов компонент поступающим на них сигналам, можно интерпретировать карту портов как разъем, на который приходят сигналы и в который вставляется объект-компонента

Принятая в VHDL форма описания связей конкретных компонент имеет следующий вид

Имя. тип связи (сигнал, порт).

Например, описание связей объекта 01, представленного на рис 3, выглядит следующим образом

К1 SM port map (XI, Х2, S),

КЗ. М port map (S, Yl),

К2: SM port map (S, X3, Y2),

Здесь K1, K2, КЗ - имена компонент, SM, М - типы компонент, Х1, Х2, ХЗ, S, Y1 ,Y2 - имена сигналов, связанных с портами

Полное VHDL описание архитектуры STRUCTURA объекта 01 имеет вид

Architecture STRUCTURA of Ql le

Component SM port (A, В m real; C. out real),

End component;

Component M port (E: in real, D: out real); End component, Signal S. real; Begin

Kl. SM port map (XI, X2, S), КЗ M port map (S, Yl), K2: SM port map (S, X3, Y2), End STRUCTURA;

Средства VHDL для отображения поведения описываемых архитектур строятся на представлении их как совокупности параллельно взаимодействующих процессов Понятие процесса process относится к базовым понятиям языка VHDL

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

Процессы взаимодействуют путем обмена сигналами

В общем случав в поведенческом описании состав процессов не обязательно соответствует составу компонент, как это имеет место в структурном описании

Поведение VHDL- объектов воспроизводится на ЭВМ, и приходится учитывать особенности воспроизведения параллельных процессов на однопроцессорной ЭВМ Особая роль в синхронизации процессов отводится механизму событийного воспроизведения модельного времени now.

Когда процесс вырабатывает новое значение сигнала перед его посылкой на линию связи, говорят, что он вырабатывает будущее сообщение transaction С каждой линией связи (сигналом) может быть связано множество будущих сообщений. Множество сообщений для сигнала называется его драйвером driver

Таким образом, драйвер сигнала - это множество пар время -значение (множество планируемых событий)

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

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

В случав дельта-задержек новый цикл моделирования не связан с увеличением модельного времени В приведенном выше примере новое значение сигнала У1 вырабатывается через дельта-задержку после изменения сигнала S

Другая способность VHDL- процессов связана с так называемыми разрешенными resoived сигналами Если несколько процессов изменяют один и тот же сигнал, (сигнал имеет несколько драйверов), в описании объектов может указываться функция разрешения Эта функция объединяет значения из разных драйверов и вырабатывает одно Это позволяет, например, учесть особенности работы нескольких элементов на общую шину

В языке VHDL для наиболее час+о используемых видов процессов - процессов межрегистровых передач - введена компактная форма записи

Полное описание архитектуры POVEDENIE объекта 01 в этом случае имеет следующий вид

Architecture POVEDENIE of Ql is

Signal S. real,

Begin

Y1<=S;

Y2<=S+X3 after 10 ns; S<=X3+X2 after 10 ns. End POVEDENIE,



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40

© 2000 - 2021 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.