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

Verilog bloc initial

Un ensemble d'instructions Verilog est généralement exécuté séquentiellement dans une simulation. Ces instructions sont placées dans une procédurale bloquer. Il existe principalement deux types de procédure blocs dans Verilog - initial et toujours

Syntaxe

  
  
	initial 
		[single statement]

	initial begin
		[multiple statements]
	end

  

A quoi sert le bloc initial ?

Un initial Le bloc n'est pas synthétisable et ne peut donc pas être converti en un schéma matériel avec des éléments numériques. Par conséquent, les blocs initiaux ne servent pas à grand-chose que d'être utilisés dans des simulations. Ces blocs sont principalement utilisés pour initialiser des variables et piloter des ports de conception avec des valeurs spécifiques.

Quand un bloc initial commence-t-il et se termine-t-il ?

Un initial bloc est démarré au début d'une simulation au temps 0 unité. Ce bloc ne sera exécuté qu'une seule fois pendant toute la simulation. Exécution d'un initial bloc se termine une fois que toutes les instructions du bloc sont exécutées.

L'image ci-dessus a un module appelé behavior qui a deux signaux internes appelés a et b. Le initial le bloc n'a qu'une seule instruction et il n'est donc pas nécessaire de placer l'instruction dans begin et end . Cette instruction attribue la valeur 2'b10 à a lorsque le bloc initial est démarré au temps 0 unités.

Que se passe-t-il s'il y a un élément de retard ?

Le code ci-dessous a une instruction supplémentaire qui attribue une valeur au signal b. Cependant, cela ne se produit qu'après 10 unités de temps à partir de l'exécution de l'instruction précédente. Cela signifie que a est d'abord affecté avec la valeur donnée, puis après 10 unités de temps, b est affecté à 0.

Combien de blocs initiaux sont autorisés dans un module ?

Il n'y a pas de limite au nombre de initial blocs pouvant être définis à l'intérieur d'un module.

Le code ci-dessous a trois initial blocs qui sont tous démarrés en même temps et exécutés en parallèle. Cependant, en fonction des déclarations et des délais dans chaque bloc initial, le temps nécessaire pour terminer le bloc peut varier.

Dans cet exemple, le premier bloc a un retard de 20 unités, tandis que le second a un retard total de 50 unités (10 + 40) et le dernier bloc a un retard de 60 unités. Par conséquent, la simulation prend 60 unités de temps pour se terminer car il y a au moins un bloc initial en cours d'exécution jusqu'à 60 unités de temps.

$finish est une tâche système Verilog qui indique au simulateur de terminer la simulation en cours.

Si le dernier bloc avait un retard de 30 unités de temps comme indiqué ci-dessous, la simulation se serait terminée à 30 unités de temps, tuant ainsi tous les autres initial blocs actifs à ce moment-là.

  
  
	initial begin
		#30 $finish;
	end

  

Consultez l'exemple flash ci-dessous pour voir comment un initial bloc est exécuté dans une simulation.

Cliquez ici pour un diaporama avec exemple de simulation !


Verilog

  1. Tutoriel Verilog
  2. Concaténation Verilog
  3. Verilog - Dans une coquille de noix
  4. Affectations Verilog
  5. Verilog bloquant et non bloquant
  6. Fonctions Verilog
  7. Tâche Verilog
  8. Générateur d'horloge Verilog
  9. Fonctions mathématiques Verilog