Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Verilog

Délai de porte Verilog

Les éléments numériques sont des entités binaires et ne peuvent contenir que l'une ou l'autre des deux valeurs - 0 et 1. Cependant, la transition de 0 à 1 et de 1 à 0 a un retard de transition, tout comme chaque élément de porte pour propager la valeur de l'entrée à sa sortie.

Par exemple, une porte ET à deux entrées doit commuter la sortie sur 1 si les deux entrées deviennent 1 et revenir à 0 lorsque l'une de ses entrées devient 0. Ces retards de porte et de broche à broche peuvent être spécifiés dans Verilog lors de l'instanciation de primitives logiques. /P>

Retards de montée, de descente et d'extinction

Le temps mis par la sortie d'une porte pour passer d'une certaine valeur à 1 est appelé une montée retard. Le temps mis par la sortie d'une porte pour passer d'une certaine valeur à 0 est appelé une chute retard. Le temps nécessaire à la sortie d'une porte pour passer d'une certaine valeur à une haute impédance est appelé désactivation retard.

Ces retards sont en fait applicables à n'importe quel signal car ils peuvent tous monter ou descendre à tout moment dans des circuits réels et ne sont pas limités aux seules sorties des portes. Il existe trois façons de représenter les retards de porte et le format à deux retards peut être appliqué à la plupart des primitives dont les sorties ne passent pas à haute impédance. Comme un format à trois retards ne peut pas être appliqué à une porte ET car la sortie n'ira pas à Z pour n'importe quelle combinaison d'entrée.

  
  
// 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);

  

Si un seul délai est spécifié, les trois types de délais utiliseront la même valeur donnée. S'il y a deux délais spécifiés, le premier représente la augmentation et le second représente la chute retard. S'il y a trois retards spécifiés, ils représentent augmenter , tomber et désactiver retards respectivement.

Format à un délai

  
  
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

  

Vérifiez que la sortie de AND les portes changent de 2 unités de temps après le changement d'une de ses entrées. Par exemple, b devient 1 alors que a vaut déjà 1 à T=20. Mais la sortie ne devient 1 qu'à T=22. De même, a revient à zéro à T=30 et la sortie prend la nouvelle valeur à T=32.

Le délai de porte est spécifié comme 3 unités de temps pour BUFIF0 et donc lorsque b passe de 0 à 1 alors que a est déjà à 1, la sortie prend 3 unités de temps pour être mise à jour vers Z et le fait finalement à T=23.

Journal de simulation
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.

Format à deux délais

Appliquons le même banc d'essai montré ci-dessus à un modèle Verilog différent montré ci-dessous où rise et tomber les retards sont explicitement mentionnés.

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

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

  
Journal de simulation
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.

Format à trois délais

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

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

  
Journal de simulation
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.

Retards Min/Typ/Max

Les retards ne sont pas les mêmes dans les différentes parties de la puce fabriquée ni pour les différentes températures et autres variations. Ainsi, Verilog fournit également un niveau de contrôle supplémentaire pour chacun des types de retard mentionnés ci-dessus. Chaque porte numérique et cellule de transistor a un délai minimum, typique et maximum spécifié en fonction du nœud de processus et est généralement fourni par les bibliothèques de la fonderie de fabrication.

Pour chaque type de retard - montée, descente et désactivation - trois valeurs min , taper et maximum peuvent être spécifiés et représentent des retards minimum, typiques et maximum.

  
  
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

  
Journal de simulation
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. Tutoriel Verilog
  2. Concaténation Verilog
  3. Affectations Verilog
  4. Verilog bloquant et non bloquant
  5. Contrôle des délais Verilog
  6. Délai Verilog Inter et Intra Affectation
  7. Modélisation au niveau de la porte
  8. Exemples de niveau de porte Verilog
  9. Générateur d'horloge Verilog