모듈 구조
Coddy Verilog 여정의 기초 섹션에 포함된 레슨 — 90개 중 30번째.
모듈(Module)은 Verilog의 기본 구성 요소입니다. 모든 설계는 서로 연결되어 더 큰 시스템을 형성하는 모듈들로 구축됩니다.
모듈(module)은 다음과 같은 요소를 가진 하드웨어 구성 요소입니다:
- 이름
- 입력 (들어오는 신호)
- 출력 (나가는 신호)
- 내부 로직 (모듈이 수행하는 작업)
모듈을 핀과 내부 회로를 가진 칩으로 생각해 보세요.
기본 모듈 구조
모든 모듈은 다음과 같은 구조를 따릅니다:
module module_name (
input signals,
output signals
);
// 내부 선언 (wires, regs 등)
// 로직 (assign statements, always blocks 등)
endmodule모듈의 구성 요소
| 부분 | 목적 |
|---|---|
module 키워드 | 모듈 정의 시작 |
module_name | 모듈 이름 |
( ) | 입력 및 출력 포트 목록 |
input / output | 포트 방향 선언 |
| 모듈 본문 | 내부 로직 및 연결 |
endmodule | 모듈 정의 종료 |
간단한 Module 예제
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodule이 모듈은 다음과 같습니다:
- 이름이
and_gate입니다 - 두 개의 입력(
a,b)을 가집니다 - 한 개의 출력(
c)을 가집니다 - 로직을 정의하는 한 개의
assign문을 포함합니다
Module 구조에 대한 규칙
- 파일당 하나의 module을 두는 것이 일반적입니다
- Module name은 해당 기능을 설명해야 합니다
- 포트는 이름 뒤의 괄호 사이에 나열됩니다
- Inputs는 항상
input입니다 (내부에 쓸 수 없음) - Outputs는
output입니다 (reg또는wire가 될 수 있음) <strong>endmodule</strong>로 모듈을 닫아야 합니다
챌린지
빈칸을 채워 이 모듈을 완성하세요.
해야 할 일:
my_and모듈 이름을 추가하세요.x에 대한input을 추가하세요.y에 대한input을 추가하세요.z에 대한output을 추가하세요.assign을 사용하여 내부 로직을 추가하세요.
직접 해보기
module ______ ( // 모듈 이름 추가
input x, // 입력 추가
input y, // 입력 추가
output z // 출력 추가
);
// 여기에 assign 문 추가 (z = x & y)
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.