準安定性とは何ですか?


15

Wikipediaの記事「Metastability in electronics」から

電子機器の準安定性とは、デジタル電子システムが不安定な平衡状態または準安定状態で無制限に持続する能力です。準安定状態では、適切な回路動作に必要な時間内に、回路が安定した「0」または「1」の論理レベルに落ち着かない場合があります。その結果、回路は予測できない方法で動作する可能性があり、システム障害につながる可能性があります。

それは良い定義のように思えますが、アプリケーションではどういう意味ですか?

エレクトロニクス設計者の観点から、これが発生する可能性のある例と、このタイプの障害をどこで懸念する必要がありますか?

より実用的な定義または適用された定義はありますか?


2
Leslie Lamport(彼は$ \ LaTeX $の名声)がこの論文でメタスタビリティの良い説明を書きました:research.microsoft.com/users/lamport/pubs/buridan.pdf
markrages

@markrages Brilliant。これは、落下猫とバターを塗ったトーストでも起こります。
さびた

回答:


15

クイックアンサー:フリップフロップの入力のセットアップおよびホールドタイムに違反した場合、出力はしばらくの間予測不能になります。その予測不能な出力は、メタ安定(または準安定)と呼ばれます。

長い答え:出力が予測不能であるとき、私はそれが予測不可能であることを意味します。高くても、低くても、その中間のどこかに、または振動する可能性があります。この準安定期間の後、出力は高または​​低になりますが、発生するまでどの方向に進むかはわかりません。

ただし、予測不可能な時間はある程度予測可能です。準安定期間の長さを決定する2つの主な要因があります。フリップフロップの速度と、タイミングを取得する「エッジに近い」方法です。

長い時間を持つ可能性はゼロではありませんが、ほとんどの準安定時間は非常に短いです。理論的には、秒単位の準安定時間を持つことができますが、その発生の確率は非常にまれです。フリップフロップの速度が上がると、平均準安定時間が減少します。他のすべての条件は同じです。

フリップフロップには、クロックエッジと比較して「想像上の」時間があります。ここでは、準安定性の問題を最も受けやすくなります。まさにそれがいつであるかは、温度、電圧、プロセス、月の満ち欠け、動物の犠牲、あなたが所属する政党などの多くの要因に依存します。その時間がいつでも、データ入力エッジがその時間に近いほど、準安定時間が長くなります。

準安定性に対処する最善の方法は、すべてのロジックを同期化し、セットアップ時間およびホールド時間に違反しないことです。もちろん、これは複雑な回路では困難から不可能です。そのため、メタスタビリティが問題となる可能性のある場所を制限し、それらの場所に対処しようとしています。

通常の方法は、データを「ダブルクロック」することです。つまり、最初の出力に2番目の入力を供給する2つのDフリップフロップが直列に接続されています。最初のフリップフロップが準安定状態になると、2番目のフリップフロップのセットアップ/ホールドタイムに違反する前に準安定期間が終了することが期待されます。実際には、これはかなりうまく機能します。超クリティカルなアプリケーションでは、「トリプルクロック」が行われている可能性があります。


3
犠牲にされた動物のタイプへの依存はありますか?
さびた

11

準安定状態は不安定な平衡状態に似ています。不安定な平衡の一般的な例は、倒立振子です。振り子を垂直位置でバランスできる場合、それは安定した状態です。ただし、レバーをいずれかの側に押すと(気流や地面の振動など)、振り子は垂直位置に戻らず、落下します。通常の振り子とは対照的です。振り子は片側に押されると、最終的に垂直に落ち着きます。

電気システムでは、安定した平衡がストレージ要素を作成するために使用されます。不安定な平衡状態は、状態を簡単に失うため、適切なストレージ要素にはなりませんが、多くの場合、寄生状態として存在します。

一般的なデジタルストレージエレメントは、クロスカップルインバーターのペアです。

Two inverters connected in a loop, output-to-input

記憶素子には2つの安定した状態があり、1つは左側のノードが電源電圧にあり、右側のノードはグランドにあり、もう1つは反対の状態にあります。また、各ノードが中間電圧にある不安定な状態もあります。

不安定な状態がどのように発生するかをよりよく理解するには、インバータの伝達関数を思い出してください。伝達関数のプロットは、特定の入力電圧に対するインバータの出力電圧を示しています。

Inverter transfer function

インバーターは非線形です。非線形回路のおおよその解を得る簡単な方法の1つは、回路特性をプロットすることです。プロットの交点は解、つまり回路のすべてのコンポーネントの電気的特性が満たされるポイントです。通常、これはWikipediaのこのダイオードの例のように、ivプロットで行われます。ただし、インバーターの場合は、vvプロットで行います。プロット上に2番目のインバーター伝達関数を重ねます(2番目のインバーターが後方にあるため、軸を交換しました

バックツーバックインバーターのオーバーレイ伝達関数

プロットには3つの交点があります。1つは(0、Vs)、1つは(Vs、0)、もう1つは(Vs / 2、Vs / 2)です。(Vs / 2、Vs / 2)状態は準安定です。いずれかのノードの小さな摂動の後、回路は(Vs / 2、Vs / 2)に戻るのではなく、ほとんど常に安定状態の1つに落ち着きます。

デュアルインバーター記憶要素に値を書き込む方法は、インバーターよりも強力なドライバーを使用して、ノードの1つを目的の値に強制することです。これを行う一般的な方法の1つは、パストランジスタを使用することです。

パストランジスタを備えた交差結合インバータ

パストランジスタのゲートをクロックに接続すると、Dラッチができます(出力構造は省略しています)。クロックが高い場合、パストランジスタが有効になり、ラッチは透過的になります。入力は出力に直接渡されます。クロックが低い場合、ラッチは前の値を保持します。ラッチがサンプリングする瞬間に準安定性が生じます。ラッチのサンプリング時に入力が安定した高電圧または低電圧である場合、正常に機能します。ただし、ラッチがサンプリングされるときに入力がVs / 2ポイント付近にある場合、ラッチがメタステーブル(Vs / 2、Vs / 2)状態になる可能性があります。一度準安定状態になると、無期限にそこにとどまることができます(ラッチが再度クロックされないと仮定します)が、それは不安定な平衡状態であるため、通常は準安定状態から抜け出すために何かが比較的迅速に発生します。

準安定性を心配するとき

ストレージエレメントが準安定状態になっている場合、少なくともダウンストリームロジックのタイミングバジェットの一部を失っています。ロジックは、準安定状態が解決するまで目的の評価を実行できません。最悪の場合、メタステーブル状態はロジックを介して持続または伝播し、ダウンストリームストレージエレメントもメタステーブルになります。または、関連する複数のストレージエレメントが一貫性のない値をキャプチャします。

適切に設計され機能する同期ロジックには、準安定性に関する問題はありません。クロック周期はロジックの評価時間より長く、すべてのフリップフロップ入力は次のクロックエッジで安定しており(セットアップ要件が満たされている)、すべて有効な値をロードします。

準安定性が懸念される一般的な状況は次のとおりです。

  • フロントパネルのスイッチなどの外部入力、またはいつでも遷移する可能性のあるモニター回路の出力(低電圧、過熱)をサンプリングするロジック。
  • 同期関係を持たない複数のクロックを使用するロジック。これは、特定のクロック要件を持つI / Oインターフェイスでよく発生しますが、チップの異なる部分に異なるパフォーマンス要件がある場合にも内部的に発生します。たとえば、3 GHz CPUのすべてのロジックが実際に3 GHzで実行されているわけではありません。(ただし、CPUのクロックの多くは互いに同期倍数であるため、CPUは良い例ではありません。)

たいていはいい答えですが、言及すべきもう1つのことは、伝播遅延のために、単一の準安定状態ではなく、それらのファミリー全体であり、準安定状態を特定する特定の方法がないということです。3ステート出力(高/低/準安定)の回路を設計し、出力が低になるか、またはその逆になった場合に「高」が報告されないように配置することができますが、出力の保証はありません「高」と「メタスタブル」(「高」になる)間、または「低」と「メタスタブル」(「低」になる)間でバウンスしません。
スーパーキャット

+1これは良いことですが、@ David Kessnerの答えを読んだ後はより意味があります。+2グラフィックス用。
さびた

3

準安定信号とは、任意の長さの任意のパターンで任意に高または低に見える信号です。信号が直接または間接的に複数のゲートに供給される場合、それらのゲートの一部がそれを高く「見る」一方で、他のゲートが低く見える可能性があります。厄介なもの。

単一のクロックを持つシステムの場合、準安定信号は多くの場合、2つのラッチを通過することで処理できます。クロックをゲーティングするとき、より厄介な問題が発生します。(特にRSラッチを使用した)多くの回路があり、準安定性が不可能な場合に素晴らしく機能しますが、準安定性が発生すると、ラントクロックパルスを生成する可能性があります(これにより、ダウンストリームの準安定性が発生する可能性があります)。

ちなみに、準安定性に関する別の重要なポイント:ラッチの伝播時間は、サンプルおよびホールド時間が満たされた場合、出力が新しい値で安定することを示します。セットアップ時間とホールド時間が満たされない場合、ラッチが有効なクロッキングイベントを受信するまで、出力が切り替わるかどうか、または切り替わらないという保証はありません。出力がきれいに切り替わるように「見える」場合でも、自然に切り替わらないという保証はありません。


2

古典的なケースは、同期ラッチのセットアップ/ホールド時間に違反する場合であり、FPGAを設計する際に注意する必要がある問題です(ザイリンクスとアルテラはこれについてのメモを持っていると確信しています)。信号がランダムな時間に到着する可能性がある場合、それをクロックすると、セットアップ/ホールドタイムウィンドウの仕様内で信号が変化しないことを確信できません。発生する可能性があるのは、クロックエッジの後の指定された時間にラッチ出力がハイまたはローになる代わりに、安定状態に落ち着く前にしばらくディザリングすることです。これを防ぐための通常の方法は、レイテンシ要件と準安定性の確率のバランスに応じて、同じクロックまたは遅延クロックまたは位相ずれクロックの2段ラッチを使用することです。これにより、2番目のラッチが安定状態をラッチする前に、最初のラッチ時間が安定します。ちなみに、外部I / O信号は通常CPUクロックと非同期であるため、これはマイクロコントローラーが内部で処理しなければならないものであるため、I / Oポートは問題を回避するためにデュアルラッチ構成を備えていることが多く、ソフトウェアはそれを心配する必要はありません。6502の問題について何年も前に読んでいたあいまいなリコール。セットアップ/ホールド時間の仕様外に変更されたデータのバス読み取りにより、内部ターゲットとして、分岐ターゲットでも次の命令でもないアドレスへの分岐が発生する可能性があります状態が準安定になりました。このビデオはいくつかの例を示しています:6502の問題について何年も前に読んでいたあいまいなリコール。セットアップ/ホールド時間の仕様外に変更されたデータのバス読み取りにより、内部ターゲットとして、分岐ターゲットでも次の命令でもないアドレスへの分岐が発生する可能性があります状態が準安定になりました。このビデオはいくつかの例を示しています:6502の問題について何年も前に読んでいたあいまいなリコール。セットアップ/ホールド時間の仕様外に変更されたデータのバス読み取りにより、内部ターゲットとして、分岐ターゲットでも次の命令でもないアドレスへの分岐が発生する可能性があります状態が準安定になりました。このビデオはいくつかの例を示しています:http://www.youtube.com/watch?v=tKHCwjWMMyg

たとえば、誰かにボールを投げた場合、たとえばボールをキャッチするかドロップするかのどちらかであるため、投げてから一定の時間が経過すると、ボールを保持するかしないかが決まります。しかし、時々、彼らはそれを捕まえるか、落とす前にしばらくじっとするので、彼らの状態は保持もドロップもされません-これは準安定状態です!


今でも趣味として6502ベースのシステムを使用しています。バスデータの準安定性の問題の詳細を知っておくといいでしょう。アキュムレータが$ FFを保持し、$ 00または$ 01のいずれかの値を読み取ると、アキュムレータは可能な値になる可能性があることは確かに想像できます。ただし、ブランチを取得する前に、さらに2つのサイクルが経過し、その間にフラグが2回再ラッチされることが予想されます。その間、準安定状態が続くとは想像できません。
スーパーキャット

これはおそらく20年前に中古品や中古品を聞いたものですが、それは彼らが何をしていたかを完全に知っている人々に由来していました-BBC Microの6502秒プロセッサのTubeインターフェースとステータスの読み取りでしたフラッグスであり、かつてはブルームーンだったが、製品の発売を遅らせるほど頻繁に発生した。パイプラインのさまざまな段階で信号が内部的にラッチされている可能性があるため、必ずしも2サイクル続く必要はありません。また、当時入手可能な最速の6502バリアントである3MHz 65C02 ISTRだったと思います。
mikeselectricstuff

面白い。[ところで、StackExchangeを変更せずに句読点を使用する方法はありますか?]たとえば「ADC 0xD000」の通常の動作では、4番目のサイクルのフェーズ1でアドレスが出力され、フェーズの終わりにデータがラッチされますそのサイクルの2。データは、次のサイクルのフェーズ1でALUに入力されます(これは、次の命令のオペコードフェッチになります)。その後のサイクルがオペランドフェッチになります。その時点でまだ物事が不安定だった場合、システムは溶ける可能性がありますが、動的レジスタが2回再ラッチされるため、それは起こりそうにないでしょう。
スーパーキャット

私が説明できない他の奇妙な振る舞いがあることを知っているので、データバスの準安定性が6502に影響を及ぼすことは不可能だと言いたくありません。たとえば、データバスはクロックのフェーズ2でラッチされ、次のフェーズ1で動作します。したがって、フェーズ2でデータバスが変化しても、最後に安定していれば問題ありません。ただし、いくつかの文書化されていない命令があり、その動作はサイクルの初期部分のデータバスの内容の影響を受けます(フェーズ1でビデオをフェッチするC64やAppleなどのマシンで実証可能)。方法がわかりません
...-supercat

...これらの命令の動作は、実際には初期のデータバスの動作の影響を受けていますが、何らかの奇妙な競合状態であると思われます。オペコードの1つであるIIRCは、LDA#imm、LDX #imm、およびTAXのデコードパターンと一致するため、ALUの出力は入力にマップされます。奇妙な。
スーパーキャット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.