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 - Dans une coquille de noix

Tout le code comportemental est écrit dans module et endmodule . Ainsi, quel que soit le design numérique que vous avez l'intention de créer, il ira à l'intérieur d'un module bloquer. Il peut ou non avoir des ports définis - autoriser les signaux à entrer dans le bloc en tant que input ou échapper le bloc comme output .

Module

Le module vide dans l'exemple ci-dessous s'appelle testbench . Vous pouvez le nommer comme vous le souhaitez, sauf qu'il doit être alphanumérique et peut contenir '_'.

  
  
module testbench;

endmodule

  

Regardons un autre module. Il a quelques signaux (d, clk, rstb ) déclarés comme entrées et q déclaré comme sortie.

  
  
module dff (input d,
                  clk,
                  rstb,
            output q);
endmodule

  

Types de données

Maintenant que nous avons vu à quoi ressemble un module, voyons ce qui peut être mis à l'intérieur d'un module, en regardant à nouveau le module testbench. Il existe principalement deux types de types de données dans verilog :

Un reg le type de données est utilisé pour conserver des valeurs comme une variable, tandis qu'un wire est juste analogue à un fil électrique, qui doit être entraîné en continu. Donc typiquement wire est utilisé pour se connecter entre plusieurs modules et d'autres signaux.

  
  
module testbench;
	
	reg d;
	reg rst_b;
	reg clk;
	
	wire q;
endmodule

  

Devoirs

Verilog a trois blocs de base :

always @ (état ) toujours exécuté lorsque la condition est satisfaite
initial sera exécuté une seule fois, au début de la simulation
assign [LHS] =[RHS] La valeur de LHS sera mise à jour chaque fois que RHS change

Il y a quelques règles à garder à l'esprit lors de l'écriture de Verilog :

  
  
module testbench;
	
	reg d;
	reg rst_b;
	reg clk;
	
	wire q;
	
	initial begin
		d = 0;
		rst_b = 0;
		clk = 0;
		
		#100 $finish;
	end
	
	always begin
		#10 clk = ~clk;
	end
endmodule

  

Remarque ce qui suit à partir de l'exemple ci-dessus :


Verilog

  1. Tutoriel Verilog
  2. Concaténation Verilog
  3. Affectations Verilog
  4. Verilog bloquant et non bloquant
  5. Fonctions Verilog
  6. Tâche Verilog
  7. Portée de référence hiérarchique Verilog
  8. Générateur d'horloge Verilog
  9. Fonctions mathématiques Verilog