목적
- 입력 신호들(A, B, C)을 조합 논리로 처리한 결과를 클록 동기 방식으로 저장하고, 이를 조건부로 다음 단계에 전달하는 플립플롭 기반의 순차 논리 회로를 모듈화하여 설계하는 것.
모듈 분할의 목적
- 복잡도 감소 (Reduce complexity)
→ 큰 회로를 작은 단위로 나눠 설계를 쉽게 만들기 위함
- 재사용성 향상 (Enhance reusability)
→ 동일한 모듈을 여러 설계에 재사용 가능
- 디버깅 및 유지보수 용이 (Improve maintainability & debugging)
→ 오류를 쉽게 찾고 수정하기 쉬움
- 계층적 설계 적용 (Enable hierarchical design)
→ 상위 시스템을 하위 블록으로 나눠 체계적으로 구성
- 협업 효율 향상 (Facilitate team-based development)
→ 여러 명이 동시에 각 모듈을 맡아 개발 가능
예제 문제
하위 모듈
stage 1
module stage1 ( A, B, C, CLK, FF1);
input A, B, C, CLK ;
output reg FF1;
always @(posedge CLK)
FF1 <= (A & B ) ^ C;
endmodule
stage 2
module stage2 ( FF1, A, CLK, RST, FF2);
input FF1, A, CLK, RST;
output reg FF2;
always @(posedge CLK or negedge RST) begin
if(!RST)FF2 <= 0;
else if (A) FF2 <= FF1;
end
endmodule
상위 top 모듈
module top ( A, B, C, CLK, RST, FF2);
input A, B, C, CLK, RST;
output FF2;
wire go;
stage1 U1(.A(A), .B(B), .C(C), .CLK(CLK), .FF1(go));
stage2 U2(.FF1(go), .A(A), .CLK(CLK), .RST(RST), .FF2(FF2));
endmodule
Schematic