Задержка ворот Verilog
Цифровые элементы являются двоичными объектами и могут содержать только одно из двух значений — 0 и 1. Однако переход от 0 к 1 и от 1 к 0 имеет переходную задержку, как и каждый вентильный элемент для распространения значения от входа к выходу.
Например, логический элемент И с двумя входами должен переключать выход в 1, если оба входа становятся 1, и обратно в 0, когда любой из его входов становится 0. Эти задержки между логическими элементами и контактами могут быть указаны в Verilog при создании экземпляров логических примитивов.Р>
Задержки роста, падения и выключения
Время, необходимое для изменения выходного сигнала вентиля с некоторого значения на 1, называется нарастанием. задерживать. Время, необходимое для того, чтобы выход вентиля изменился с некоторого значения на 0, называется падением. задерживать. Время, необходимое для изменения выходного сигнала гейта от некоторого значения до высокого импеданса, называется отключением. задержка.
Эти задержки фактически применимы к любому сигналу, поскольку все они могут увеличиваться или уменьшаться в любое время в реальных схемах и не ограничиваются только выходами вентилей. Существует три способа представления задержек логического элемента, и формат двух задержек может применяться к большинству примитивов, чьи выходы не переходят в режим высокого импеданса. Например, формат с тремя задержками не может быть применен к вентилю И, потому что выход не будет попадать в Z для любой комбинации входов.
// Single delay specified - used for all three types of transition delays
or #(<delay>) o1 (out, a, b);
// Two delays specified - used for Rise and Fall transitions
or #(<rise>, <fall>) o1 (out, a, b);
// Three delays specified - used for Rise, Fall and Turn-off transitions
or #(<rise>, <fall>, <turn_off>) o1 (out, a, b);
Если указана только одна задержка, все три типа задержек будут использовать одно и то же заданное значение. Если указаны две задержки, первая представляет rise а второй представляет падение задерживать. Если указаны три задержки, они представляют собой подъем , падение и отключить задержки соответственно.
Один формат задержки
module des ( input a, b,
output out1, out2);
// AND gate has 2 time unit gate delay
and #(2) o1 (out1, a, b);
// BUFIF0 gate has 3 time unit gate delay
bufif0 #(3) b1 (out2, a, b);
endmodule
module tb;
reg a, b;
wire out1, out2;
des d0 (.out1(out1), .out2(out2), .a(a), .b(b));
initial begin
{a, b} <= 0;
$monitor ("T=%0t a=%0b b=%0b and=%0b bufif0=%0b", $time, a, b, out1, out2);
#10 a <= 1;
#10 b <= 1;
#10 a <= 0;
#10 b <= 0;
end
endmodule
Обратите внимание, что вывод AND ворота изменяются через 2 единицы времени после изменения одного из его входов. Например, b становится равным 1, в то время как a уже равно 1 при T=20. Но выход становится 1 только при T=22. Точно так же a возвращается к нулю при T =30, а выход получает новое значение при T =32.
Задержка шлюза указана как 3 единицы времени для BUFIF0. и, следовательно, когда b изменяется с 0 на 1, в то время как a уже равно 1, выходным данным требуется 3 единицы времени, чтобы обновиться до Z, и, наконец, это происходит при T =23.
Журнал моделированияncsim> run T=0 a=0 b=0 and=x bufif0=x T=2 a=0 b=0 and=0 bufif0=x T=3 a=0 b=0 and=0 bufif0=0 T=10 a=1 b=0 and=0 bufif0=0 T=13 a=1 b=0 and=0 bufif0=1 T=20 a=1 b=1 and=0 bufif0=1 T=22 a=1 b=1 and=1 bufif0=1 T=23 a=1 b=1 and=1 bufif0=z T=30 a=0 b=1 and=1 bufif0=z T=32 a=0 b=1 and=0 bufif0=z T=40 a=0 b=0 and=0 bufif0=z T=43 a=0 b=0 and=0 bufif0=0 ncsim: *W,RNQUIE: Simulation is complete.
Формат двух задержек
Давайте применим тот же тестовый стенд, показанный выше, к другой модели Verilog, показанной ниже, где rise и падать задержки явно упоминаются.
module des ( input a, b,
output out1, out2);
and #(2, 3) o1 (out1, a, b);
bufif0 #(4, 5) b1 (out2, a, b);
endmodule
Журнал моделирования ncsim> run T=0 a=0 b=0 and=x bufif0=x T=3 a=0 b=0 and=0 bufif0=x T=5 a=0 b=0 and=0 bufif0=0 T=10 a=1 b=0 and=0 bufif0=0 T=14 a=1 b=0 and=0 bufif0=1 T=20 a=1 b=1 and=0 bufif0=1 T=22 a=1 b=1 and=1 bufif0=1 T=24 a=1 b=1 and=1 bufif0=z T=30 a=0 b=1 and=1 bufif0=z T=33 a=0 b=1 and=0 bufif0=z T=40 a=0 b=0 and=0 bufif0=z T=45 a=0 b=0 and=0 bufif0=0 ncsim: *W,RNQUIE: Simulation is complete.
Три формата задержки
module des ( input a, b,
output out1, out2);
and #(2, 3) o1 (out1, a, b);
bufif0 #(5, 6, 7) b1 (out2, a, b);
endmodule
Журнал моделирования ncsim> run T=0 a=0 b=0 and=x bufif0=x T=3 a=0 b=0 and=0 bufif0=x T=6 a=0 b=0 and=0 bufif0=0 T=10 a=1 b=0 and=0 bufif0=0 T=15 a=1 b=0 and=0 bufif0=1 T=20 a=1 b=1 and=0 bufif0=1 T=22 a=1 b=1 and=1 bufif0=1 T=27 a=1 b=1 and=1 bufif0=z T=30 a=0 b=1 and=1 bufif0=z T=33 a=0 b=1 and=0 bufif0=z T=40 a=0 b=0 and=0 bufif0=z T=46 a=0 b=0 and=0 bufif0=0 ncsim: *W,RNQUIE: Simulation is complete.
Мин./тип./макс. задержки
Задержки неодинаковы в разных частях изготовленного чипа, а также неодинаковы для разных температур и других изменений. Таким образом, Verilog также обеспечивает дополнительный уровень контроля для каждого из упомянутых выше типов задержки. Каждый цифровой вентиль и транзисторная ячейка имеют минимальную, типичную и максимальную задержку, определяемую на основе узла процесса и обычно предоставляемую библиотеками на заводе-изготовителе.
Для каждого типа задержки - нарастания, спада и выключения - по три значения min , тип и макс. могут быть указаны и обозначать минимальную, типичную и максимальную задержки.
module des ( input a, b,
output out1, out2);
and #(2:3:4, 3:4:5) o1 (out1, a, b);
bufif0 #(5:6:7, 6:7:8, 7:8:9) b1 (out2, a, b);
endmodule
Журнал моделирования ncsim> run T=0 a=0 b=0 and=x bufif0=x T=4 a=0 b=0 and=0 bufif0=x T=7 a=0 b=0 and=0 bufif0=0 T=10 a=1 b=0 and=0 bufif0=0 T=16 a=1 b=0 and=0 bufif0=1 T=20 a=1 b=1 and=0 bufif0=1 T=23 a=1 b=1 and=1 bufif0=1 T=28 a=1 b=1 and=1 bufif0=z T=30 a=0 b=1 and=1 bufif0=z T=34 a=0 b=1 and=0 bufif0=z T=40 a=0 b=0 and=0 bufif0=z T=47 a=0 b=0 and=0 bufif0=0 ncsim: *W,RNQUIE: Simulation is complete.
Verilog