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

Verilog 포트 완전 정복: 입력, 출력, 인아웃, 포트 선언 스타일

포트는 모듈과 외부 세상을 연결하는 핀(Pin) 역할을 합니다. 모듈을 PCB 위 칩으로 비유하면 포트는 패키지 핀과 같습니다.

포트 방향 3가지

포트방향설명
input외부 → 내부모듈이 외부에서 값만 수신
output내부 → 외부모듈이 외부로 값만 송신
inout양방향양방향 버스 등에서 송수신 모두 가능
포트 기본 타입은 wire (넷)입니다.

포트 선언 문법

input  [net_type] [range] port_names;
inout  [net_type] [range] port_names;
output [net_type] [range] port_names;        // wire 구동 출력
output [var_type] [range] port_names;        // reg 변수 구동 출력 (프로시저럴 블록에서 사용)

예시

module my_design (
    input  wire       clk,
    input  wire       en,
    input  wire       rw,
    inout  wire [15:0] data,
    output reg        int
);
// 설계 동작 기술
endmodule

동일 이름으로 다중 포트 선언 불가.

부호 있는 포트 (Signed Ports)

module test (input signed a, b, output c);
    wire a, b;      // 포트 선언에서 signed → 넷도 signed
    reg  signed c;  // 레그 선언에서 signed
endmodule

포트 선언 스타일 변천

Verilog-1995 (구 스타일)

모듈 헤더에 포트 이름만 나열, 본문에서 방향/타입 선언.

module test (a, b, c);
    input  [7:0] a, b;
    output [7:0] c;  // 기본 wire
    wire   [7:0] a, b, c;  // 재선언으로 타입 명시 (혼동 방지)
    // 또는 output을 reg로 변경
    reg    [7:0] c;
endmodule

Verilog-2001 이후 (ANSI C 스타일) — 권장

포트 리스트에 방향·타입·범위 모두 명시.

module test (
    input  wire [7:0] a,
    input  wire [7:0] b,
    output reg  [7:0] c
);
// 본문에서 포트 재선언 불필요 (이미 완전 선언됨)
endmodule
ANSI 스타일에서 포트 선언에 타입이 포함되면 본문에서 재선언 불가 (시뮬레이터 의존적 에러). 타입 미포함 시 본문에서 선언 가능.

포트 폭 불일치 연결

서로 다른 벡터 폭의 포트 연결 시 작은 쪽 폭이 우선되며, 큰 쪽 상위 비트는 무시됩니다.

포트 타입 제약 요약

포트 방향허용 타입비고
inputwire (기본), 명시적 wirereg 불가 (외부에서 지속 구동)
inoutwire (기본), tri 등 넷 타입reg 불가
outputwire, reg, wand 등reg는 프로시저럴 블록에서만 할당 가능

verilog

  1. 버릴로그(Verilog) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  2. Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드
  3. Verilog 할당문 이해: 유형, 문법, 모범 사례
  4. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  5. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  6. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  7. Verilog 클럭 생성기: 설계 및 구현 가이드
  8. Verilog 수학 함수 마스터하기: 효율적인 하드웨어 설계를 위한 활용
  9. Verilog $timeformat 마스터하기: 정밀도 및 표시 제어
  10. 모든 범위에서 Verilog Timescale 이해 및 출력하기