- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:verilog ALU)
Verilog ALUの設計で躓いています
このQ&Aのポイント
- Verilog初心者の私が作成している4ビットALUで、いくつかの課題に直面しています。具体的には、4ビットの入力と1ビットのオペレーションコントロールを使用して、加算およびオーバーフローを処理する必要があります。しかし、結果のオーバーフローを適切に扱う方法が分かりません。
- また、2の補数を考慮する必要もあります。正の数と負の数の計算をどのように区別すれば良いのか、特に加算と引き算の場合について不明点があります。最上位ビットの値で判別すれば良いのは分かりますが、具体的な計算方法についてアドバイスをお願いします。
- 以上が私の質問です。どなたか教えていただけると助かります。
- みんなの回答 (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 について確認すると良いと思います.(論理が逆)
お礼
遅くなりましたすみません。 2の補数がいまいち理解不足でした。ありがとうございました!