Hum t time baad abhi bhi metastable rehne ki probability first principles se derive karte hain.
Step 1 — Resolving loop ko model karo.
Ek flip-flop ka output stage cross-coupled inverters ki ek pair hai: ek loop jisme gain A>1 hai aur ek node capacitance C / resistance R hai, jo time constant τ=RC/(A−1) deta hai.
Yeh step kyun? Regenerative loop kisi bhi tiny imbalance v ko metastable point se exponentially amplify karta hai — yahi eventually state resolve karta hai.
Step 2 — Exponential departure.
Balance point ke paas voltage deviation is tarah badhti hai:
v(t)=v0et/τ.Yeh step kyun? Positive feedback ⇒ growth exponential hai, aur τ speed set karta hai. Valid logic level VL tak pahunchne ke liye v(t)≥VL chahiye, yaani resolution time t=τln(VL/v0).
Step 3 — Chhota v0 kitna likely hai?
Initial imbalance v0 is par depend karta hai ki data edge sampling instant ke kitni close aayi. Ek tiny window Δt ke andar aana uniformly likely hai, aur v0∝Δt. Flip-flop ke per clock metastable window mein enter karne ka chance hai:
Penter=T0⋅fclk⋅fdata,
jahan T0 device ka "susceptibility window" constant hai.
Yeh step kyun? Ek clock edge (rate fclk) aur ek data change (rate fdata) dono ko nearly coincide karna hoga; near-coincidence ki probability dono rates aur window width T0 ke saath scale hoti hai.
Step 4 — Combine karo: slack t ke baad abhi bhi metastable rehne ki probability.P(fail)=T0fclkfdatae−t/τYeh step kyun?∝T0fclkfdata probability se enter karo; time t tak survive karo e−t/τ probability se (Step 2 se, zyada resolving time ⇒ abhi bhi stuck rehne ki exponentially kam probability).
Kaise kaam karta hai: Agar FF1 metastable ho jaata hai, toh FF2 ke dekhne se pehle settle hone ke liye almost poora clock period milta hai. Ek bada tr exponential etr/τ mein plug karo toh MTBF years/centuries tak blow up ho jaata hai. Teesra FF add karna ek aur poora period add karta hai → ek aur exponential factor.
Recall Feynman: 12-saal ke bachche ko explain karo
Socho ek light switch hai jise ON ya OFF flick kiya ja sakta hai. Agar aap ise super gently exact middle mein tap karo, toh yeh halfway stuck ho sakta hai — light weirdly flicker karti hai aur aap bata nahi sakte ki on hai ya off. Woh "middle mein stuck rehna" hi metastability hai. Hum halfway-tap ko tab nahi rok sakte jab koi ise random time par flip karta hai. Isliye hum wait karte hain: pehle wale ke baad ek doosra switch lagate hain jo kuch time baad pehle wala copy karta hai. Tab tak pehla switch almost hamesha puri tarah ON ya OFF ho chuka hota hai, toh doosra switch ek clean answer copy karta hai. Zyada wait karo (zyada switches) = almost kabhi galat nahi.
Ek temporary knife-edge state jahan flip-flop output valid logic levels ke beech baith jaata hai aur resolution time unbounded (probabilistic) hota hai, jo setup/hold violation se hoti hai.
Flip-flop metastability mein kyun jaata hai?
Clock edge ke around setup/hold window ke andar data change, typically ek asynchronous / cross-clock-domain signal se.
MTBF formula likhо.
MTBF=T0fclkfdataetr/τ
MTBF resolution time tr ke saath exponentially kyun badhta hai?
Regenerative loop imbalance ko et/τ ki tarah drive karta hai, toh abhi bhi metastable rehne ki probability e−tr/τ ki tarah girती hai; reciprocal (MTBF) etr/τ ki tarah badhta hai.
τ physically kya hai?
Flip-flop ka regeneration time constant τ=RC/(A−1) cross-coupled inverter loop se; chhota τ zyada jaldi resolve karta hai.
Two-FF synchronizer kaise help karta hai?
Yeh FF1 ko almost poora ek clock period (tr=Tclk−tsu−tpd) deta hai FF2 ke sample karne se pehle resolve hone ke liye, propagated failures ko astronomically rare banata hai.
Kya synchronizer metastability eliminate karta hai?
Nahi — FF1 abhi bhi metastable ho sakta hai; yeh sirf downstream logic tak pahunchne ki probability ko negligibly small (huge MTBF) banata hai.
Faster clocks metastability ko kyun worse banate hain?
Zyada fclk failure prefactor badhata hai AUR tr ghataata hai, aur MTBF ∝etr/τ rapidly collapse ho jaata hai.
Fan-out se pehle signal ko sirf ek baar synchronize kyun karo?
Same async edge par do alag synchronizers alag values par resolve ho sakte hain, inconsistent state create karte hain.
2-FF synchronizer ke liye resolution-time expression do.