Menu
CoddyTech

保留进位位

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

信号宽度决定了可以表示哪些位。在运算前扩展操作数,可以明确表达算术意图。两个无符号 8 位值相加时,结果可能需要 9 位;只赋值给 8 位会保留低 8 位,并丢失进位。

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

wire [8:0] total;
assign total = {1'b0,a} + {1'b0,b};

每个操作数都明确为 9 位宽,与完整的和位宽一致。

选择所需的结果位宽,并在进行算术运算前扩展操作数。

challenge icon

挑战

中等

将无符号 8 位数 a 和 b 相加,且不丢失进位。将完整的 9 位和返回到 total 中。请显式将两个操作数扩展到 9 位。输出列:total。所有激励值都是已知的二进制值。

请完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在输入稳定后打印输出。它会使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印语句、延迟或模拟终止操作。预期输出为每次观测对应一行十进制值,数值之间用一个空格分隔,并以换行符结尾。

亲手试试

module dut (input [7:0] a, input [7:0] b, output [8:0] total);
    // 用你的设计替换这段占位代码。
    assign total = 0;
endmodule
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器