シフトレジスタのタイミングを理解する


8

(私はデジタル回路設計を学んでいます。これが素朴な質問である場合は失礼します。)

ウィキペディアから、SIPOシフトレジスタに関する次の図を見つけました。

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

私が理解しているように、このシフトレジスタはDFF(D Flip-Flop)でできています。DFFは、クロック周期の立ち上がりエッジでトリガーされます。そのため、Clock信号の立ち上がりエッジごとに、からのデータはData In1段のDFFを介して伝播します。

私の質問は、ClockはすべてのDFFで共有されているため、立ち上がりエッジが到着したときに、4つのDFFがすべてトリガーされた/透過状態でなければならないということです。では、2つ以上のステージではなく、DFFのステージを介してデータが確実に伝播するようにするにはどうすれonly 1ばよいでしょうか。

まあ言ってみれば:

  • Td DからQにデータをロードするための1 DFFステージの内部遅延です。
  • Trクロックの立ち上がりエッジの持続時間です。下の写真を参照してください。

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

伝播を1ステージに制限するには、次のようにする必要があります。

Td < Tr < Td*2

私は正しいですか?

しかし、上のリンクでは、それは言う:

この構成では、各フリップフロップはエッジトリガーされます。最初のフリップフロップは、指定されたクロック周波数で動作します。後続の各フリップフロップ は、その前任者の周波数半分にし、デューティサイクルを2倍にし ます。結果として、立ち上がり/立ち下がりエッジが後続の各フリップフロップをトリガーするのに2倍の時間がかかります。これにより、時間領域でシリアル入力がずれ、パラレル出力になります。

それは私にいくつかのことについて混乱させます。

  • どういうhalves the frequency意味ですか?
  • DFFを周波数でどのように特徴付けることができますか?
  • DFFはクロックの立ち上がりエッジでのみ機能しませんか。また、一般に、クロックの周波数は関係ありません。
  • そして、周波数はどのようにデューティサイクルに関係しているのでしょうか?周波数は周期に関連していますが、デューティサイクルは信号またはシステムがアクティブである1つの周期の割合を意味ます。周波数とデューティサイクルの間に関係はありません。

追加1

以下のようNeil_UKは以下の彼の返事の中で述べて、上記のwikiの引用は平野間違っています。そして彼はwikiページを修正しました。

EMフィールドは、以下の彼の返事に言いました

...作業を行ったクロックエッジがすでに終了しているため、クロックの次の立ち上がりエッジまでは何も起こりません...

厳密に言えば、理想的な垂直立ち上がりエッジはありません。Tr上図のようにいくつかあるはずです。DFFステージを介した信号の伝搬を制限すると思いますが、立ち上がりエッジは、信号が1つのステージを伝搬するのに十分長く、信号が次のステージに伝搬しないのに十分短くなければなりません。

私は、この種のコントロールが本当であるにはトリッキーでデリケートすぎると思います。しかし、それが本当なら、それはどのように達成されますか?(私はこの質問に報奨金を出しただけです。)


「Trはクロックの立ち上がりエッジの持続時間」とはどういう意味ですか?
Elbehery

1
@Elbehery返信ありがとうございます。イラストを追加しました。クロックはすべてのDFFステージで共有されるため、の間、すべてのDFFはTr入力に対して透過的である必要があると思います。そのため、信号が伝播できる距離を制御する必要があると思います。
smwikipedia

2
ウィキペディアのエントリが混乱しています。私の回答を参照し、更新されたウィキペディアのページを参照してください(新しいページを表示するには、ブラウザーのキャッシュをフラッシュする必要がある場合があります)
Neil_UK

回答:


5

私の質問は、クロックはすべてのDFFで共有されているため、立ち上がりエッジが到着したときに、4つのDFFがすべてトリガーされた/透過状態でなければならないということです。では、データが2つ以上のステージではなく、1つのステージのDFFのみを介して確実に伝播するようにするにはどうすればよいですか

一般的なDフリップフロップのタイミング要件を考慮してください。

Dフリップフロップのタイミング

ご覧のとおり、いくつかのパラメーターがあります。ここで最も重要なのは、セットアップタイム、ホールドタイム伝播遅延です。

入力(D)は、表示された期間( tsあなたth)。

この特定の部品の場合、必要な最小ホールドタイムは3nsecです。これは、パフォーマンスを保証するために入力がクロックの背後で安定している必要がある最小時間です(つまり、DがQに転送されます)。

セットアップとホールドタイム

この後の入力の遷移は、デバイスによって事実上無視されます。クロック周期がtsあなた + th 正常に動作します。

ここで、伝播遅延を見てみましょう(tplh そして tphl

データシートから、これらは通常14ナノ秒です。

伝播遅延

このイベントはホールドタイム要件を超えて発生するため、入力が内部フィードバックメカニズムによって効果的にロックアウトされるため、次のD入力でのこの遷移は効果がありません。

シフトレジスタが移動できる最大レートは 1tsあなたメートル +tpropメートルaバツD入力は、前のQ出力が安定した、少なくともセットアップ時間安定している必要があるためです。

伝搬遅延がホールドタイムよりも大きい場合、最大クロックレートでは無視できます。

つまり、DからQへの伝搬遅延が必要なホールドタイムよりも大きい場合、1つのクロックイベントが複数のフリップフロップを伝搬することはできません。

あなたの図を使用して、時計はいつか発生します t0。出力Q1最初のフリップフロップの伝播遅延の後に変化しますが、これは、最初のフリップフロップの伝播遅延が2番目のフリップフロップの入力ホールドタイムよりも大きい場合、2番目のフリップフロップでの入力セットアップタイムの後になるためです。 (私の経験では常にそうです)、Q1(2番目のフリップフロップのD)での遷移は、このクロックイベントには影響ません。


5

そのウィキペディアリンクに誤った説明がありました。それは、2カウンターによるカスケード除算用でした。Wikipediaのエントリを修正して、シフトレジスタについて説明しました。最良の説明ではないかもしれませんが(1分で完了します)、少なくとも明らかに間違っているわけではありません!


2

タイミングが正しく機能するためには、D入力のホールドタイムは、フリップフロップの伝搬遅延からクロックの不確実性を差し引いた値よりも小さくなければなりません。この条件が真である限り、前のフリップフロップからの新しいデータは、次のステージがデータをラッチするまで変化しません。

NXP 74HC74の場合、データシートから、ホールドタイムはワーストケースで3nsであり、伝播遅延は通常14nsであるため、最大11nsのクロックスキューはこれらのタイミングで(5Vの場合)問題を引き起こしません。ただし、伝搬遅延は一般に最小ではないため、特定の部分のマージンが非常に狭くなる可能性があります。ただし、明らかな理由により、ほとんどのDフリップフロップは、この種のものはタイミング的に機能するように設計されています。ホールドタイム要件が短い。


1

DFFは透過的ではなく、クロック信号のエッジで動作します。クロックエッジは、回路が正しく動作するのに十分な速さである必要があります。

以下に例を示します。ここに画像の説明を入力してください

最初のステージは、クロックのローフェーズ中にアクティブです。クロックが上昇すると、最初の連続した接続されたインバーター(ラッチ)が現在の状態を保存し、ノードXに残されたトランスミッションゲートによって入力が切断されます。同時に、2番目のTGが透過的になり、2番目のラッチを駆動します。クロックが再びLowになるとすぐに、2番目のラッチが値を保持します。

ウィキペディアから取得した回路では、フリップフロップはシフトレジスタを形成し、すべて同じ周波数で動作します。これらはカウンターまたはクロック分周器として使用できますが、これには別の構成を使用します。


しかし、どうすれば100%対称のphiとphi_barを実現できますか?おそらく、2つの間の少なくとも1つのゲート遅延をリードするインバーターを使用します。したがって、最初のトランスミッションゲートは「1」よりも少し長い「0」を渡すことができ、2番目のトランスミッションゲートは「0」よりも少し長い「1」を渡すことができます。これは、クロックのばらつきが原因です。同様の影響がトライステートフィードバックデバイスでも発生します。また、クロックポイント間に金属配線があります。正確なものはありません。したがって、この理想的な分析は、実際の生活に存在する問題を隠すだけです。イモ。
jbord39

@ jbord39-もちろん、タイミングを確認する必要があります。phiとphi_barを対称にすることはそれほど難しくありません。エラーマージンが必要な場合は、2つのTG間に遅延が発生する可能性があります。ルーティングはローカルで非常に短いです。遅延は通常、寄生成分の抽出後に決定され、検証することもできます。もちろん、より堅牢なデザインもありますが、これはスタンダードセルライブラリですでに見ました。
マリオ

はい、常にスタンダードセルライブラリにあり、最も基本的なDFFです。しかし、時計が対称になることはめったにありません。10ps /インバーター遅延は「十分」です。特性化エンジンは、立ち上がり/立ち下がりの違いを拾い上げ、とにかくそれらを表に表示します。私の要点は、OPが完全に論理的な質問を引き起こし、それが設計で実際のエラーを引き起こしたということです。「立ち上がりエッジで即座にキャプチャする」と吹き飛ばすことは非常に単純化されていますが、質問がタイミングのニュアンスに関するものである場合、あまり良い方法ではありません。
jbord39

@ jbord39-私の要点は、この設計は必要に応じて堅牢にすることができるということです。これによりデザインでエラーが発生する場合は、デザインフローを修正する必要があります。それとは別に、質問を読みすぎていると思います。しかし、私はあなたの要点を理解しています。
マリオ

1

簡単に言えば、設計者が構築する際の知識以外に、説明する状況を妨げるものは何もありません。クロックエッジのトリガーと出力の変化との間には、通常clk-to-qまたはclk-to-outと呼ばれる有限の遅延があることに注意してください。

今日のテクノロジーで一般的なTransmission-GateスタイルのDFF(今日のCPUで最も使用されている)を使用すると、説明した状況に遭遇する可能性が高くなります。 これはホールド違反として知られています。

実際、ホールド違反はデジタルチップにとって最も致命的なものです。セットアップ違反がある場合は、低速パスが失敗しなくなるまで、クロックを遅くすることができます。ただし、ホールド違反がある場合、通常は何もする必要はありません(レジスタごとに移動可能なクロックエッジなどのフェイルセーフ対策を講じない限り)。それらは非常に致命的であるため、ホールド違反を防ぐために激しくパディングするのが普通です。したがって、サイクルパス(400ps @ 2.5GHzとしましょう)がある場合、それはフロップ->フロップのみです。かなりの数のバッファを投入しない理由はありません。これは実際に推奨されています。

他の人々はまた、DFFは透明ではないと述べた。 これは確かにDFFに依存しますにます。今日のほとんどのVLSI FFは、数ピコ秒の透過性を持っています。その他は、スレーブに対してマスタークロックを遅らせることにより、透過的に長くなるように意図的に変更されています(フリップフロップを借りる時間-セットアップに追加の時間を与え、有効なデータをより長く保持することを強制します)。

信号がフリップフロップをジャンプする場合、0サイクルパスと見なされます。 これは通常、「ホールド違反」と見なされます。つまり、データが十分に長く保持されていなかったということです。

各フリップフロップのセットアップおよびホールドタイムは異なります。それらがシフトレジスタで使用するように設計されている場合、それらが負のホールドタイムを持つことをほぼ保証できます(マスターラッチに対してクロックをスレーブラッチに遅延させます;マスターラッチがより早く閉じて非透過になる場合があります)スレーブラッチが透過になる前)。それ、またはこれらのフリップフロップのclk-> outは、ホールドタイムよりもはるかに長い場合があります。または、ステージ間に遅延を挿入しました。データパスまたはクロックパスのいずれか(反転)。

この問題を修正するのは非常に簡単です。実際、問題を解決する方法はたくさんあります。2つの単純なもの:各フリップフロップステージの間に適切な遅延を挿入するだけです。または、シフトレジスタの各フリップフロップへのクロック間に遅延を入れます。チェーンの最後から始まります。これにより、各フリップフロップが前のフリップフロップからの安定したデータを確実に取得します。


1

この回路図は、クロックのアクティブな立ち上がりエッジの直後のトランスミッションゲートと反転トランスミッションゲートのロジックを示しています。これにより、フィードバックスイッチが入力から分離してそのロジックレベルをアクティブに保持できるように、十分なストレージ容量で一連のスイッチを制御します。

Dフリップフロップの3つのステージを、シリアルインパラレルアウト(SIPO)またはシリアルインシリアルアウト(SISO)の一部またはシフトレジスタとして以下に示します。

トランスミッションゲートのバイポーラ駆動ではクロックが反転しますが、理解を簡単にするために、リレー制御のように記号で示しています。

概略図

この回路のシミュレーションCircuitLabを使用して作成された回路


1

これは実際には非常に良い質問です。DFFがどのように機能するかについては、ここで説明します。クロックのタイミングと遷移については、次のような答えがここにあります。

クロック入力でのシュミットトリガー動作により、回路はクロックの立ち上がりおよび立ち下がり時間の遅延に対する耐性が高くなります。

このシュミットアクションを実装すると、クロック遷移中の準安定性が最大限に排除されます。したがって、クロックは論理的に一度だけ立ち上がり、トリガーにその状態を一度だけチェックさせます。クロックの周波数では、DFFは通常、データシートに最小値と最大値があり、論理要素内での同期信号の伝播を保証します。

SIPO構成では、次のDFFのD入力に接続されたワイヤで信号が安定するように、DFFを介した伝播遅延がクロック周期+スラックよりも少ないことを確認するのがタスクです。


0

「D」タイプのフリップフロップのクロック入力がハイになると、その瞬間のD入力の状態がQ出力に転送され、Qは次のDまでのDの変化に関係なくその状態のままになります。クロックの立ち上がりエッジ。

一方、トランスペアレントラッチは、クロックがハイのときにQがDに追従し、クロックがローになる瞬間にDの状態をQにラッチすることによって動作します。

表示されている回路では、クロックはすべてのDフロップと並列であるため、立ち上がりクロックエッジが表示され、Dの内容がQに転送され、次のステージのDに転送されます。作業を行ったクロックエッジがすでになくなっているため、次のクロックの立ち上がりエッジ。

以下は、一部のドライバで実現された回路と、その応答がタイミング図で示されています。

前のステージの出力状態は、各クロックの立ち上がりエッジで1回だけ後続のステージに伝播されることに注意してください。

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


返信いただきありがとうございます。おっしゃったように、次のクロックの立ち上がりまではも起こりませんこれは、作業を行ったクロックエッジがすでに停止しいるためです。厳密に言えば、Tr私の質問に示されているように、理想的な垂直立ち上がりエッジはありません。私は立ち上がりエッジが続かなければならないと思いますので、十分な長さ信号は1つのステージとを介して伝播するために十分短い信号のためではない次のステージに通って伝播します。私は、この種のコントロールが本当であるにはトリッキーでデリケートすぎると思います。しかし、それが本当なら、それはどのように達成されますか?
smwikipedia 2016年

0

これが機能する方法は、各DFFがごく短時間有効になることです。ラッチをフリップフロップに変えるには、イネーブル信号に次のような回路を使用します。 クロックエッジ クロックは入力として接続されます。立ち上がりエッジを取得すると、非常に短いパルスのみが生成されます。最初にクロックが0であると仮定します。ANDゲートへのNOTゲートの出力はハイです。クロックの立ち上がりエッジを取得すると、ANDゲートへの両方の入力がハイになり、ハイイネーブル信号を生成します。ただし、その直後に、高クロックがnotゲートを伝搬し、ANDゲートの出力が再びLowになります。

NOTゲートのトランジスタの寸法を選択することにより、これをかなり正確にタイミングを合わせることができます。イネーブルパルスは、信号がシフトレジスタで一度だけ変化し、複数の伝播がないようにするための適切な長さです。これはもちろんプロセスに依存しており、正しく理解するのは非常に困難です。


1
これについてはあなたに反対しなければなりません。その回路をラッチに追加すると、「パルスラッチ」になります。 eetimes.com/document.asp?doc_id=1271447 フリップ・フロップ(真FF)に、ラッチを変換するには、次の2つのラッチを取り、背中合わせにそれらを置くと、イネーブルとしてそれらに逆位相のクロックを与えます。どんな種類のラッチでもこれを行うことができます。JK、D、SRなど。関係ありません。ラッチとフリップフロップの基本的な違いは、マスタースレーブトポロジにあります。
jbord39

1
その上、それは単に本当ではありません。パルスラッチが使用されますが、より動的な性質のため、大幅にマージンをとる必要があります。たとえば、すべての温度とプロセスコーナーにわたって、低電圧と高電圧の両方でデータを書き込むのに十分な長さのパルスを確保する方法。これは確かに可能ですが、おそらく従来のマスタースレーブフリップフロップよりも3〜5倍困難です。
jbord39
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.