比較演算子
CoddyのVerilogジャーニー「基礎」セクションの一部。レッスン 21/90。
比較演算子は2つの値を比較し、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を返します)
チャレンジ
各タスクに対応する正しい比較式を書きましょう。
すること:
aがbと等しいかを確認し、eqに格納しますaがbより大きいかを確認し、gtに格納します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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Verilogオンラインコンパイラ