모듈 구조
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</code)가 있습니다</li><li data-list-item-id="e2b20722397addf9afc79ef426560f58c">출력 하나(<code>c</code)가 있습니다</li><li data-list-item-id="e5a1af998db3be7e6240faf5735f09167">논리를 정의하는 <code>assign문 하나를 포함합니다
모듈 구조 규칙
- 파일당 모듈 하나가 일반적인 관행입니다
- 모듈 이름은 해당 기능을 설명해야 합니다
- 포트는 이름 뒤 괄호 안에 나열됩니다
- 입력은 항상
input입니다 (내부에 쓸 수 없음) - 출력은
output입니다 (reg또는wire일 수 있음) endmodule로 모듈을 닫아야 합니다
챌린지
누락된 부분을 채워 이 모듈을 완성하세요.
할 일:
- 모듈 이름
my_and을 추가하세요 x에 대한input을 추가하세요y에 대한input을 추가하세요z에 대한output을 추가하세요assign을 사용하여 내부 로직을 추가하세요
직접 해보기
module ______ ( // 모듈 이름 추가
input x, // 입력 추가
input y, // 입력 추가
output z // 출력 추가
);
// 여기에 assign 문 추가 (z = x & y)
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: 온라인 Verilog 컴파일러