Metastabilita a synchronizátor
Klopný obvod, kterému se data změní přesně v okamžiku hrany, se nerozhodne. Nezůstane na jedničce ani na nule — zůstane někde mezi, a jak dlouho tam vydrží, je náhoda. Není to porucha ani vada výroby; je to důsledek toho, že rozhodovací obvod je vratká rovnováha a existuje poloha, ve které se nechce překlopit ani na jednu stranu.
Vzorec, který je exponenciální
Ve jmenovateli jsou příležitosti — kolikrát za sekundu se hrana dat potká s hranou hodin. V čitateli je pravděpodobnost, že se nerozhodne ještě po čase t, a ta klesá exponenciálně. Každý další klopný obvod v řetězci daruje celou periodu hodin navíc, takže násobí MTBF faktorem eT/τ — při 100 MHz a τ = 150 ps je to 1028.
Tři věci, které z toho plynou, a dvě z nich jsou proti zvyku
- Bezpečně to nejde udělat, jen nepravděpodobně. Neexistuje délka řetězce, při které vyjde nula. Metastabilita je jediná vada v téhle labce, která se nedá odstranit — jen odsunout za dobu, po kterou to zařízení bude existovat.
- Při 100 MHz stačí jeden klopný obvod. Model to říká jasně: 1016 let. Lidové pravidlo „vždycky dva" tedy neplatí z toho důvodu, který se obvykle uvádí.
- A přesto se dva používají — a je to správně. Ne kvůli 100 MHz, ale protože τ v tom vzorci nikdo nezná. Není v katalogu, mění se s napětím i teplotou, a ztrojnásobení τ stojí osmnáct řádů: z 1016 let se stane pár dní. Druhý klopný obvod není rituál — je to pojistka proti neznalosti jednoho čísla.
A při vysokých hodinách nestačí ani dva. Při 400 MHz a τ = 150 ps vychází jeden obvod na patnáct sekund, dva na osm let a tři na sto miliónů let. Osm let zní hezky, dokud si člověk nespočítá, že u tisíce vyrobených kusů to je jedno selhání každé tři dny. Počet stupňů je návrhové rozhodnutí, ne zvyk — a přesně tenhle výpočet ho má rozhodnout.
Kde to v robotu potká
Všude, kde signál přijde odjinud, než jsou hodiny, které ho čtou: tlačítko, koncový spínač, enkodér, přerušení z jiného čipu, data z jiné sběrnice, signál z druhé napájecí domény. Každý takový signál patří přes synchronizátor, a je to jeden z mála případů, kdy se dvě součástky navíc obhájí jednou nerovností.