ハードウェア記述言語と検証
Verilogで代入の種類を使い分けるときの一般的なガイドラインとして正しいものはどれか。
- Aどこでもブロッキング代入(=)だけを使う
- Bクロックで動く順序回路にはノンブロッキング代入(<=)、組み合わせ回路のalwaysにはブロッキング代入(=)を使う
- C1つのalwaysの中で、2つをでたらめに混ぜて使う
答えと解説を見る
正解:B. クロックで動く順序回路にはノンブロッキング代入(<=)、組み合わせ回路のalwaysにはブロッキング代入(=)を使う
順序回路をノンブロッキング代入で書くと、すべてのフリップフロップが同時に値を取り込む回路の動きと一致し、記述の順番や、ほかのalwaysブロックとの実行の順番に結果が左右されません。組み合わせ回路では、上から順に途中の値を計算していく書き方が自然なので、ブロッキング代入を使います。1つのalwaysブロックの中で両方を混ぜないことも大切です。
- A. 順序回路でブロッキングを使うと、意図と違う回路になりがちです。
- B. 正しい。シミュレーションと回路の動きを一致させやすくなります。
- C. 混ぜると動作が分かりにくく、誤りのもとになります。