20 / 63 · 概念
D フリップフロップ:レベルからエッジへ
ラッチとフリップフロップの更新時点を比べ、レジスタ・セットアップ・ホールドの意味を結び付けます。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
クロックが 1 の期間と、1 になる瞬間は異なります
正レベルのラッチラッチ 制御信号が有効な間は入力に追従し、無効な間は値を保持する記憶素子です。エッジでのみ記憶するフリップフロップとは異なります。 詳しく見るは、CLK=1 の期間中ずっと D に追従します。立上りエッジ立上りエッジ クロックが 0 から 1 に変わる瞬間です。CLK=1 の区間全体を指すレベルとは区別します。の D フリップフロップフリップフロップ 指定されたクロックエッジで入力を記憶し、次のエッジまで保持する素子です。入力はセットアップ・ホールド条件を満たす必要があります。は、CLK が 0 から 1 になる境界で D を取り込み、次の立上りエッジまで記憶します。clk=1 という条件だけで、二つの動作を同一視できません。
次の比較を実際に行ってください。
- CLK=0 で D を 1 に変えます。両方の Q はまだ 0 です。
- CLK を 1 に上げます。両方の Q が 1 になります。
- CLK=1 を保ち、D を 0 に変えます。ラッチの Q だけが 0 になります。
- CLK を 0 に下げ、再び 1 に上げます。フリップフロップの Q も 0 を取り込みます。
両方の q は 0 から始まると仮定します。D ラッチは CLK=1 の間 D に追従し、CLK=0 では保持します。D フリップフロップはクロックの 0→1 遷移でのみ D を取り込みます。
順序回路の一サイクル
フリップフロップの Q が組合せ回路を通り次の入力 D を作ると、状態遷移になります。エッジ直前の入力を 、エッジ後の記憶状態を とすると、理想モデルは次の式です。
実際の出力はエッジと同時に瞬時には変わらず、clock-to-Q 遅延後に変わります。複数のフリップフロップが同じエッジでそれぞれの入力を取り込むので、互いの以前の状態から次状態を計算できます。これがカウンタとシフトレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。の出発点です。
- 現在の Q: このサイクルの記憶状態
- 組合せ回路: Q と外部入力から D を計算
- 次の立上りエッジ: タイミング条件を満たした D を記憶
- 新しい Q: clock-to-Q 遅延後に次状態を出力
セットアップ・ホールドはサンプリングの前提です
D は取込みエッジ前のセットアップセットアップ 取り込みクロックエッジの前に、入力データが安定していなければならない最小時間です。違反すると記憶結果を保証できません。 詳しく見る時間と、エッジ後のホールド時間ホールド時間 取り込みクロックエッジの後も、入力データが安定していなければならない最小時間です。通常の値の保持動作とは文脈で区別してください。 詳しく見るに安定している必要があります。エッジ付近で D が変わると、単純に旧値か新値のどちらかになるとは保証できず、メタステーブルが問題になることがあります。上の実習は、このアナログ現象を模擬しません。
レジスタは複数ビットのフリップフロップをまとめたものです。8 ビット幅というだけで、入力 8 ビットが一貫した一つの値であることまでは保証されません。同じタイミング条件とデータ転送規則が必要です。
初期状態とリセット
シミュレーションで Q=0 から始めることと、ハードウェアが必ず 0 で起動することは異なります。次の講義では reset と enable を追加し、いつ初期化し、いつ保持するかを定めます。同期リセットはエッジで動作し、非同期リセットはエッジによらず動作しますが、解除のタイミングにも注意が必要です。
自分で考えてみましょう
CLK=1 の間に D が 0→1→0 と変わり、次の立上りエッジ直前に D=1 で安定します。ラッチとフリップフロップの Q はいつ変わりますか。フリップフロップはエッジで二度更新されますか。
解説を見る
ラッチは CLK=1 の間、D の変化に追従します。フリップフロップはその途中の変化を無視し、次の立上りエッジで有効な D=1 を一度取り込みます。実回路ではセットアップ・ホールド・clock-to-Q の条件を含めて解釈します。