동기 리셋 vs 비동기 리셋: 타이밍·클럭·해제 시 주의점 비교
둘 다 플립플롭을 정해진 초기값으로 만드는 방식이지만, 리셋이 적용되는 타이밍이 다릅니다. 동기 리셋은 리셋 신호를 다른 데이터와 마찬가지로 클럭 에지에서 받아들입니다. 비동기 리셋은 플립플롭의 리셋 단자를 직접 사용해, 클럭과 관계없이 즉시 적용합니다. 실제 설계에서는 걸 때는 비동기로 즉시 적용하고, 해제만 클럭에 동기화하는 방식이 자주 쓰입니다.
| 비교 항목 | 동기 리셋 | 비동기 리셋 |
|---|---|---|
| 적용되는 타이밍 | 리셋이 유효한 상태에서 클럭 에지가 왔을 때 | 리셋이 유효해진 순간. 클럭을 기다리지 않습니다 |
| 클럭 필요 여부 | 필요. 클럭이 멈춰 있으면 리셋할 수 없습니다 | 불필요. 클럭이 동작하기 전이나 멈춰 있을 때도 적용됩니다 |
| Verilog 작성법 | always @(posedge clk) if (!rst_n) q <= 0; else q <= d; | always @(posedge clk or negedge rst_n) if (!rst_n) q <= 0; else q <= d; |
| 회로 구성 | 데이터 입력 앞에 리셋용 논리를 넣습니다 | 리셋 단자가 달린 플립플롭을 사용합니다 |
| 면적과 데이터 경로 | 데이터 경로에 게이트가 늘어나 그만큼 지연과 면적이 늘어날 수 있습니다 | 셀은 리셋 단자만큼 크지만, 데이터 경로에 논리가 늘지 않습니다 |
| 글리치에 대한 강도 | 강함. 에지 순간 이외의 글리치는 받아들이지 않습니다 | 약함. 리셋 선의 글리치로 잘못 리셋될 수 있습니다 |
| 리셋 펄스 폭 | 적어도 1클럭 주기 이상 유효하게 유지해야 합니다 | 짧은 펄스로도 적용됩니다 |
| 타이밍 분석 | 일반 데이터 입력으로서 셋업과 홀드로 분석할 수 있습니다 | 해제 타이밍(리커버리 시간과 리무벌 시간)을 별도로 확인합니다 |
| 리셋 해제 시 주의점 | 클럭에 동기화되어 있으므로 같은 클럭 영역 안에서는 문제가 잘 생기지 않습니다 | 해제가 클럭 에지에 가까우면 플립플롭마다 해제 사이클이 어긋나거나 준안정 상태가 됩니다. 리셋 동기화 회로로 해제를 클럭에 맞춥니다 |
| 적합한 회로 | 클럭이 항상 동작하는 회로, 리셋 신호에 노이즈가 실리기 쉬운 회로 | 전원을 켜자마자 초기화하고 싶은 회로, 클럭이 멈출 수 있는 회로 |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.