1. Verilog 모듈
ㅇ Verilog HDL에서 기본 설계 단위
* 설계 중 여러 번 재사용 (인스턴스화)될 수 있는, 논리 회로 집단
. 다른 설계자가 만들어 놓은 것도 사용 가능
* 결국, 모듈들이 모여서 (서로 연결되고 계층화되어서), 복잡한 설계 결과물이 됨
. 상위 레벨 모듈 또는 디지털 시스템을 구성하게 됨
* 모듈 例) 레지스터,디코더,멀티플렉서 등
. 하위 모듈들을 데이터패스,제어신호를 이용하여 서로 연결함으로써,
. 디지털시스템을 완성해나감
ㅇ 모듈 : module ~ endmodule
2. Verilog 모듈의 구조
ㅇ module 모듈 이름 (포트 목록); // 모듈 선언의 시작 (선언부)
- (몸체부)
ㅇ endmodule // 모듈 선언의 종료
3. Verilog 모듈의 구성
ㅇ 선언부 : 포트,파라미터,레지스터 등을 선언하는 부분
. (포트 목록 상의, 포트들의 방향,비트폭,자료형 등을 선언) : port 선언
.. 포트 목록 (port list) : 모듈과 그 외부 간의 인터페이스 역할을 하는 포트들
.. 포트 모드 (port mode) : 포트의 방향 (입력 input, 출력 output, 양방향 inout)
.. 포트 버스 폭
. (파라미터 선언을 함) : parameter 선언
. (레지스터 선언을 함) : reg 선언
. (요소들 간의 연결을 위해, wire 선언을 함) : wire 선언
ㅇ 몸체부 : 모듈의 기능(데이터흐름), 동작, 구조 들을 표현하는 부분
- (기술하는 방법의 구분)
. 구조적 기술 방법
.. 게이트 수준 기술 (Gate level)
. 기능적 기술 방법
.. 데이터흐름 기술 (Dataflow) : assign (연속적 할당)
.. 동작적 기술 (Behavioral) : always, initial (절차적 할당)
- (주요 포함 가능 항목들)
. aasign 문
. 하위 모듈, 프리미티브의 인스턴트화
. initial, always 문
. function, task의 정의 및 호출
. generate 문
ㅇ 종료부 (endmodule) : 종료를 선언하는 부분
4. Verilog 모듈의 특징
ㅇ 가장 기본적인 설계 단위
ㅇ 한 모듈이 다른 모듈을 포함토록 계층적 구성이 가능
- 단, 모듈 내 모듈을 내포시켜 선언하는 것은 안됨
ㅇ 통상, 각 모듈이 하나의 파일이며, 파일명이 모듈명과 같으며, 파일확장자는 `.v`임
5. 테스트 벤치 모듈
ㅇ 설계된 회로를 시뮬레이션하기 위한 모듈