Altifigence Academy

23 / 63 · 概念

組合せ選択とレジスタ出力の遅延

MUX の結果をレジスタに記憶したとき、インターフェースと遅延がどう変わるか解析します。

出力にレジスタを付ける理由

MUXマルチプレクサ 選択信号に従い、複数の入力から一つを出力に接続する組合せ回路です。選択ビットと入力番号の対応を仕様で定めます。 詳しく見る の組合せ出力は、選択信号やデータが変わるたびに変化し得ます。後ろにレジスタレジスタ 複数ビットの状態を記憶する回路です。このコースの同期式レジスタは、クロックエッジで定められた入力を記憶します。 詳しく見るを置くと、次段がクロック境界で定まった値を使えますが、観測時点と遅延が変わります。

エッジ k の直前に準備された入力を ak,bk,ska_k,b_k,s_k、そのエッジ後の記憶値を qk+1q_{k+1} とすると、次のようになります。

yk=sk‾ak+skbk,qk+1=yky_k=\overline{s_k}a_k+s_kb_k,\qquad q_{k+1}=y_k

遅延を述べるときは、入力をいつ提示し、出力をいつ観測するかを必ず合わせて定義します。入出力をともにレジスタ出力として定義するインターフェースでは、その間のレジスタ段数がサイクル遅延を決めます。

まず短い時刻表を描く

エッジ直前abselyエッジ直後の q
101000
201111
310100

エッジ 1 と 2 の間で sel が変わると、y が先に変わり、q はエッジ 2 まで保持されます。q の変化を入力変化と直接比べると、1 サイクルずれた誤りのように見える場合があります。

下の列は等間隔の時間軸ではなく、順序を持つ観測時点です。a=0、b=1 としています。sel の変化後、次のエッジまで q が保持される区間を見てください。

y が先に変わり q が後に続く順序
波形データを表示
波形データ:各文字は一つの区間、ドットは前の状態の保持、p はクロック 1 周期を表します。
信号波形バスの値
イベント23452E1 後 → sel → 1 → E2 後 → sel → 0 → E3 後
sel01.0.
y01.0.
q0.1.0

レジスタでも解決しないこと

入力が取込みエッジ付近で不安定なら、レジスタがあっても安全ではありません。別クロック領域から来た選択信号を直接使うには、別途同期化の設計が必要です。また、組合せ出力 y のグリッチが完全になくなるわけでもありません。インターフェースが q だけを使うのか、別経路で y も使うのかを一緒に確認します。

自分で考えてみましょう

同じクロックの入力レジスタ → MUX → 出力レジスタを考えます。入力レジスタがエッジ k で出した新しい値は、通常どの出力レジスタのエッジで取り込まれますか。

解説を見る

通常の 1 サイクル同期経路ではエッジ k+1 で取り込みます。エッジ k で出力レジスタが見るのは入力レジスタの以前の値です。新しい値は clock-to-Q と組合せ遅延を経て次のエッジに備えます。同じエッジで新しい値が直ちに二つのレジスタを通り抜けると計算してはいけません。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。