Menu
CoddyTech

比较运算符

本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 21 课,共 90 课。

比较运算符用于比较两个值,并返回 1(真)或 0(假)。

可用的比较运算符

运算符含义
==等于
!=不等于
>大于
<小于
>=大于或等于
<=小于或等于

代码示例

module comparison_demo;
  reg [3:0] a, b;
  reg result;
  
  initial begin
    a = 5;
    b = 3;
    
    result = (a == b);
    $display("5 == 3 : %d", result);  // 0(假)
    
    result = (a != b);
    $display("5 != 3 : %d", result);  // 1(真)
    
    result = (a > b);
    $display("5 > 3  : %d", result);  // 1(真)
    
    result = (a < b);
    $display("5 < 3  : %d", result);  // 0(假)
    
    result = (a >= 5);
    $display("5 >= 5 : %d", result);  // 1(真)
    
    result = (a <= 3);
    $display("5 <= 3 : %d", result);  // 0(假)
    $finish;
  end
endmodule

输出:

5 == 3 : 0
5 != 3 : 1
5 > 3  : 1
5 < 3  : 0
5 >= 5 : 1
5 <= 3 : 0

在条件中使用比较

比较常用于 if 语句中:

if (count == 10)
  $display("Reached maximum");

if (value > threshold)
  $display("Value is too high");

重要说明

  • 比较结果是1 位值(0 或 1)
  • 比较适用于任意位宽
  • 当信号包含 X 或 Z 时,请谨慎使用 == 和 !=(如果未知位可能改变结果,它们会返回 X)
challenge icon

挑战

为每项任务写出正确的比较表达式。

要做什么:

  1. 检查 a 是否等于 b,并将结果存入 eq
  2. 检查 a 是否大于 b,并将结果存入 gt
  3. 检查 a 是否小于或等于 b,并将结果存入 le

亲手试试

module comparison_challenge;
  reg [3:0] a, b;
  reg eq, gt, le;
  
  initial begin
    a = 4'd7;
    b = 4'd7;
    
    eq = ______;   // a 等于 b
    gt = ______;   // a 大于 b
    le = ______;   // a 小于或等于 b
    
    $display("a = %d, b = %d", a, b);
    $display("a == b : %d", eq);
    $display("a > b  : %d", gt);
    $display("a <= b : %d", le);
    $finish;
  end
endmodule
quiz icon自我测试

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

基础知识中的所有课

自己练习: Verilog 在线编译器