Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Verilog

Задержка ворот 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

  1. Учебник Verilog
  2. Конкатенация Verilog
  3. Верилог Задания
  4. Блокировка и неблокировка Verilog
  5. Контроль задержки Verilog
  6. Verilog Inter и внутренняя задержка назначения
  7. Моделирование уровня ворот
  8. Примеры уровней Verilog Gate
  9. Генератор часов Verilog
  10. Математические функции Verilog