比較演算子
CoddyのVerilogジャーニー「基礎」セクションの一部 — レッスン 21/90。
比較演算子は2つの値を比較し、1(真)または0(偽)のいずれかを返します。
使用可能な比較演算子
| 演算子 | 意味 |
|---|---|
== | 等しい(Equal to) |
!= | 等しくない(Not equal to) |
> | より大きい(Greater than) |
< | より小さい(Less than) |
>= | 以上(Greater than or equal) |
<= | 以下(Less than or equal) |
コード例
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 を返します)
チャレンジ
各タスクに対して正しい比較式を記述してください。
手順:
aとbがequalかどうかを確認し、eqに格納しますaがbよりgreaterthanかどうかを確認し、gtに格納しますaがb以下(lessthanorequalto)かどうかを確認し、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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。