Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

Verilog-Ports

Ports sind eine Reihe von Signalen, die als Ein- und Ausgänge für ein bestimmtes Modul fungieren und die primäre Art der Kommunikation mit ihm darstellen. Stellen Sie sich ein Modul als einen vorgefertigten Chip vor, der auf einer Leiterplatte platziert ist, und es wird ziemlich offensichtlich, dass die einzige Möglichkeit, mit dem Chip zu kommunizieren, über seine Pins führt. Ports sind wie Stifte und werden vom Design verwendet, um Signale von der Außenwelt zu senden und zu empfangen.

Porttypen

Port Beschreibung
Eingabe Das Designmodul kann nur mit seinem input Werte von außen empfangen Häfen
Ausgabe Das Designmodul kann nur mit seinem output Werte nach außen senden Häfen
Ein Ausgang Das Designmodul kann mit seinem inout Werte entweder senden oder empfangen Häfen

Ports werden standardmäßig als Netze vom Typ wire betrachtet .

Syntax

Als inout deklarierte Ports kann sowohl als Eingang als auch als Ausgang fungieren.

  
  
	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

  

Beispiel

Im unten gezeigten Code gibt es drei input Ports, ein output Port und einmal inout Hafen.

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

  

Es ist illegal, denselben Namen zu verwenden für mehrere Ports.

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

  

Signierte Ports

Die signed Das Attribut kann an eine Port-Deklaration oder eine net/reg-Deklaration oder beides angehängt werden. Implizite Netze sind standardmäßig unsigned .

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

  

Wenn entweder die net/reg-Deklaration einen signed hat Attribut, dann gilt auch das andere als signiert.

  
  
	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

  

Portvariationen

Verilog 1995

Verilog wurde einigen Überarbeitungen unterzogen und die ursprüngliche IEEE-Version von 1995 hatte die folgende Art der Portdeklaration. Hier musste die Moduldeklaration zuerst die Namen der Ports in den Klammern auflisten und dann die Richtung dieser Ports, die später im Hauptteil des Moduls definiert wurden.

  
  	
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 ab 2001

Port-Benennung im ANSI-C-Stil wurde 2001 eingeführt und ermöglichte die Angabe des Typs innerhalb der Port-Liste.

  
  
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

  

Wenn eine Portdeklaration einen Netz- oder Variablentyp enthält, wird dieser Port als vollständig deklariert betrachtet. Es ist illegal, denselben Port in einer Netz- oder Variablentypdeklaration erneut zu deklarieren.

  
  
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

  

Wenn die Portdeklaration keinen Netz- oder Variablentyp enthält, kann der Port erneut in einer Netz- oder Variablentypdeklaration deklariert werden.

  
  
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. Verilog-Tutorial
  2. Verilog-Verkettung
  3. Verilog-Aufgaben
  4. Verilog-Blockierung und Nicht-Blockierung
  5. Verilog-Funktionen
  6. Verilog-Aufgabe
  7. Verilog-Taktgenerator
  8. Verilog Math-Funktionen
  9. Verilog-Zeitformat
  10. Verilog-Zeitskalenumfang