Verilogで2つの数値(ネット、変数、定数)を比較する方法


10

私はVerilogを初めて使用するので、2つの数値を比較する方法を学びたいと思います。たとえば、パラメーターまたはreg(たとえばa)を数値2(2'b10)と比較してみましょう。これはVerilogでどのように記述されますか?

回答:


11

等価演算子と関係演算子(オペランドにXまたはZがある場合はXを返します)

m == n  // is m equal to n? (1-bit True/False result)

m != n  // is m not equal to n? (1-bit True/False result)

m < n   // is m less than n? (1-bit True/False result)

m > n   // is m greater than n? (1-bit True/False result)

m <= n  // is m less than or equal to n? (1-bit True/False result)

m >= n  // is m greater than or equal to n? (1-bit True/False result)

識別演算子(論理値0、1、X、およびZを比較)

m === n // is m identical to n? (1-bit True/False results)

m !== n // is m not identical to n? (1-bit True/False result)

reg aが2'b10未満の場合、2'b11をaに格納します。

if (a < 2'b10) begin
   a = 2'b11;
end

注意事項

  1. ほとんどの演算では、オペランドはネット、変数、定数、または関数呼び出しです。一部の操作は、実際の(浮動小数点)値では無効です。
  2. true / falseの結果を返す演算子は、1ビットの値を返します。1はtrue、0はfalse、Xは不定を表します。
  3. ===および!==演算子は、ZおよびXがシミュレーションとハードウェアで同じ意味を持たないため、合成ではサポートされていません。
  4. 幅の異なる2つの数値を比較すると、小さい方が拡大されます。符号なしオペランドは、ゼロで左拡張することにより拡張されます。符号付きオペランドは、最上位ビット(符号ビット)の値で左拡張することにより展開されます。

出典:Stuart Sutherlandによる「Verilog-2001標準に基づくVerilog HDLクイックリファレンスガイド(IEEE Std 1364-2001)」


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.