ハードウェア記述言語と検証
上の記述のように、フリップフロップを通らずに組み合わせ回路の出力が自分の入力に戻ってくる形を何と呼び、なぜ避けるべきか。
assign a = b & c;
assign b = a | d;
- A組み合わせループと呼び、発振したり値が定まらなかったりして、タイミングの解析もできなくなるから
- Bパイプラインと呼び、回路が速くなりすぎるから
- Cシフトレジスタと呼び、データが失われるから
答えと解説を見る
正解:A. 組み合わせループと呼び、発振したり値が定まらなかったりして、タイミングの解析もできなくなるから
aがbを、bがaを決める形では、フリップフロップがないため、値がゲートの遅延のたびに回り続けて発振したり、どの値に落ち着くかが遅延の差で決まったりします。ラッチのような記憶の働きが意図せずできることもあります。静的タイミング解析は経路が輪になっていると扱えません。帰還が必要なときは、途中に必ずフリップフロップを入れて、クロックごとに値を更新する形にします。
- A. 正しい。多くのツールがエラーや警告を出します。
- B. パイプラインはフリップフロップで区切った構造です。
- C. シフトレジスタはフリップフロップでできています。