• 締切済み

verilogの演算について

verilogについて、演算途中に値が極端に大きくなった場合はどうなるのでしょうか? 例えば、全ての信号が8bitとして、以下の式について、 output = input1 * input2 >> 8; input1,input2がともに、255のとき、 input1 * input2を計算した段階で、16'b1111111000000001というように極端に大きな値になりますが、ちゃんと、この値から8bit分シフトして、outputに8'b11111110が代入されるのでしょうか?

みんなの回答

  • s_saike
  • ベストアンサー率46% (36/77)
回答No.2

すいません。やっと意味がわかりました。 input1 * input2 の中間値はどこに置かれ、何bitで扱われるかという話ですよね。 どこかに書いてあった記憶もありますが、覚えていません。 因みに、1行にしなければいけない理由は何でしょうか。 2段階に分けて計算すれば、明示的だと思いますが。

tomo00223
質問者

お礼

回答ありがとうございます。 そういうことです。言葉足らずですみません。 1行にしなければいけない理由は、順序回路で使いたいからです。 正確には、output <= input1 * input2 >> 8;です。 クロックが立ち上がった瞬間に、すべての計算を行いたいです。

  • s_saike
  • ベストアンサー率46% (36/77)
回答No.1

変数を何bitで指定しているかによります。

tomo00223
質問者

お礼

ご回答ありがとうございます。 ちなみに、質問の例の場合では、何bitで指定すればよいのでしょうか?

関連するQ&A