SystemVerilog 기반 Glitch-free Clock Divider 설계 가이드
⚡ Glitch-free Clock Divider 설계 완전 가이드 — FPGA/ASIC 클락 분주기의 핵심 디지털 회로 설계 | SystemVerilog | FPGA 클럭 관리 | RTL 설계 기법 FPGA나 ASIC 설계에서 클락 분주기(Clock Divider) 는 거의 모든 프로젝트에 빠짐없이 등장하는 핵심 컴포넌트입니다. 하지만 단순히 카운터로 클락을 나누면 글리치(Glitch) 라는 치명적인 노이즈가 발생하여 시스템 전체의 타이밍 안정성을 무너뜨릴 수 있습니다. 이 글에서는 Glitch-free Clock Divider 의 설계 원리부터 실무 적용까지, 실제 합성 가능한 SystemVerilog 코드와 함께 깊이 있게 다룹니다. 📌 이 글의 핵심: 글리치가 왜 위험한지, 이를 방지하는 3가지 설계 기법, 그리고 짝수/홀수 분주를 모두 지원하는 50% Duty Cycle 분주기 RTL 코드를 제공합니다. 🔧 1. 클락 분주기 — 기본 원리부터 짚고 가자 ▶ 카운터 기반 분주의 기본 동작 가장 직관적인 분주 방식은 카운터 를 사용하는 것입니다. 예를 들어 4분주를 구현하고 싶다면, 소스 클락이 2번 뛸 때마다 출력 상태를 반전시키면 됩니다. 구현이 간단하고 이해하기 쉽다는 장점이 있지만, 이 과정에서 조합 논리(Combinational Logic) 의 게이트별 전파 지연 시간(Propagation Delay) 차이로 인해 아주 짧은 시간 동안 잘못된 값이 출력되는 글리치 가 발생할 수 있습니다. ⚠️ 글리치(Glitch)란? 조합 회로에서 입력이 동시에 변할 때, 각 경로의 지연 차이로 인해 최종 출력이 안정되기 전에 순간적으로 잘못된 값이 나타나는 현상입니다. 이것이 클락 라인에 발생하면 하위 회로가 '가짜 클락 에지'로 인식하여 심각한 오동작을 일으킵니다. ▶ 심화: Clock Skew와 Duty Cycle 이해 🕐 Clock Skew — 클락 신호가 서로 다른 플립플롭에 도달하는...