Menu
Coddy logo textTech

オーバーフローと飽和

CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 9/38。

符号付きオーバーフローとは、数学的な結果が選択したsigned幅に収まらないことを意味します。これは符号なしのキャリーとは異なります。signed加算では、結果の符号が変わると、同符号の入力でオーバーフローが発生します。飽和演算では、ラップアラウンドする代わりに、表現可能な端点にクランプされます。

関連する抜粋です。周辺の宣言と接続は課題内で提供されています。

assign overflow = (a[7] == b[7]) && (sum[7] != a[7]);

符号の異なる入力ではsigned加算でオーバーフローは発生しません。符号が同じ入力では、結果の符号を確認する必要があります。

キャリーとは独立してsignedのオーバーフローを確認し、飽和処理を実装する前に拡張してください。

challenge icon

チャレンジ

中級

signed 8ビットの a と b を加算します。ラップされた signed の結果 y を返し、正確な数学的和が -128 から 127 の範囲外の場合にのみ overflow=1 にします。出力列: y、overflow。すべての刺激値は既知の2進値です。

design.v を完成させ、モジュール名とポートを保持してください。ロックされた testbench.v が入力の変更を与え、値が安定した後に出力を表示します。+CASE=1 のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。デザインに表示、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、観測ごとに10進値の行を1行ずつ出力し、値は1つのスペースで区切り、改行で終わる形式です。

自分で試してみよう

module dut (input signed [7:0] a, input signed [7:0] b, output signed [7:0] y, output overflow);
    // このプレースホルダーをあなたの設計に置き換えてください。
    assign y = 0;
    assign overflow = 0;
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

RTL設計と検証のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ