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