Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Документ'
К окружности с центром О и радиусом 20 см проведены две касательные МА и МК ( А и К – точки касания). Отрезок ВМ равен 24 см. Найти: а) отрезок ВО; б)...полностью>>
'Документ'
Имя Дата рожд. Телефон. Электронная почта. 1 3 4 5 7 8 9 10 11 1 13 14 15 1 Команда: Ф....полностью>>
'Документ'
Человеческое развитие в Украине: минимизация социальных рисков (коллективная научно-аналитическая монография) / Под ред. Э.М.Либановой.Монография подг...полностью>>
'Документ'
Васильевское дер. Иванова Гора пос. Пролетарский дер. Старые Кузьменки пос. Шарапова охота Начальник участка Побережный Ростислав Васильевич 708-5 9 У...полностью>>

Главная > Документ

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

Временной и событийный контроль.

Так как Verilog используется для моделирования физических систем, то большое внимание уделено привязке события к определенному моменту времени. Для этого используется механизм задержек.

Следует заметить, что средства синтеза (как для Verilog, так и для VHDL) игнорируют временные конструкции в исходном коде. Для правильной генерации цифровой схемы (нетлиста) из библиотечных элементов в средства синтеза наряду с описанием на языке высокого уровня вводятся файлы содержащие “constrain” описания. В этих файлах описываются временные ограничения распространения сигналов. Использующийся для этого синтаксис не стандартизован и определяется используемым средством синтеза. Профессиональная работа с HDL языками высокого уровня подразумевает не только умение создавать грамотные поведенческие описания, но и умение правильно управлять средством синтеза с помощью “constrain”-ов.

Но для моделирования временной контроль необходим, и в примерах этой статьи неоднократно использовались выражения вида #<число>. Вместо числа может использоваться выражение содержащее целые и/или вещественные параметры. В синтаксисе языка определено несколько форм временных задержек для описания различных технологических условий – так называемая mintypmax форма - #(min, typ, max), например - #(2,3,4). Но данные конструкции используются, как правило, для моделирования на уровне вентилей (нетлиста), а более эффективным методом таких описаний является SDF аннотация с использованием специальных SDF файлов. Поэтому в статье будет использоваться упрощенная форма задания задержки с одним параметром #typ. Для анализа исходных файлов «третьей стороны» можно считать, что всегда используется типовое (среднее) значение.

Рассмотрим применение задержки в непрерывном присвоении.

assign #10 c=a^b;

Данная конструкция описывает элемент ИСКЛЮЧАЮЩЕЕ ИЛИ с задержкой распространения 10 нс (вернее 10 единиц первого параметра директивы `timescale, который по умолчанию равен 1 нс). При этом все задержки в непрерывных присвоениях являются инерциальными. То есть если сигнал А изменит свое состояние на время меньшее 10 нс, а затем изменит еще раз, то изменения сигнала С не произойдет. Для того чтобы произошло изменение сигнала С требуется, чтобы сигнал А был зафиксирован в новом состоянии более 10 нс. Такая модель поведение соответствует распространению задержки при прохождении через элементы электронной схемы. Другой тип задержки – транспортная задержка, которая обеспечивает точное соответствие формы задержанного сигнала и сдвиг его по шкале времени. В отличие от VHDL (в котором существуют спецификаторы типа задержки inertial и transport) Verilog не позволяет использовать оба типа задержек в одном моделировании. Для переключения типа задержки служит ключ командной строки запуска Verilog симулятора.

Рассмотрим задержки в процедурных блоках. Первая форма – простая задержка (она собственно и использовалась в примерах статьи). Имеет вид:

#1 x=y;

Вызывает останов последовательного блока на 1 нс (не влияет на исполнение конкурентно исполняющихся блоков). Не обязательно используется с оператором присваивания, может использоваться с пустым оператором #1; То есть #1 x=y; может быть записано в такой форме #1; x=y; или #0.5; #0.5 x=y; Поведение этих конструкций одинаковое.

Также в процедурном блоке задержка может встречаться с другой стороны знака =. Это так называемая intra-assignment delay.

x=#1 y;

В этом случае вначале происходит вычисление выражения, затем задержка, а затем присвоение. То есть рассматриваемый пример эквивалентен

tmp=y;

#1;

x=tmp;

Кроме временного контроля существует событийный контроль (который можно считать другой формой временного контроля). Признаком событийного контроля является знак @. В рассмотренных ранее примерах событийный контроль использовался в блоках always. Отличие Verilog от VHDL в данном случае состоит в том, что для описания фронтов и срезов сигналов используются не специализированные атрибуты сигнала, а специальная конструкция языка. Это создает впечатление, что разработчики языка Verilog несколько лучше представляли себе процесс разработки цифровых схем . Событийный контроль используется в процедурных блоках также как и временной контроль. При этом задержка исполнения происходит не на фиксированный временной интервал, а до тех пор, пока не произойдет нужное событие. События бывают следующих типов @(name) – изменение name, при этом name может являться цепью, регистром, переменной, или переменной типа event; @(posedge A) или @(negedge А) – фронт или срез сигнала А, при этом А однобитовый регистр или цепь; или комбинацией перечисленных событий с ключевым словом “or”, например, @ (posedge CLK or posedge SET). В третьем случае следует различать “or” с одноименной логической операцией. В событийном контроле “or” означает, что ожидается любое из перечисленных событий, а не определенный результат логической операции. Для генерации синхронного сброса может использоваться такая конструкция:

nReset=0;

repeat (16) @(posedge CLK);

nReset=1’b1;

Завершая рассмотрение временного и событийного контроля, следует упомянуть о применении intra-assignment delay в «неблокирующем» присвоении. То есть в конструкциях вида

x<=#1 y;

a<= @(posedge c) b;

Поведение этих конструкций таково, что значение выражения вычисляется и блокирования последовательного исполнения операций не происходит, но новое значение будет присвоено только после истечении времени указанного во временной конструкции или после совершения события указанного в событийной конструкции. В терминах работы программы Verilog симулятора операция присвоения переносится на другой временной шаг. В работе таких конструкций проявляется интересное отличие Verilog симуляторов от VHDL симуляторов (спасибо Stewart Little за демонстрацию этого факта). В VHDL каждая следующая по тексту программы операция присвоения одному и тому же сигналу отменяет предыдущую, пусть даже исполнение которой должно произойти в более ранний момент времени. В Verilog все подобные операции будут помещены в список для соответствующего временного шага, и сигнал, изменение которого вызывают эти операции, будет изменяться в соответствии со всеми операциями. Какой механизм поведения более правильный – вопрос спорный. Так как при синтезе временной контроль игнорируется, да и непонятно каким образом должна синтезироваться конструкция с присвоением из нескольких источников без специальной разрешающей функции, то это отличие может проявляться только на уровне моделирования с несинтезируемыми элементами. В то же время для работы с несинтезируемыми элементами Verilog предлагает операции способные отменить (вернее «пересилить») все остальные операции присвоения к одному определенному сигналу. Эти операции присвоения записываются с ключевыми словами force и release.

Проиллюстрировать поведение можно следующим примером:

/* это пример на VHDL (спасибо Stewart Little)

LIBRARY ieee;
USE ieee.STD_logic_1164.all;
USE ieee.std_logic_arith.all;

ENTITY AT91R IS
PORT(
NRD: OUT std_logic :='0'
);
END AT91R;

ARCHITECTURE EBI OF AT91R IS

BEGIN

modeler : PROCESS
BEGIN
NRD <= '1' AFTER 100 ns;
WAIT FOR 30 ns;
NRD <= 'Z' AFTER 30 ns;
WAIT;
END PROCESS modeler;

END EBI;

*/

В результате через 60 нс от начала симуляции выход переходит в Z-состояние, и далее не изменяется. Таким образом можно видеть, что последующая операция отменяет предыдущую.

Если переписать этот модуль на Verilog без учета изложенного выше получим (обратите внимание на лаконичность языка Verilog):

module AT91R (nrd);

output nrd;

reg ndr;

initial

begin : modeler //пример именованного блока

ndr<= #100 1’b1;

#30;

ndr<= #30 1'bz;

end

endmodule

При этом поведение будет другое. Написав соответствующий testbench, можно увидеть:

Highest level modules:

tst

0 x

60 z

100 1

Это значит, что на 60 нс сработает ndr<= #30 1'bz, а затем на 100 нс расположенный выше по тексту ndr<= #100 1’b1. То есть в Verilog предыдущая операция не отменяется. Для того чтобы поведения модуля было таким же, как и поведение VHDL кода, нужно записать его следующим образом:

module AT91R (nrd);

output nrd;

reg ndr;

initial

begin

ndr<= #100 1’b1;

#30;

#30 force ndr = 1'bz;

end

endmodule

Использовать force c «неблокирующим» присвоением и/или intra-assignment delay нельзя. Для того чтобы разрешить дальнейшее использование присвоений в других параллельных блоках сигнал должен быть отпущен с помощью release (например, release ndr;).

Завершая обзор временного контроля, следует упомянуть об еще одной форме задержки – нулевой задержке. То есть в Verilog коде встречаются такие конструкции: #0 a=b; Нулевая задержка означает, что операция будет выполнена в самом конце текущего временного шага. Если в одном временном шаге встречается несколько нулевых задержек, то между собой их порядок не определен.



Похожие документы:

  1. Контрольные вопросы 23

    Контрольные вопросы
    ... деятельности, как объект разработки и как технологии разработки информационных систем. Это ... Предполагают, что между первыми инструментами обработки материальных объектов и средствами ... услугой. Переход к технологиям цифровой связи приводит к сближению служб ...
  2. ПЕРЕЧЕНЬ НАУЧНЫХ СТАТЕЙ И ДОКЛАДОВ опубликованных в 2014 году

    Документ
    ... для линейного логического синтеза цифровых структур / Н.Н. ... уравнения базовых схем включения мультидифференциальных ... 21 Разработка оптико-электронного устройства для ... Каращенко, В.В. Учёт финансовых инструментов и инвестиций в соответствии ... .auris-verlag.de/ ...
  3. Оправилах записи программы 9 Очем можно не беспокоиться 9 Описание архитектуры объекта 9

    Реферат
    ... описывать поведение, т.е. алгоритмы функционирования цифровых систем, а также проводить ... определение можно заменить структурной схемой. Можно моделировать: параллелизм, ... следующие стили проектирования и описания схем: структурный, потоковый, поведенческий, ...
  4. Болотова алла Константиновна

    Документ
    ... Л.С.Выготского через разработку общепсихологической теории ... (см. схему) Схема хронотопической детерминации ... деятельности является необходимым инструментом приспособления к меняющимся ... наименьшей ошибкой (показания электронного секундомера, вмонтированного ...
  5. Базы знаний интелектуальных систем гаврилова хорошевский

    Документ
    ... , традиционная схема разработки СПЗ I ... электронные учебники. Размещение в узлах сети не только текстовой и цифровой ... 1994. «Сценарий» — инструмент визуальной разработки компьютерных программ // Компьютерные техноло­ ... and Languages, Springer-Verlag. 287. Fridman ...

Другие похожие документы..