Bagaimana membandingkan dua angka (jaring, variabel, konstanta) di Verilog


10

Saya baru mengenal Verilog, dan ingin belajar cara membandingkan dua angka. Sebagai contoh, mari kita bandingkan parameter atau reg (ucapkan a) dengan angka 2 (2'b10). Bagaimana ini akan ditulis dalam Verilog?

Jawaban:


11

Kesetaraan dan Operator Relasional (mengembalikan X jika operan memiliki X atau Z)

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)

Operator Identitas (bandingkan nilai logika 0, 1, X, dan 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)

Contoh

Jika reg a kurang dari 2'b10, simpan 2'b11 di a.

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

Peringatan

  1. Untuk sebagian besar operasi, operan dapat berupa jaring, variabel, konstanta atau panggilan fungsi. Beberapa operasi tidak legal pada nilai riil (floating-point).
  2. Operator yang mengembalikan hasil benar / salah akan mengembalikan nilai 1-bit di mana 1 mewakili benar, 0 mewakili salah, dan X mewakili tak tentu
  3. Operator === dan! == tidak didukung untuk sintesis, karena Z dan X tidak memiliki arti yang sama dalam simulasi dan perangkat keras.
  4. Jika Anda membandingkan dua angka lebar yang tidak sama, yang lebih kecil akan diperluas. Operan yang tidak ditandatangani diperluas dengan ekstensi kiri dengan nol. Operan yang ditandatangani diperluas dengan meluas ke kiri dengan nilai bit yang paling signifikan (bit tanda).

Sumber: "Panduan Referensi Cepat Verilog HDL berdasarkan standar Verilog-2001 (IEEE Std 1364-2001)" oleh Stuart Sutherland


1

Operator perbandingan numerik Verilog mirip dengan yang ada di C: ==,! =, <,>, <=,> =.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.