Menu
Coddy logo textTech

Операторы сравнения

Часть раздела Основы путешествия по Verilog на Coddy — урок 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

Шпаргалка

Операторы сравнения в Verilog сравнивают два значения и возвращают 1 (истина) или 0 (ложь).

ОператорЗначение
==Равно
!=Не равно
>Больше
<Меньше
>=Больше или равно
<=Меньше или равно

Сравнения обычно используются в операторах if:

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

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

Примечание: Результаты являются 1-битными значениями. Использование == или != с сигналами, содержащими X или Z, вернет X.

Попробуйте сами

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Проверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы