デジタル回路のメタステーブル状態を見てみる

概要

デジタル回路のメタステーブル状態を実際に観測してみました。

デジタル回路で使用されるフリップフロップへのデータ入力とクロック入力のセットアップホールド規定を守らないとフリップフロップに保持される信号出力が不安定になることは「メタステーブル状態」として知られています。

話には聞いたことがありましたが、実際に見たことはなかったので実験してみました。

 

f:id:kazu_12312:20210906211442p:plain

メタステーブル発生時の波形

実験回路

実験回路を下記に示します。

AnalogDiscovery2から5MHz、水晶モジュールから25MHzを出力し、これをフリップフロップに入力します。

フリップフロップ東芝の74LCX574FTを使用しました。

AnalogDiscovery2と水晶モジュールは同期していないためほっておくと位相がどんどんずれていきます。そうして少しずつ位相がずれていくと、時々セットアップホールド違反が発生する波形が入力されるはずです。

メタステーブル発生時の波形をオシロスコープのパルス幅トリガで捉えて重ね書きすることによって、メタステーブル状態発生時の波形を観測します。

f:id:kazu_12312:20210906221632p:plain

実験回路図

f:id:kazu_12312:20210906211506p:plain

メタステーブル観測用の実験回路

実験結果

実験結果の波形を下記に示します。

CH1,CH2,CH3がそれぞれフリップフロップのクロック入力、データ入力、データ出力端子の波形です。

下記波形を見ると、クロックの立ち上がりエッジの直後の波形に不自然なエッジがあることがわかります。

通常、フリップフロップはクロックエッジでデータ入力を取り込みデータ出力端子に出力するので、クロックエッジの直後は出力がHighかLowになるはずです。しかし今回の観測波形を見ると、クロックエッジの直後に出力が「一度Lowになってから7ns後にHighになる」という通常とは異なる動作をすることが観測できました。

どうやらメタステーブル状態らしき波形が観測できたようです。

f:id:kazu_12312:20210906215316p:plain

メタステーブル状態を観測した波形

考察

今回の実験で一応はメタステーブル状態らしき波形が観測できましたが、実験開始当初に想定していたような「長時間波形が不確定になる」という現象は観測できませんでした。

疑問に思って今回使用したフリップフロップのデータシートを見てみると疑問が解決しました。このフリップフロップにはメタステーブル用の対策回路が入っているのかもしれません。

理由は下記です。

 

下図より、データシートの伝搬遅延特性(クロックが入力されてからデータ出力が確定するまでの時間)は最大で8.5nsと規定されています。

伝搬遅延の間の時間は出力が確定しないものとされています。

今回はクロックエッジから7nsの間出力波形が不安定になる波形が観測されましたが、データシートによるとクロックエッジから8.5nsの間は出力は不定になると読み取ることもできます。

よって、今回観測された7nsのおかしな波形というのはある意味でデータシートの規定範囲内であるということができます。

セットアップホールドタイムを違反するような波形を入力しても出力波形がデータシートの規定範囲内に収まったということは、何らかの対策回路が入っているのではないでしょうか。

f:id:kazu_12312:20210906215953p:plain

今回使用したフリップフロップのデータシート