私は新しい電気技師なので、我慢してください。私が一緒に作業している他のエンジニアの何人かが、私たちのサーキットの1つに存在する競合状態について話を聞いています。
どういう意味ですか?
私は新しい電気技師なので、我慢してください。私が一緒に作業している他のエンジニアの何人かが、私たちのサーキットの1つに存在する競合状態について話を聞いています。
どういう意味ですか?
回答:
それは、非常に単純に、同時に2つのことが結果を「競争」することを意味します。
例として、リセットピンとセットピンを持つ回路があります。リセットをトリガーすると、出力は0になります。セットをトリガーすると、出力は1になります。最初にセットをトリガーし、その後非常に迅速にリセットすると、リセットされます。が表示されるため、出力は0です。
しかし、両方が同時にトリガーされた場合、どうなりますか?
回路設計者が注意を払った場合、それが機能にとって重要であれば、答えがあるはずです。その質問に対する特定の答えがない場合、回路には競合状態があり、セットからの信号とリセットが互いに「競合」して、どちらが勝って出力を決定するかを確認します。
遅延が最小のパスが通常は勝ちますが、競合状態は、最も遅延したパスがより速いパスの前に正確にトリガーされる正確なトリガーとして見ることができます。
IC内のロジックビルディングブロックを含む多くの回路には特定の競合状態がありますが、通常は意図したとおりに回路を使用したときに気付かないような状態です。そのため、エンジニアが「競合状態」を数回声に出して言うと、それは実際には通常の使用でも起こり得る問題であることを意味します。これは、競合状態では正常な動作を予測できないためです。
ソフトウェアではこの用語も使用されますが、多くの場合、タイミングの問題、つまりロックアップを示します。しかし、それは同様の原則です。多くの場合、コンピューターで2つのプロセスが独立して実行されているが、同じメモリを使用すると、一方のメモリが一方のメモリに書き込まれるのを防ぎ、もう一方のメモリが使用されます。彼らがそれを可能性のある競合状態と呼んでいない場合:1つのプロセスが更新中の値を読み取っている、または両方が同時に値を書き込んでいる可能性があり、その後何が起こるかわからない起こります。
「競合状態」という用語は、(1)2つ以上の信号が任意の順序で到着し、互いに任意に接近していることを意味します。(2)到着の可能な組み合わせの確率が本質的にゼロであることを分析的に示すことはできません。問題を提起する時代。
クロックに対してデータ入力がいつでも変化する可能性がある単一のフリップフロップの観点からは、クロックとデータ入力のほぼ同時の遷移が競合状態を引き起こす可能性があります。ただし、回路全体の動作の観点から見ると、ダウンストリーム回路がラッチの保持を気にせず、ダウンストリーム回路がラッチの保持を気にしない場合にのみ発生する場合、競合状態は発生しません。データ入力の遷移の近くにはないクロックパルスが到着するまで。
さらに、問題のある入力タイミングの可能性を完全に完全に排除することはしばしば不可能であるため、競合状態の多くの分析では、1つのレジスタの出力が同じクロックによって制御される別のレジスタに供給されると、2番目のレジスタは常にラッチすると言われます「クリーン」ハイまたは「クリーン」ロー。最初のレジスタへの入力により、スイッチングしきい値で正しい入力レベルがキャプチャされた場合でも 理論的には、最初のラッチが、次のクロックパルスが到着したときに出力レベルが正確に切り替わる正確なスイッチングしきい値のちょうど上または下のレベルをキャプチャすることが可能です。
その結果、たとえば入力を受け取り、それを3つのフリップフロップのシーケンスに渡し、2番目のフロップがハイで3番目のフロップがローのときはいつでもハイを出力する回路がある場合、完全なクロック周期に相当する短い時間の後にデータ入力が続き、その後に長い時間の完全なクロック周期が続くと、回路の出力が正確に1クロック周期だけ高くなることが本質的に保証されます。
この回路のシミュレーション – CircuitLabを使用して作成された回路図
この回路図では、タイミングがやや不規則な信号は、各立ち上がりエッジの後に1クロックサイクル間ハイになる出力を生成するように、3つの方法でクロックに正規化されています。信号を正規化する最初の試みは、厄介に見える出力を生成し、入力とクロックが同時に変化する場合、明らかに競合状態になります。2番目の方法ははるかに優れていますが、クロックとデータのタイミングによって最初のレジスタが中間値をキャプチャする場合、競合状態(シミュレーターがトリガーできない)があります。3番目のアプローチは一般的な慣行を表しており、最初のレジスタがクリーンハイまたはクリーンローをキャプチャできなかったとしても、一般に安全と見なされます。最初のレジスターからの出力が2番目のレジスターをきれいに取得しない原因となる正確な動作をすることはほとんどありません。データがクロックに非常に近く変化する場合、現在のサイクルで取得されるか、次のサイクルまで取得されない可能性がありますが、どちらかの状況が許容できる場合は、競合状態はありません。