РАЗРЕШЕНИЕ НЕОДНОЗНАЧНОСТИ УСТАНОВЛЕНИЯ СИГНАЛА НА ЯЗЫКЕ VHDL
При использовании механизма задержек могут возникать неоднозначные ситуации. Значение одному и тому же сигналу могут устанавливаться несколькими операторами присваивания значений. Эти операторы могут устанавливать разные значения, определять их с разными задержками. В результате в программе на VHDL может создаваться неоднозначная ситуация, когда на каком-то интервале модельного времени значения, устанавливаемые разными операторами присваивания, входят в противоречие друг с другом.
В семантике языка VHDL приняты специальные правила для разрешения такой неоднозначности. В основе этих правил лежит сопоставление между последовательностью выполнения операторов присваивания значений сигналам и заданных ими моментов изменения сигналов.
В VHDL принято, что если возникает ситуация, когда транзакция изменения значения сигнала, порожденная позже, планируется на более раннее время, то транзакция, порожденная раньше по ходу исполнения программы, но запланированная на более позднее время, уничтожается.
Пример коллизии, возникающей в ситуации, когда одному сигналу присваиваются разные значения, последовательно по ходу выполнения программы, несколькими операторами, демонстрирует пример ниже.
Пример
process (а)
constant Т_01:time:=800 ns;
constant Т_10 : time: =500 ns;
Begin
if a='1' then
z<= transport a after T_01;
else
z<=transport a after T_10;
end if;
end process;
ПРОЦЕССЫ, ИХ ОПИСАНИЯ НА ЯЗЫКЕ VHDL . СПИСОК ЧУВСТВИТЕЛЬНОСТИ
|
|
Одной из форм параллельных операторов являются процессы. Процессы являются базовыми конструкциями для задания поведения описываемой архитектуры с учетом параллельности выполняемых действий.
Процессы выполняются параллельно относительно друг друга, а действия внутри тела процесса выполняются последовательно. Выполнение процессов осуществляется в соответствии с изменениями значений сигналов.
Описание процесса имеет следующий синтаксис:
[process label:] process [(signal_name {,...})][is]
{process_declarative_item}
Begin
{sequential_statement}
end process [process__label] ;
Список сигналов в скобках после ключевого слова process называется списком чувствительности. Если в описании процесса задан список чувствительности, то процесс активируется (начинается выполнение действий, описанных внутри процесса) при изменении значения любого из этих сигналов. Если список чувствительности отсутствует, то процесс активируется при изменении любого сигнала в модели, если не указано иное с помощью команд ожидания внутри самого процесса.
В секцию process _ declarative _ item могут включаться описания локальных констант, типов и переменных, используемых в описываемом процессе.
Сигналы не могут быть описаны как локальные данные процесса.
|
|
Когда в ходе моделирования процесс активируется, его выполнение начинается с первого оператора, указанного в теле процесса (в секции sequential _ statement). В этой секции располагаются последовательные операторы, которые определяют будущие значения сигналов на базе текущих значений. Кроме того, в теле процесса, как и в обычных последовательных программах на языках высокого уровня, для изменения последовательности выполнения могут использоваться управляющие операторы.
Наличие метки процесса process _ label (фактически — имени процесса) облегчает отладку программы на VHDL, включающей множество процессов.
ВИДЫ ЗАДЕРЖЕК И ИХ ОПИСАНИЕ НА ЯЗЫКЕ VHDL
Инерционная задержка. Цифровые схемы обладают определенной инерционностью. Для формирования сигнала на выходном контакте, в ответ на изменение входного сигнала, требуется некоторое количество энергии и определенное время. Чтобы на выходе сформировался устойчивый сигнал, входной сигнал должен продержаться в новом состоянии не менее некоторого промежутка времени. Если же входной сигнал не простоит в этом состоянии нужное время, то вызванные им изменения состояния схемы не успеют распространиться до рассматриваемого выхода. Для представления этого вида задержек распространения сигналов в языке VHDL используется понятие инерционной задержки(inertial delay), в операторе присваивания — ключевое слово inertial.
|
|
До тех пор, пока входной сигнал изменяется не чаще, чем время, указанное в секции after , изменения выходного сигнала происходят в соответствии с изменениями входного, но с учетом указанной задержки. Если же изменения входного сигнала происходят чаще, чем время, указанное в секции af ter , они игнорируются. Когда минимальная длительность входного сигнала, приводящая к изменению выходного сигнала, меньше заданной задержки, для ее указания используется секция reject .
Например, в операторе присваивания значения сигналу можно указать:
z <= reject 3 ns inertial (x xor у) after 7 ns; т.е. сигнала на выходе нет.
Если в операторе присваивания значения сигналу присутствует секция inertial и несколько секций after, то секция inertial применяется только к первой секции after, а к остальным секциям after применяются правила работы с транспортными задержками.
Транспортная задержка. Часто в модели необходимо, чтобы изменения сигналов любой длительности не отбрасывались, а отрабатывались системой моделирования и влияли на формирование выходных сигналов. В отличие от инерционных задержек, транспортные задержки не накладывают ограничений на минимальную длительность импульса, не отфильтровывают короткие входные импульсы, а пропускают в схему любые входные сигналы.
|
|
Дельта-задержка сигналов. Дельта-задержка — задержка условная позволяющая отразить зависимость изменения сигналов при нулевых задержках и соответствующую им последовательность дельта-циклов — циклов внутренней работы системы моделирования.
Особая ситуация складывается в модели устройства на языке VHDL, если оператор присваивания нового значения сигналу устанавливает нулевую задержку. Если отсутствует секция after, то считается, что задержка изменения сигнала составляет 0 нс. В реальных устройствах такие ситуации невозможны.
Решение проблемы: система моделирования, закончив текущий цикл моделирования для момента t1 модельного времени, не сразу переходит к следующему моменту модельного времени t2 > t1(например, t2 = t1 + 1). Она проверяет, имеются ли изменения сигналов, вновь запланированные на момент t1. Если выявлены новые изменения сигналов на тот же момент t1 модельного времени, то система моделирования выполняет новый цикл моделирования, отрабатывая эти изменения. И так далее, пока не будет определено, что по результатам текущего цикла моделирования не появилось новых сигналов, запланированных на момент t1, после чего система переходит к моделированию момента t2модельного времени.
Дата добавления: 2020-04-08; просмотров: 192; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!