有符号比较
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 7 课,共 38 课。
相同的位模式可以表示不同的 signed 数和无符号数。比较二进制补码值时,将两个操作数都声明为 signed。混用 signed 和无符号操作数可能会改变比较时的解释方式。拼接表达式是无符号表达式,即使其中包含 signed 信号也是如此。
相关摘录;周围的声明和连接已在挑战中提供。
wire signed [7:0] a,b;
assign less = a < b;signed 声明会让负值与非负值比较时小于非负值。
保持比较运算数的 signed 属性一致,并使用符号位扩展 signed 值。
挑战
中等比较 8 位 signed 类型的 a 和 b。当 a 小于 b 时输出 less,相等时输出 equal。两个输入都是二进制补码 signed 值。输出列:less、equal。所有激励值都是已知的二进制值。
完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在输出稳定后打印输出。它会使用模拟器参数(例如 +CASE=1)选择一个场景;不需要标准输入。不要在设计中添加打印、延迟或仿真终止操作。预期输出为每次观测一行十进制值,值之间用一个空格分隔,并以换行符结尾。
亲手试试
module dut (input signed [7:0] a, input signed [7:0] b, output less, output equal);
// 用你的设计替换这里的占位内容。
assign less = 0;
assign equal = 0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器