Сравнение
Выражение с оператором сравнения даст результат 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