Altifigence Academy

8 / 36 · 概念

条件式でMUXを記述する

選択信号とデータ入力をRTLでつなぎます。

学習目標

  • 選択信号とデータ入力をRTLでつなぎます。

真の分岐が先

条件式はcondition ? trueの値 : falseの値です。sel ? b : aはsel=1でb、0でaです。アルファベット順に並べて逆転させないでください。assignは一度きりの処理ではなく、入力変化に応じて組合せ関係を維持します。

RTLコード抜粋
assign y = sel ? b : a;

always_ff @(posedge clk)
    sampled_y <= y;

駆動元を一つにする

例ではyはassignだけ、sampled_yはalways_ffだけが駆動します。別ブロックからyにも代入すると競合する場合があります。まず真理値表と式を比べ、次に保存側を見ます。組合せ誤りを保存回路の追加で隠さないでください。

自分で考えてみましょう

assign y = sel ? a : b;は仕様に合う?

解説を見る

いいえ。sel=1でaを選びます。a=0,b=1なら期待1に対し0になります。

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