エッジトリガーがレベルトリガーよりも優先される理由


18

エッジトリガーがレベルトリガーよりも優先される理由を理解しようとしています。私の本では明確に説明されていません。オンラインで検索した後、エッジトリガーはグリッチの影響を受けず、レベルトリガーは敏感であることがわかりました。どういう意味ですか?

また、次のことも理解できません。「クロックがレベルセンシティブである場合、新しいはロジックネットワークを急いで出力を変更できます。これを回避するには、出力をキャプチャして一定に保つために短いパルスが必要です。このような短いパルスを作成するのは簡単ではないため、エッジトリガーを使用します。単一の立ち上がりエッジの期間内に新しい出力が入力に戻るのに十分な時間がないため、フィードバックの問題は解決されます。Qn

出力がレベルトリガーに突入しない理由と、出力を保持するために短いパルスが必要な理由を理解できませんでした。

第二に、フィードバックの問題は、レベルトリガー期間がエッジトリガーに比べて長いため、前者の場合、出力は再び入力にフィードバックされ、クロックがアクティブである限りこれを続けます。フィードバックの問題は何ですか?

しかし、エッジトリガーでどのように解決されますか?立ち下がりまたは立ち上がりの時間が非常に短い場合、出力はどのようにしてすべてのゲートを伝搬できますか?エッジトリガーが適用されると、出力はすべてのゲートを介して伝搬され、次の入力は次のクロックエッジでのみ考慮されるようですか?


1
「エッジトリガーが適用されると、出力はすべてのゲートに伝播され、次の入力は次のクロックエッジでのみ考慮されます」-ブルズアイ!!
WouterヴァンOoijen

回答:


12

エッジは明確に定義された瞬間ですが、レベルトリガーにも明確に定義された瞬間がないと言うのは正しくありません。します。クロックのレベルが低下し、クロック回路への入力がサンプリングされ、入力のそれ以上の変更が許可されなくなる瞬間が明確に定義されています。

レベルトリガーの問題は、クロックレベルが高い間、入力が出力を変更することです。フィードバックがある回路(出力が入力に接続されている)では、レベルが十分に広いため(クロックサイクルの半分)、出力が同じ期間内に入力にフィードバックできるため、レベルトリガーはカオスを引き起こします。

そのため、クロックが低下し、すべてのデバイスが次のレベルまでスナップショットしてその状態を保持するはずの明確な瞬間が発生するまでに、カオスはすでに発生しており、回路は予測不可能な状態にあります。これは受け入れがたい。順序回路では、クロック周期で生成された出力が、クロック周期状態の計算にのみ考慮されるようにします。また、クロックを遅くすることができ、シーケンシャルな回路ブレークが発生しないという素晴らしい特性が必要です。レベルトリガーでは、クロックを遅くすることは効果がありません。クロックを遅くすればするほど、無制限のフィードバックが可能になります。tt+1

不要なフィードバックが発生しないレベルまでレベルを短くする(および、クロック周期を任意に遅くしても「オン」レベルを短く保つ)ことを示唆する最初の明白な解決策。クロックを0から1にパルスし、非常に高速で0に戻すと、クロックデバイスは入力を受け入れますが、出力にはこれらの入力を変更するフィードバックループをレースする十分な時間がありません。これに伴う問題は、狭いパルスは信頼性が低く、基本的にはクロック周波数よりも数桁速い応答を必要とすることです。システムがわずか1 Mhzで動作している場合でも、ナノ秒幅のパルスが必要な場合があります。そのため、1 Mhz向けに設計されたバスを介して、クリーンで鋭く、十分に高いナノ秒幅のパルスを分配するという問題があります。

次に、次の論理ステップは、デバイスにクロックエッジの時間微分として狭いパルスを生成させることです。クロックがあるレベルから別のレベルに遷移するとき、デバイス自体が内部で短いパルスを生成し、入力をサンプリングします。そのパルス自体をクロックバスを介して配信する必要はありません。

したがって、基本的にはすべてが最終的にレベルトリガーされると考えることができます。エッジトリガーは、デバイスがすべての外部フィードバックループよりも高速な非常に細かいレベルのトリガーを作成できるようにするトリックです。 。


また、「有効」信号(レベルトリガークロック)と、空気圧を保持する航空機のドアとを類推することもできます。レベルトリガーは、ドアを開けて空気を逃がすようなものです。ただし、同時に開くことのできない2つ(またはそれ以上)のドアで構成されるエアロックを構築できます。レベルクロックを複数のフェーズに分割すると、これが発生します。

これの最も簡単な例は、マスター/スレーブフリップフロップです。これは、カスケード接続された2つのレベルトリガーDフリップフロップで構成されます。ただし、クロック信号は反転しているため、一方の入力は有効になり、もう一方の入力は無効になります。これはエアロックドアのようなものです。全体として、フリップフロップは決して開かないため、信号は自由に通過できます。フリップフロップの出力から入力にフィードバックがある場合、別のクロックフェーズと交差するため問題はありません。最終結果は、マスタースレーブフリップフロップがエッジトリガー動作を示すことです。マスタースレーブフリップフロップには、レベルトリガーとエッジトリガーの関係について説明することがあるので、勉強すると便利です。


1
レベルに敏感なマルチフェーズクロックは、異なるクロックフェーズでサンプリングされたラッチを通過せずにラッチの出力が入力にフィードバックされない場合に、「カオス」問題を回避します。プロセッサを非同期メモリのようなものと接続する場合、このような設計にはいくつかの利点があります。1つのクロックフェーズのリーディングエッジと次のフェーズのトレーリングエッジの間の時間はアドレスのルーティングと出力に必要な時間に任意に分割できるためですRAMの時間、およびプロセッサのデータ入力のセットアップ時間。
supercat

2
@supercatおなじみの例として、マスター/スレーブフリップフロップはマルチフェーズクロッキングの例と見なされる場合があります。マスターとスレーブは反対の位相にあるため、フィードバックがある場合は同じ状態になります。つまり、異なる位相になります。これを回答に追加して、それを完成させる必要があります。
カズ

2
+1エアロックの例え。このように説明する人は誰もいませんが、完全に理にかなっています。
ajs410

@ ajs410:私が好きなもう一つのアナロジーは、時計仕掛けの脱進機です。振り子は2本のアームに接続されており、それぞれのアームはエスケープメントギアが自由に動くことを許可するか、次に特定の「位相」に達したときにそれをブロックすることができます。適切に操作するには、両アームがギアを回転させる時間がないようにアームを調整する必要があります。その制約がなければ、メカニズムは暴走して制御不能になります。
supercat

2

エッジトリガーは、クロックに適しています。これは、1つの(立ち上がり)クロックエッジに応じてラッチが値を出力し、次の立ち上がりクロックエッジで何をすべきかの計算に使用できるようにするためです。複数のエッジトリガーラッチを使用してカウンターなどの順序回路を構築する場合、可能なすべてのパスについて、伝播時間から受信ラッチのクロックが遅れる量を引いたものであれば、高速と低速のロジックコンポーネントを任意に混在させることができます送信者の受信時間は受信者の保持時間よりも長いことが保証されており、サイクル時間と受信ラッチのクロックが送信者より遅れている量から伝播時間を引いた値が受信者のセットアップ時間よりも長いことが保証されています。

対照的に、エッジトリガーラッチを使用せずに単一入力のパルスをカウントする回路を構築するには、回路の一部の相対速度に関する特定の保証が必要になります。以前は、着信クロック(ClkIn)信号をオーバーラップしないペアクロック信号(Phi1およびPhi2)に変換するのが一般的でした。Phi1は、ClkInが高い場合にtrueであり、保証された最小時間にわたって高い値になっています。ClkInが低い場合、Phi2は高く、最小保証時間の間は低い。ClkInがLowからHighに切り替わると、Phi1がHighになる前にPhi2がLowになります。同様に、高から低に切り替わるとき。2セットのラッチ(Count1とCount2と呼びます)を使用してカウンターを作成できます。Phi1がHighになるたびに、Count1はCount2をラッチします。Phi2がHighになるたびに、Count2がラッチします(Count1 + 1)。Phi1とPhi2の両方が一度に高値になる場合、またはそれらの間の時間が短すぎる場合、カウンタ値は不定になりますが、適切な分離が維持される場合、カウンタは非常にうまく動作します。2フェーズクロックシステムには、かなり多くの分離が組み込まれていることがよくあります。すべてが十分に高速であれば、このような分離によりクロックスキューの問題を回避できます。

内部的には、エッジトリガーラッチの多くは、マスター/スレーブペアのラッチと見なすことができます。これは、クロックがエッジより前の状態にあるときは常にマスターが入力をラッチし、クロックが後の状態で。2つのラッチに供給される信号は適切な関係を持つ必要がありますが、それらがラッチと同じ付近で生成される場合、2つのクロックフェーズがあった場合に必要とされるほどの分離量を過剰に設計する必要はありませんより広範囲に送信されます。

エッジトリガーはクロックには適していますが、あまり良くない他の目的があることに注意してください。2つのイベントが同じエッジトリガー信号を共有しない場合、定期的なイベントが割り込みに有利になることがあります。共有割り込みのエッジトリガーはお粗末で、割り込みワイヤの状態をポーリングする方法がない限り、非共有割り込みでも問題になる場合があります。レベルトリガは、ラッチする必要がある情報と同じサイクルでストローブ信号がアクティブになるが、情報がストローブより長い計算パスを持つ場合にも有利です。情報が非同期メモリチップのアドレスのようなものである場合、クロックサイクル中にいつか利用可能になる方が、次のクロックサイクルの開始まで待機するよりも優れている場合があります。


2

エッジトリガーが望ましい理由を理解するには、レジスタのイネーブルピンに配線されたプッシュボタンで、レジスタの値に常に1を加算し、レジスタに接続された8ビット加算器を想像してください。

レジスタのイネーブルピンがレベルセンシティブである場合、ボタンを押している間、レジスタの内容は常に増加します。レジスタの次の状態は、ボタンの特定の押下に対して確定的ではありません。これは、指を離す前に加算器がレジスタを何度もインクリメントできるためです。つまり、フィードバックがレジスタを離れて加算器に戻るのが速すぎるためです。

代わりにイネーブルピンがエッジセンシティブである場合、ボタンが押された時間に関係なく、レジスタの内容はボタンが押されるたびに正確に1回増加します(入力が適切にデバウンスされると仮定)レジスタの出力が非決定的な動作に間に合うように加算器に戻すことは不可能です。


1

他の人が言ったように、エッジは非常に特定の瞬間です。デジタル回路はゲートの出力が間違っているグリッチを通過する可能性があることは知っていますしかし、それでも3x10 ^ 8 m / sはワイヤを回るのに少し時間がかかります)。レベルトリガーされたユニットがある場合、その出力はグリッチの影響を受けます。エッジトリガーを使用すると、「物事が発生する可能性がある」時間帯が非常に狭くなります。言い換えると、回路は、時間。「時間内のインスタント」というフレーズに注意してください

この時点では、「タイミング分析」と呼ばれるものは認識していませんが、少し説明します。デジタル回路を作成するとき、それらをシミュレートして、それらがどのように動作するか、この動作が目的に合うかどうかを確認します。タイミング解析では、必要な時間内に信号が回路の特定のポイントに到達できるかどうかを確認します。遅延が遅すぎると、回路が正しく機能しません。レベルトリガーの代わりにエッジトリガー回路ブロックを使用することにより、タイミング解析が非常に簡単になります。これは、回路で発生する可能性があるタイミングを正確に把握できるためです。これは、回路の設計も容易になることを意味します。現実の世界では、レベルトリガーラッチに遭遇することはほとんどありません。


1

他の答えはあなたの質問について言うことのほとんどすべてをカバーしていますが、より明確にするために、いくつかの図と短い説明を追加しました。

何らかのフィードバックを含む回路を設計したいと想像してください。言いますA = A.B(基本的にはフィードバック付きのANDゲート)。Aの値を保存する単純なレベルセンシティブラッチを使用して実装すると、回路は次のようになります。 ここに画像の説明を入力してください

これにより問題が発生する可能性があります。クロックが高い場合、ラッチは透過的になり、ANDゲートはの新しい値を計算しますA and B。ただし、値はラッチにフィードバックされ、ラッチはまだ透過的(CLKはまだ高い)であるため、の新しい値A AND Bが計算されます。これは、一般に競合条件と呼ばれるもので、あなたが言及したグリッチ(出力の予期しない高低)を作成します。

この問題の1つの解決策は、CLKパルスを非常に短く、ANDゲートの出力が生成されると、値が再び入力に逆伝播される前にラッチが非アクティブになるように短くすることです。なぜこれを達成するのが難しいのかを直感的に理解する必要があります。それは、ラッチの切り替え速度(最終的には、ラッチも組み合わせゲートで構成されます)、ワイヤの長さ、および他の数百のパラメーターに依存します。

2番目の実行可能なオプションは、エッジセンシティブエレメント(この場合はフリップフロップ)を使用することです。これは基本的に、非常に巧妙な方法で接続された2つのラッチです。

ここに画像の説明を入力してください

基本的に、CLK信号がHighの場合、ラッチU1は透過的であり、A入力の論理値をラッチU1の出力にもたらします。CLK信号がLowの場合、ラッチU2は透過的になり、新しい値A AND Bが計算されます。ただし、この値は、ラッチU1がトランスペアレント(CLKがHIGH)になり、その結果ラッチU1がトランスペアレント(CLKがLOW)になった場合にのみANDゲートの入力に伝搬します。これは、回路がエッジに敏感になったと言うのと基本的に同じです(出力値はクロックの負のエッジでのみ変化します)。

これにより、前に説明した競合状態の問題が回避されるため、エッジトリガーよりもレベルトリガーが優先されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.