ハードウェア記述言語と検証

上のVerilogのassign文が表す回路として正しいものはどれか。

assign y = (a & b) | c;
  1. AaとbのANDとcのORをとる組み合わせ回路で、入力が変わるとすぐにyも変わる
  2. Bクロックのたびにyを更新するフリップフロップ
  3. C一度だけ計算して、その後は値が変わらない回路
答えと解説を見る

正解:A. aとbのANDとcのORをとる組み合わせ回路で、入力が変わるとすぐにyも変わる

assign文は連続代入と呼ばれ、右辺の式の値が常に左辺の信号に反映される配線を表します。右辺の入力のどれかが変われば、出力yもすぐに(ゲートの遅延の後に)変わります。この例はANDゲートとORゲートの組み合わせ回路になります。記憶の働きはないので、値を保持したいときは、クロックで更新するalwaysブロックを使います。

  • A. 正しい。連続代入と呼ばれます。
  • B. クロックは使っていません。
  • C. 入力が変わるたびに出力も変わります。
この分野を解く 分野ページへ

ハードウェア記述言語と検証のほかの問題

  1. 上のVerilogの記述が論理合成で作る回路として正しいものはどれか。
  2. Verilogのノンブロッキング代入(<=)の動作として正しいものはどれか。
  3. 上の記述で、クロックの立ち上がりの直前にa=0、b=1だった。立ち上がりの後のaとbの値はどうなるか。
  4. 2段のシフトレジスタのつもりで、上のようにブロッキング代入(=)で書いた。起こる問題として正しいものはどれか。
  5. Verilogで代入の種類を使い分けるときの一般的なガイドラインとして正しいものはどれか。