ハードウェア記述言語と検証
Verilogで8ビットの信号aとbを足し、その結果を8ビットの信号sに代入した(assign s = a + b;)。注意すべき点として正しいものはどれか。
- A8ビットどうしの足し算は、Verilogでは書けない
- B結果は自動で16ビットに広げられる
- C和が255を超えると9ビット目の桁上がりが捨てられるので、桁上がりが必要ならsを9ビットにする
答えと解説を見る
正解:C. 和が255を超えると9ビット目の桁上がりが捨てられるので、桁上がりが必要ならsを9ビットにする
8ビットどうしの和は最大で255+255=510になり、表すには9ビットが必要です。代入先のsが8ビットだと、上位の桁上がりは黙って捨てられ、例えば200+100は44になってしまいます。桁上がりも使いたいときは、sを9ビットで宣言します。Verilogは幅の違う信号の代入をエラーにせず切り詰めたり広げたりするので、Lintツールで幅の不一致を調べるのが有効です。
- A. 普通に書けます。
- B. 代入先が8ビットなら8ビットに切り詰められます。
- C. 正しい。代入先の幅で結果が切り詰められます。