verilog初心者です。4ビットALUを作っているのですが、いくつかの点で躓いています。最初に2点だけ質問させて下さい。
このALUでは、4ビットの入力AとB、1ビットの入力x、y、z、
そして4ビット出力のResultと1ビット出力のOverflowを使います。
x、y、z、はオペレーションコントロールで、例えばx=0, y=1, z=0 の時A+Bを行うのですが、
もしこの時A=8、B=8だとResult=16(5ビット)になるのでOverflow=1とセットします。
しかしResultは4ビットなのでどのようにしたらOverflow=1にセットできますでしょうか。
例えば、予め5ビットの変数(temp)を用意しA+Bの結果を5ビットに拡張して計算。
もしtempが16以上ならオーバーフローということでOverflow=1としたのですが、うまくいきません。
if(x==0&&y==1&&z==0)begin //加算の処理
Result <= A + B; //普通に加算
temp <= {A[3], A} + {B[3], B}; //拡張して加算
if(temp >= 5'b10000)begin //16以上か比較
Overflow <= 1;
end
else begin
Overflow <= 0;
end
end
それと、2の補数も考慮しないといけないのですが、正の計算と負の計算では、どのように区別して計算すればいいのでしょうか。
最上位ビットが0か1かで正か負を分けるのはわかるのですが、例えば
1111は、正で言えば15ですが2の補数でいえば-1になります。Aが15、Bが-1で引き算をする場合、15-(-1)で16となってしまいます。
これはどのように考えたらいいのでしょうか。
もちろん答えが-16以下となってもOverflow=1とセットします。
宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
(1)verilogであれば連接演算子を使って5bitとして扱う.
{ Overflow, Result } <= {1'b0,A} + {1'b0,B};
(2)符号ありの4bitで表現できる数値は -8~7 と考えます.
4'b1111に 2つの意味を持たせてはいけません.
減算を加算回路として扱えるのが2の補数の特徴です.
4'b0111(7) + 4'b1111(-1) ---> 4'b0110(6), bollow<---1(overflow)
2の補数として考えることで加算回路と減算回路が等価になります.
演算結果をsignedとして扱うか, unsignedとして扱うかは呼び出し元が考えれば良いことです.
加算回路における carry と bollow について確認すると良いと思います.(論理が逆)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 数学 『最後の自然数はどんな数か』 3 2023/06/26 20:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”/”を使わずに割り算したいんで...
-
O(n log n)について2
-
VB.net Double と...
-
三菱シーケンサ(Aシリーズ)で...
-
16進数 加算 減算 C言語
-
c languageで 簡単な質問があ...
-
VBAでの割り算の余りの求め方
-
コンピューターは指数関数をど...
-
ExcelのINT関数の計算結果がお...
-
ExcelでPC(パソコン)によって...
-
引き算で端数が出る理由
-
【C言語】RGBと輝度の計算に関して
-
Fortran において変数の定義
-
Visual Studioのバージョンによ...
-
色の判定
-
エクセル計算 答えは同じなの...
-
floatの有効桁数がわからない
-
巨大な素数の効率的な作り方
-
マイコン(AVR)で、ある式を記...
-
加算と減算で乗算と除算を表現...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
16進数 加算 減算 C言語
-
c languageで 簡単な質問があ...
-
ExcelでPC(パソコン)によって...
-
”/”を使わずに割り算したいんで...
-
有効数字について 以前質問をし...
-
三角比の俯角の計算
-
ExcelのINT関数の計算結果がお...
-
VB.net Double と...
-
floatの有効桁数
-
パソコンで階乗を計算
-
三菱シーケンサ(Aシリーズ)で...
-
除算を使わずに10で割りたい。
-
VB6.0での小数点の扱いについて
-
EXCELの関数"STDEV(標準偏差)"...
-
時刻の比較
-
VBAでの割り算の余りの求め方
-
計算の丸め誤差の解消について
-
C言語プログラミングにて、arct...
-
VBAでミリ秒まで出力する方法
おすすめ情報