Menu
CoddyTech

比較演算子

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を返します)
challenge icon

チャレンジ

各タスクに対応する正しい比較式を書きましょう。

すること:

  1. aがbと等しいかを確認し、eqに格納します
  2. aがbより大きいかを確認し、gtに格納します
  3. 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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ