Menu
CoddyTech

算术右移

本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 8 课,共 38 课。

算术右移使用 >>>,当左操作数为 signed 时会复制符号位。逻辑右移使用 >>,并用零填充。对于负奇数,算术右移的结果与向零截断的 integer 除法不同。

相关摘录;挑战中提供了周围的声明和连接。

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

结果是负二,因为符号扩展保留了负数的二进制补码解释。

需要进行符号扩展时,使用带符号的左操作数和 >>>。

challenge icon

挑战

中等

将有符号的 8 位值算术右移指定的位数(0 到 7)。返回有符号的 8 位结果 y。负值用其符号位填充。输出列:y。所有激励值都是已知的二进制值。

完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在信号稳定后打印输出。它会使用模拟器参数(例如 +CASE=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 在线编译器