- 締切済み
verilogの演算について
verilogについて、演算途中に値が極端に大きくなった場合はどうなるのでしょうか? 例えば、全ての信号が8bitとして、以下の式について、 output = input1 * input2 >> 8; input1,input2がともに、255のとき、 input1 * input2を計算した段階で、16'b1111111000000001というように極端に大きな値になりますが、ちゃんと、この値から8bit分シフトして、outputに8'b11111110が代入されるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- s_saike
- ベストアンサー率46% (36/77)
回答No.2
すいません。やっと意味がわかりました。 input1 * input2 の中間値はどこに置かれ、何bitで扱われるかという話ですよね。 どこかに書いてあった記憶もありますが、覚えていません。 因みに、1行にしなければいけない理由は何でしょうか。 2段階に分けて計算すれば、明示的だと思いますが。
- s_saike
- ベストアンサー率46% (36/77)
回答No.1
変数を何bitで指定しているかによります。
質問者
お礼
ご回答ありがとうございます。 ちなみに、質問の例の場合では、何bitで指定すればよいのでしょうか?
お礼
回答ありがとうございます。 そういうことです。言葉足らずですみません。 1行にしなければいけない理由は、順序回路で使いたいからです。 正確には、output <= input1 * input2 >> 8;です。 クロックが立ち上がった瞬間に、すべての計算を行いたいです。