Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Verilog

Portas Verilog


As portas são um conjunto de sinais que atuam como entradas e saídas para um módulo específico e são a principal forma de comunicação com ele. Pense em um módulo como um chip fabricado colocado em um PCB e fica bastante óbvio que a única maneira de se comunicar com o chip é através de seus pinos. As portas são como pinos e são usadas pelo projeto para enviar e receber sinais do mundo exterior.

Tipos de Portas

Porta Descrição
Entrada O módulo de design só pode receber valores de fora usando seu input portas
Saída O módulo de design só pode enviar valores para o exterior usando seu output portas
Entrada O módulo de design pode enviar ou receber valores usando seu inout portas

As portas são consideradas por padrão como redes do tipo wire .

Sintaxe


Portas declaradas como inout pode atuar como entrada e saída.
  
  
	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

  

Exemplo


No código mostrado abaixo, existem três input portas, uma output porta e um inout porta.
  
  
module  my_design ( input wire			clk,
                    input 					en,
                    input 					rw,
                    inout [15:0]	  data,
                    output 					int );
                    
	// Design behavior as Verilog code
	
endmodule

  

É ilegal usar o mesmo nome para várias portas.
  
  
	input  aport;         // First declaration - valid
	input  aport;         // Error - already declared
	output aport;         // Error - already declared

  

Portas assinadas


O signed O atributo pode ser anexado a uma declaração de porta ou a uma declaração net/reg ou a ambas. As redes implícitas são, por padrão, não assinadas .
  
  
module ( input      a, 
                    b,
         output     c);
		 
	// ports a, b, and c are by default unsigned
endmodule

  

Se a declaração net/reg tiver um signed atributo, então o outro também será considerado assinado.
  
  
	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

  

Variações de porta

Verilog 1995


O Verilog passou por algumas revisões e a versão original do IEEE em 1995 tinha a seguinte forma de declaração de porta. Aqui, a declaração do módulo tinha que primeiro listar os nomes das portas dentro dos colchetes e, em seguida, a direção dessas portas definidas posteriormente no corpo do módulo.
  
  	
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 em diante


A nomenclatura de portas no estilo ANSI-C foi introduzida em 2001 e permitiu que o tipo fosse especificado dentro da lista de portas.
  
  
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

  

Se uma declaração de porta incluir um tipo de rede ou variável, essa porta será considerada completamente declarada. É ilegal redeclarar a mesma porta em uma declaração de tipo de rede ou variável.
  
  
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

  

Se a declaração de porta não incluir um tipo de rede ou variável, a porta poderá ser declarada em uma declaração de tipo de rede ou variável novamente.
  
  
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. Tutorial Verilog
  2. Concatenação Verilog
  3. Atribuições Verilog
  4. Verilog Blocking &Non-Blocking
  5. Funções Verilog
  6. Tarefa Verilog
  7. Gerador de Relógio Verilog
  8. Funções matemáticas Verilog
  9. Formato de hora Verilog
  10. Escopo da escala de tempo da Verilog