LogicLab jednička je rozsah, ne číslo

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

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.

sekundadenroksto letstáří vesmíru10^16,0 let1 obvod10^45,0 let2 obvody10^73,9 let3 obvody10^102,9 let4 obvodystřední doba mezi selhánímijeden obvod navíc násobí MTBF 10^29,0×na usazení je 9,50 ns při τ = 150 ps
Čtyři délky synchronizačního řetězce proti vodorovným čarám, které si člověk umí představit. Zvyš τ na 500 ps a sleduj, jak se všechny sloupce propadnou.

Vzorec, který je exponenciální

MTBF = et/τ / ( T0 · fhodiny · fdata )t je čas, který má obvod na usazení

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

  1. 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.
  2. 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í.
  3. 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í.

Vzorce v této kapitole

MTBF — střední doba mezi selháními
MTBF = e^(t/τ)/(T_0·f_c·f_d) [s] τ a T₀ z katalogového listu