比較演算子
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に格納する
チートシート
Verilogの比較演算子は2つの値を比較し、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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。