산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 포트

포트는 특정 모듈에 대한 입력 및 출력 역할을 하는 신호 세트이며 모듈과 통신하는 기본 방법입니다. 모듈을 PCB에 배치된 가공된 칩으로 생각하면 칩과 통신하는 유일한 방법은 핀을 통해서라는 것이 매우 분명해집니다. 포트는 핀과 같으며 설계에서 외부 세계와 신호를 주고받는 데 사용됩니다.

<노스크립트> verilog-port

포트 유형

포트 설명
입력 디자인 모듈은 input을 사용하여 외부에서만 값을 받을 수 있습니다. 포트
출력 디자인 모듈은 output을 사용하여 외부로 값을 보낼 수만 있습니다. 포트
인아웃 디자인 모듈은 inout를 사용하여 값을 보내거나 받을 수 있습니다. 포트

포트는 기본적으로 wire 유형의 네트로 간주됩니다. .

구문

inout로 선언된 포트 입력 및 출력 모두로 작동할 수 있습니다.

  
  
	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

  

예시

아래 표시된 코드에는 세 개의 input가 있습니다. 포트, 하나의 output 포트 및 하나의 inout 포트.

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

  

동일한 이름을 사용하는 것은 불법입니다. 다중 포트용.

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

  

서명된 포트

signed 속성은 포트 선언이나 net/reg 선언 또는 둘 다에 첨부될 수 있습니다. 암시적 네트는 기본적으로 서명되지 않음입니다. .

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

  

net/reg 선언에 signed이 있는 경우 속성이면 다른 쪽도 서명된 것으로 간주됩니다.

  
  
	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

  

포트 변형

베릴로그 1995

Verilog는 몇 번의 수정을 거쳤고 1995년의 원래 IEEE 버전은 다음과 같은 포트 선언 방식을 가지고 있었습니다. 여기서 모듈 선언은 먼저 대괄호 안에 포트 이름을 나열한 다음 나중에 모듈 본문 내에서 정의된 해당 포트의 방향을 나열해야 했습니다.

  
  	
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 이후

ANSI-C 스타일의 포트 이름 지정은 2001년에 도입되었으며 포트 목록 내에서 유형을 지정할 수 있게 되었습니다.

  
  
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

  

포트 선언에 네트 또는 변수 유형이 포함된 경우 해당 포트는 완전히 선언된 것으로 간주됩니다. net 또는 변수 유형 선언에서 동일한 포트를 다시 선언하는 것은 불법입니다.

  
  
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

  

포트 선언에 net 또는 변수 형식이 포함되지 않은 경우 net 또는 변수 형식 선언에서 다시 포트를 선언할 수 있습니다.

  
  
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 튜토리얼
  2. Verilog 연결
  3. Verilog 할당
  4. Verilog 차단 및 비 차단
  5. Verilog 기능
  6. Verilog 작업
  7. Verilog 클록 생성기
  8. Verilog 수학 함수
  9. Verilog 시간 형식
  10. Verilog 타임스케일 범위