Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Verilog

Atraso do Portão Verilog


Os elementos digitais são entidades binárias e só podem conter um dos dois valores - 0 e 1. No entanto, a transição de 0 para 1 e 1 para 0 tem um atraso de transição e também cada elemento de porta para propagar o valor da entrada para a saída.

Por exemplo, uma porta AND de duas entradas tem que mudar a saída para 1 se ambas as entradas se tornarem 1 e voltar para 0 quando qualquer uma de suas entradas se tornar 0. Esses atrasos de porta e pino a pino podem ser especificados em Verilog ao instanciar primitivas lógicas.

Atrasos de subida, descida e desligamento


O tempo necessário para a saída de uma porta mudar de algum valor para 1 é chamado de aumento atraso. O tempo necessário para a saída de uma porta mudar de algum valor para 0 é chamado de queda atraso. O tempo necessário para a saída de uma porta mudar de algum valor para alta impedância é chamado de desligar atraso.

Esses atrasos são realmente aplicáveis ​​a qualquer sinal, pois todos eles podem subir ou descer a qualquer momento em circuitos reais e não estão restritos apenas às saídas dos portões. Existem três maneiras de representar atrasos de porta e o formato de dois atrasos pode ser aplicado à maioria das primitivas cujas saídas não transitam para alta impedância. Como um formato de três atrasos não pode ser aplicado a uma porta AND porque a saída não irá para Z para qualquer combinação de entrada.
  
  
// 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);

  

Se apenas um único atraso for especificado, todos os três tipos de atrasos usarão o mesmo valor fornecido. Se houver dois atrasos especificados, o primeiro representa aumento e o segundo representa queda atraso. Se houver três atrasos especificados, eles representam aumento , cair e desligar atrasos respectivamente.

Formato de um atraso

  
  
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

  

Veja que a saída de AND as portas mudam 2 unidades de tempo depois que uma de suas entradas muda. Por exemplo, b se torna 1 enquanto a já é 1 em T=20. Mas a saída se torna 1 somente em T=22. Da mesma forma, a volta a zero em T=30 e a saída obtém o novo valor em T=32.

O atraso do portão é especificado como 3 unidades de tempo para BUFIF0 e, portanto, quando b muda de 0 para 1 enquanto a já está em 1, a saída leva 3 unidades de tempo para ser atualizada para Z e finalmente o faz em T=23.
Registro de simulação
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.

Formato de dois atrasos


Vamos aplicar o mesmo testbench mostrado acima a um modelo Verilog diferente mostrado abaixo onde rise e caem atrasos são explicitamente mencionados.
  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2, 3) o1 (out1, a, b);
  bufif0 #(4, 5) b1 (out2, a, b);
  
endmodule

  
Registro de simulação
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.

Formato de três atrasos

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2, 3) o1 (out1, a, b);
  bufif0 #(5, 6, 7) b1 (out2, a, b);
  
endmodule

  
Registro de simulação
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.

Atrasos Min/Typ/Max


Os atrasos não são os mesmos em diferentes partes do chip fabricado nem são os mesmos para diferentes temperaturas e outras variações. Portanto, o Verilog também fornece um nível extra de controle para cada um dos tipos de atraso mencionados acima. Cada porta digital e célula de transistor tem um atraso mínimo, típico e máximo especificado com base no nó do processo e é normalmente fornecido por bibliotecas de fundição de fabricação.

Para cada tipo de atraso - subida, descida e desligamento - três valores min , tipo e máximo pode ser especificado e significar atrasos mínimos, típicos e máximos.
  
  
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

  
Registro de simulação
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. Tutorial Verilog
  2. Concatenação Verilog
  3. Atribuições Verilog
  4. Verilog Blocking &Non-Blocking
  5. Controle de atraso Verilog
  6. Atraso de Atribuição Inter e Intra Verilog
  7. Modelagem de nível de portão
  8. Exemplos de nível de portão Verilog
  9. Gerador de Relógio Verilog
  10. Funções matemáticas Verilog