728x90
[Metastability]
Metastability는 디지털 시스템에서 비동기 신호 또는 클럭 도메인 간 신호가 전송될 때,
FlipFlop의 출력이 불안정하거나 예측 불가능한 상태에 빠지는 현상을 의미함.
- Reason
- 플립플롭의 setup time과 hold time 조건이 충족되지 않을 때 발생.
- 클럭 도메인 간 데이터 전송에서 비동기 신호로 인해 타이밍 불확실성이 생김.
- Result
- 플립플롭 출력이 안정된 논리 상태(0 또는 1)로 수렴하지 못하고
중간 전압 상태를 유지하거나, 불확실한 시간 동안 흔들림. - 신호가 다음 단계의 논리 회로에 전파되면 오동작 가능.
- 플립플롭 출력이 안정된 논리 상태(0 또는 1)로 수렴하지 못하고
- Resolution Time
- 메타스테이블 상태에서 안정된 상태로 전환되기까지 필요한 시간.
- 설계 상에서는 이를 최소화하도록 **MTBF (Mean Time Between Failures)**를
계산하여 신뢰성 평가
[Trouble]
- 데이터 손상: 불안정한 값이 다음 회로로 전달되면서 잘못된 연산이 발생.
- 신뢰성 저하: 예측 불가능한 동작으로 인해 전체 시스템의 성능에 영향을 미침.
- 하드웨어 오동작: 특정 조건에서 치명적인 오류 발생 가능.
[Solution]
- 동기화 회로 설계
- 2단 또는 3단 플립플롭 체인
: 데이터를 안정화시키기 위해 여러 단계로 CDC 처리.
- 2단 또는 3단 플립플롭 체인
- FIFO (First In First Out) 메모리 사용
- 클럭 도메인 간 데이터 버퍼링 및 동기화를 보장.
- Gray Code 사용
- 데이터 전송 시 비트 변화를 최소화하여 메타스테이블리티 위험 감소.
- 타이밍 여유 제공
- 클럭 주파수와 신호 타이밍을 조정하여 setup/hold time 조건을 만족.
- MTBF 계산 및 검증
- 시스템의 신뢰성을 수치화하여 메타스테이블리티로 인한 오류를 평가.
- 시스템의 신뢰성을 수치화하여 메타스테이블리티로 인한 오류를 평가.
[Example]
1. DFF x2
module synchronizer (
input async_signal , // 비동기 입력
input clk , // 클럭 신호
output reg sync_signal // 동기화된 출력
);
reg stage1;
always @(posedge clk)
begin
stage1 <= async_signal; // 1단계
sync_signal <= stage1 ; // 2단계
end
endmodule
2. FIFO를 활용한 CDC
module fifo_sync(
input wire [7:0] data_in, // 입력 데이터
input wire wr_clk, // 쓰기 클럭
input wire rd_clk, // 읽기 클럭
output wire [7:0] data_out // 출력 데이터
);
// FIFO 메모리 및 동기화 로직 구현
endmodule
728x90
'# Semiconductor > - Tech Note' 카테고리의 다른 글
[ASIC] False path vs Async path (0) | 2024.12.13 |
---|