Процессы, их описание на языке VHDL. Список чувствительности.
Оператор процесса определяет независимый последовательный процесс, представляющий поведение некоторой части проекта. Выполнение оператора процесса состоит из повторяющегося выполнения последовательности операторов. После того, как последний оператор в этой последовательности будет выполнен, выполнение оператора процесса продолжается, начиная с первого оператора в этой последовательности.
Процесс состоит из объявлений и операторной части, следующей за словом begin. В объявлениях процесса можно создавать переменные, в то время как объявлять сигналы в этой части не допускается. Внутренние переменные имеют область видимости только внутри процесса, в котором они объявлены. Предложения внутри процесса называются последовательными предложениями. Предложение выполняется только тогда, когда процесс выполнения достигает этого предложения. В языке VHDL существует два варианта оператора-процесса
1. process(X, Y,Z)
…………….
end process;
2. process
………….
end process;
1-ый вариант - это процесс, который активизируется, когда меняет свое значение некоторый сигнал в его списке чувствительности (сигналы X, Y, Z). Список чувствительности – один или несколько сигналов, разделённых запятыми. 2-ой вариант не имеет списка сигналов запуска и предполагает, что процесс всегда активен. 1-ый вариант фактически эквивалентен следующему:
process
…………….
WAIT on X, Y,Z
end process;
После начала моделирования процесс выполняется только один раз, а затем переходит в состояние ожидания (в конце выполнения), пока не изменятся сигналы, которые его перезапустят.
Оператор процесса называется пассивным процессом, если ни сам процесс, ни любая процедура не содержат оператор назначения сигнала.
Виды задержек и их описание на языке VHDL.
Язык VHDL включает различные модели задержек.
Инерционная задержка
Цифровые схемы обладают определенной инерционностью. Для формирования сигнала на выходном контакте, в ответ на изменение входного сигнала, требуется некоторое количество энергии и определенное время. Чтобы на выходе сформировался устойчивый сигнал, входной сигнал должен продержаться в новом состоянии не менее некоторого промежутка времени. Если же входной сигнал не простоит в этом состоянии нужное время, то вызванные им изменения состояния схемы не успеют распространиться до рассматриваемого выхода.
Для представления этого вида задержек распространения сигналов в языке VHDL используется понятие инерционной задержки (inertial delay), в операторе присваивания — ключевое слово inertial.
До тех пор, пока входной сигнал изменяется не чаще, чем время, указанное в секции after, изменения выходного сигнала происходят в соответствии с изменениями входного, но с учетом указанной задержки. Если же изменения входного сигнала происходят чаще, чем время, указанное в секции after, они игнорируются.
Когда минимальная длительность входного сигнала, приводящая к изменению выходного сигнала, меньше заданной задержки, для ее указания используется секция reject.
Например, в операторе присваивания значения сигналу можно указать:
z <= reject 3 ns inertial (x xor у) after 7 ns;
Здесь минимальная длительность импульса на входах х и у установлена равной 3 ns, в то время как задержка формирования выходного сигнала z равна 7 ns. При длительности, меньшей 3 ns, импульс отфильтровывается, отбрасывается системой моделирования и не приводит к формированию нового значения выходного сигнала z.
Если в операторе присваивания значения сигналу присутствует секция inertial и несколько секций after, то секция inertial применяется только к первой секции after, а к остальным секциям after применяются правила работы с транспортными задержками.
Транспортная задержка
Часто в модели необходимо, чтобы изменения сигналов любой длительности не отбрасывались, а отрабатывались системой моделирования и влияли на формирование выходных сигналов.
В отличие от инерционных задержек, транспортные задержки не накладывают ограничений на минимальную длительность импульса, не отфильтровывают короткие входные импульсы, а пропускают в схему любые входные сигналы.
Дельта-задержка сигналов
Особая ситуация складывается в модели устройства на языке VHDL, если оператор присваивания нового значения сигналу устанавливает нулевую задержку. Если отсутствует секция after, то считается, что задержка изменения сигнала составляет 0 нс. В реальных устройствах такие ситуации невозможны.
Решение проблемы: система моделирования, закончив текущий цикл моделирования для момента t1 модельного времени, не сразу переходит к следующему моменту модельного времени t2 > t1 (например, t2 = t1 + 1). Она проверяет, имеются ли изменения сигналов, вновь запланированные на момент t1. Если выявлены новые изменения сигналов на тот же момент t1 модельного времени, то система моделирования выполняет новый цикл моделирования, отрабатывая эти изменения. И так далее, пока не будет определено, что по результатам текущего цикла моделирования не появилось новых сигналов, запланированных на момент t1, после чего система переходит к моделированию момента t2 модельного времени.
Дельта-задержке не приписывается никакого числового значения (используется только для упорядочивания последовательности событий в модели и отрабатывающих их циклов работы системы моделирования).
Дельта-задержка — задержка условная позволяющая отразить зависимость изменения сигналов при нулевых задержках и соответствующую им последовательность дельта-циклов — циклов внутренней работы системы моделирования.