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

Ports Verilog

Les ports sont un ensemble de signaux qui agissent comme des entrées et des sorties vers un module particulier et constituent le principal moyen de communication avec lui. Considérez un module comme une puce fabriquée placée sur un PCB et il devient tout à fait évident que la seule façon de communiquer avec la puce est à travers ses broches. Les ports sont comme des broches et sont utilisés par la conception pour envoyer et recevoir des signaux du monde extérieur.

Types de ports

Port Description
Entrée Le module de conception ne peut recevoir des valeurs que de l'extérieur en utilisant son input ports
Sortie Le module de conception ne peut envoyer des valeurs à l'extérieur qu'en utilisant son output ports
Entrée Le module de conception peut soit envoyer soit recevoir des valeurs en utilisant son inout ports

Les ports sont par défaut considérés comme des réseaux de type wire .

Syntaxe

Ports déclarés comme inout peut servir à la fois d'entrée et de sortie.

  
  
	input  [net_type] [range] list_of_names; 	// Input port
	inout  [net_type] [range] list_of_names; 	// Input & Output port
	output [net_type] [range] list_of_names; 	// Output port driven by a wire
	output [var_type] [range] list_of_names; 	// Output port driven by a variable

  

Exemple

Dans le code ci-dessous, il y a trois input ports, un output port et un inout port.

  
  
module  my_design ( input wire			clk,
                    input 					en,
                    input 					rw,
                    inout [15:0]	  data,
                    output 					int );
                    
	// Design behavior as Verilog code
	
endmodule

  

Il est illégal d'utiliser le même nom pour plusieurs ports.

  
  
	input  aport;         // First declaration - valid
	input  aport;         // Error - already declared
	output aport;         // Error - already declared

  

Ports signés

Le signed L'attribut peut être attaché à une déclaration de port ou à une déclaration net/reg ou aux deux. Les réseaux implicites sont par défaut non signés .

  
  
module ( input      a, 
                    b,
         output     c);
		 
	// ports a, b, and c are by default unsigned
endmodule

  

Si la déclaration net/reg a un signed attribut, l'autre sera également considéré comme signé.

  
  
	module ( input signed a, b,
	         output c);
		wire a, b;          // a, b are signed from port declaration
		reg signed c;       // c is signed from reg declaration
	endmodule

  

Variantes de ports

Verilog 1995

Verilog a subi quelques révisions et la version originale IEEE en 1995 avait la manière suivante pour la déclaration de port. Ici, la déclaration du module devait d'abord répertorier les noms des ports entre crochets, puis la direction de ces ports définis ultérieurement dans le corps du module.

  
  	
module test (a, b, c);
	
	input 	[7:0] a;            // inputs "a" and "b" are wires
	input 	[7:0] b;  
	output 	[7:0] c; 			// output "c" by default is a wire
	
	// Still, you can declare them again as wires to avoid confusion
	wire 	[7:0] a;
	wire 	[7:0] b;
	wire 	[7:0] c;
endmodule
	
	
module test (a, b, c);
	
	input  [7:0] a, b;
	output [7:0] c;           // By default c is of type wire
	
	// port "c" is changed to a reg type
	reg    [7:0] c;           
endmodule
  

Verilog 2001 et versions ultérieures

La dénomination des ports de style ANSI-C a été introduite en 2001 et permettait de spécifier le type dans la liste des ports.

  
  
module test ( input [7:0]	a,
                            b, 		// "b" is considered an 8-bit input
              output [7:0]  c);
			  
	// Design content			  
endmodule

module test ( input wire [7:0]	a, 	
              input wire [7:0]  b, 		
              output reg [7:0]  c);
			  
	// Design content
endmodule

  

Si une déclaration de port inclut un type net ou variable, alors ce port est considéré comme complètement déclaré. Il est illégal de redéclarer le même port dans une déclaration de type net ou variable.

  
  
module test ( input      [7:0] a,       // a, e are implicitly declared of type wire
	          output reg [7:0] e );

   wire signed [7:0] a;     // illegal - declaration of a is already complete -> simulator dependent
   wire        [7:0] e;     // illegal - declaration of e is already complete
   
   // Rest of the design code
endmodule

  

Si la déclaration de port n'inclut pas de type net ou variable, le port peut être déclaré à nouveau dans une déclaration de type net ou variable.

  
  
module test ( input      [7:0] a,
              output     [7:0] e);
	              
     reg [7:0] e;              // Okay - net_type was not declared before
     
     // Rest of the design code
endmodule

  

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. Générateur d'horloge Verilog
  8. Fonctions mathématiques Verilog
  9. Format d'heure Verilog