Signal _ name ' attribute _ name



Обратим особое внимание на атрибуты (delayed, stable, quiet, transaction), значениями которых являются сигналы. Эти атрибуты создают новые сигналы в модели.

Перечень предопределенных в языке VHDL атрибутов сигналов (где s — имя сигнала).

Название атрибута Описание
S'delayed(T) Сигнал, имеет то же значение, что и S, но задержанное на время  Т (если значение задержки не задано, то принимается дельта-задержка)
S'stable(T) Сигнал, имеет значение true, если в течение времени Т сигнал не изменялся
S'quiet(T) Сигнал, имеет значение true, если в течение времени Т к сигналу не было обращений
S ' transaction Сигнал типа bit , переключается из "0" в "1"  (или, наоборот) при каждом обращении к S
S ' event Принимает значение true, если в текущем цикле моделирования происходило изменение сигнала
S ' active Принимает значение true, если в текущем цикле моделирования есть обращение к этому сигналу
S ' last_event Интервал времени, прошедший с последнего изменения сигнала
S ' last_active Интервал времени, прошедший с последнего обращения к этому сигналу
S ' last_value Предыдущее значение сигнала

РАЗЛИЧИЕ МЕЖДУ СИГНАЛАМИ И ПЕРЕМЕННЫМИ ЯЗЫКА VHDL

Любой проект является описанием явлений в дискретных системах. Эти явления могут представляться тремя различными категориями данных: константы, переменные и сигналы. signal — это информация, передаваемая между модулями проекта или представляющая входные и выходные данные проектируемого устройства. Сигналу присваиваются свойства изменения во времени. variable — это вспомогательная информационная единица, используемая для описания внутренних операций в программных блоках. Присвоение значения сигналу отображается знаком <=, а переменной – знаком :=.

В языке VHDL введены два типа операторов — последовательные и параллельные.Последовательные операторы выполняются последовательно друг за другом в порядке записи (оператор присваивания переменной, оператор присваивания сигналу, условные операторы, оператор выбора и ряд других).

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

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

Наиболее существенные различия сигналов и переменных.

1. Переменные меняют значения сразу после присвоения, и новые значения непосредственно учитываются во всех преобразованиях, записанных в теле процесса после такого присвоения.

2. Значение сигнала меняется не сразу после выполнения присвоения. Передача значения сигналу может быть еще более задержана, если оператор присваивания содержит выражение задержки after.

3. Переменная определена только внутри тела процесса, сигнал — во всем архитектурном теле.

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


ОПЕРАТОР УСЛОВНОГО ПРИСВОЕНИЯ ЗНАЧЕНИЯ СИГНАЛУ НА ЯЗЫКЕ VHDL

Оператор условного присваивания имеет следующий синтаксис:

имя_сигнала <= [механизм задержки] {значение when условие else }

       значение [ when условие];

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

 

Пример 1

zmux: z<=d0 when sell='0' and sel0='0' else

         dl when sell-'0' and sel0='l' else

         d2 when sell='l' and sel0='0' else

         d3 when sell='l' and sel0='l';

Пример 2

zmux: process

         begin

if sell='0' and sel0='0' then z<=d0

elsif sell='0' and sel0='l' then z<=dl

elsif sell='l' and sel0='0' then z<=d2

elsif sell='1' and selO='l' then z<=d3

end if;

wait on d0,dl,d2,d3,sel0,sell;

end process zmux;

Во втором примере список чувствительности для процесса отсутствует. Вместо него используется конструкция wait on с последующим списком сигналов. Это работает следующим образом: процесс выполняется один раз до этой секции, далее он приостанавливается, пока не произойдет измене­ние какого-либо из сигналов в списке чувствительности, а затем процесс выполняется сначала.

В записи оператора условного присваивания имеет значение порядок запи­си специфицируемых условий. Условия вычисляются и проверяются в том порядке, в каком они записаны в операторе. Срабатывает первое же из ус­ловий, для которого обнаружено истинное значение, и на выход будет пере­дано соответствующее ему значение.


Дата добавления: 2020-04-08; просмотров: 194; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!