Menu
Coddy logo textTech

算術右シフト

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

算術右シフトは >>> を使用し、左オペランドが signed の場合は符号ビットを複製します。論理右シフトは >> を使用し、0 で埋めます。負の奇数値の場合、右への算術シフトは、0 方向に切り捨てる integer 除算と同じではありません。

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

reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);

結果はマイナス2です。これは、符号拡張によって負の2の補数表現が維持されるためです。

符号拡張が必要な場合は、signedの左オペランドに>>>を使用します。

challenge icon

チャレンジ

中級

値を算術右シフトして、signed 8ビット値にします。シフト量は0~7です。signed 8ビットの結果 y を返します。負の値は符号ビットで埋められます。出力列:y。すべての刺激値は既知のバイナリ値です。

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

自分で試してみよう

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

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

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

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