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éclarations Verilog Block

Il existe des moyens de regrouper un ensemble d'instructions qui sont syntaxiquement équivalentes à une seule instruction et sont appelées instructions de bloc . Il existe deux types d'instructions de bloc :séquentielles et parallèles.

Séquentiel

Les instructions sont enveloppées à l'aide de begin et end mots-clés et seront exécutés séquentiellement dans l'ordre donné, l'un après l'autre. Les valeurs de retard sont traitées par rapport au temps d'exécution de l'instruction précédente. Une fois toutes les instructions du bloc exécutées, le contrôle peut être passé ailleurs.

  
  
module design0;
	bit [31:0] data;
  
	// "initial" block starts at time 0
	initial begin
      
		// After 10 time units, data becomes 0xfe 
		#10   data = 8'hfe;
		$display ("[Time=%0t] data=0x%0h", $time, data);
      
		// After 20 time units, data becomes 0x11
		#20   data = 8'h11;
		$display ("[Time=%0t] data=0x%0h", $time, data);
	end
endmodule

  

Dans l'exemple ci-dessus, première instruction dans le begin-end bloc sera exécuté à 10 unités de temps, et la deuxième instruction à 30 unités de temps en raison de la nature relative. Il s'agit de 20 unités de temps après l'exécution de l'instruction précédente.

Journal de simulation
ncsim> run
[Time=10] data=0xfe
[Time=30] data=0x11
ncsim: *W,RNQUIE: Simulation is complete.

Parallèle

Un parallèle block peut exécuter des instructions simultanément et le contrôle de retard peut être utilisé pour fournir un ordre temporel des affectations. Les instructions sont lancées en parallèle en les enveloppant dans le fork et join mots-clés.

  
  
	initial begin
		#10   data = 8'hfe;
		fork
		   #20 data = 8'h11;
		   #10 data = 8'h00;
		join
	end

  

Dans l'exemple ci-dessus, fork-join bloc sera lancé après l'exécution de l'instruction à 10 unités de temps. Les instructions de ce bloc seront exécutées en parallèle et la première instruction qui sera lancée sera celle où les données sont affectées d'une valeur de 8'h00 puisque le délai pour cela est de 10 unités de temps après le lancement du fork-join. Après 10 unités de temps supplémentaires, la première instruction sera lancée et les données prendront la valeur 8'h11.

  
  
	initial begin
		#10 data = 8'hfe;
		fork
			#10 data = 8'h11;
			begin
				#20 data = 8'h00;
				#30 data = 8'haa;
			end
		join
	end

  

Il y a un begin-end bloc dans l'exemple ci-dessus, et toutes les instructions du bloc début-fin seront exécutées séquentiellement, mais le bloc lui-même sera lancé en parallèle avec les autres instructions. Ainsi, les données obtiendront 8'h11 à 20 unités de temps, 8'h00 à 30 unités de temps et 8'haa à 60 unités de temps.

Nommage des blocs

Les blocs séquentiels et parallèles peuvent être nommés en ajoutant : name_of_block après les mots clés begin et fork . Ce faisant, le bloc peut être référencé dans un disable déclaration.

  
  
	begin : name_seq
		[statements]
	end
	
	fork : name_fork
		[statements]
	join

  

Verilog

  1. Comment l'automatisation de la préparation des données accélère le temps d'obtention d'informations ?
  2. Tutoriel Verilog
  3. Concaténation Verilog
  4. Verilog - Dans une coquille de noix
  5. Affectations Verilog
  6. Verilog bloquant et non bloquant
  7. Blocs de contrôle Verilog
  8. Fonctions Verilog
  9. Sémantique de planification Verilog