Сравнение

Выражение с оператором сравнения даст результат 1, если выражение истинно (true), иначе – 0 (false). Если любой из операндов равен X или Z, то результатом будет X.

У операторов проверки на равенство результат равен 1, если true, и 0, если false. Если любой из операндов логического равенства (==) или логического неравенства (!=) равен X или Z, то результатом будет X. Также есть оператор точного равенства (===) или оператор точного неравенства (!==) для проверки без каких-либо преобразований.

Пример

// <тип данных> <переменная> <оператор> <выражение>
module comparison_tb;
  reg [7:0] a, b, c, d;

  initial begin
    a = 8'd4; b = 8'd5;
    $display("a = %0d, b = %0d", a, b);
    $display("(a == a) = %b", a == a); // равно
    $display("(a == b) = %b", a == b); 
    $display("(a != b) = %b", a != b);  // не равно

    $display("(a < b)  = %b", a < b);   // меньше
    $display("(a <= b) = %b", a <= b);  // меньше или равно
    $display("(a > b)  = %b", a > b);   // больше
    $display("(a >= b) = %b", a >= b);  // больше или равно
    
    a = 8'dz; b = 8'dx;     
    $display("a = %0d, b = %0d", a, b);
    $display("(a == X) = %b", a == 8'bx); 
    $display("(a == Z) = %b", a == 8'bz); 
    $display("(b == X) = %b", b == 8'bx); 
    $display("(b == Z) = %b", b == 8'bz); 
    $display("(a === X) = %b", a === 8'bx); 
    $display("(a === Z) = %b", a === 8'bz); 
    $display("(b === X) = %b", b === 8'bx); 
    $display("(b === Z) = %b", b === 8'bz); 
  end
endmodule

Результат исполнения

a = 4, b = 5
(a == a) = 1
(a == b) = 0
(a != b) = 1
(a < b)  = 1
(a <= b) = 1
(a > b)  = 0
(a >= b) = 0
a = z, b = x
(a == X) = x
(a == Z) = x
(b == X) = x
(b == Z) = x
(a === X) = 0
(a === Z) = 1
(b === X) = 1
(b === Z) = 0

Last updated