วิธีการเปรียบเทียบตัวเลขสองตัว (อวนตัวแปรค่าคงที่) ใน Verilog


10

ฉันใหม่สำหรับ Verilog และต้องการเรียนรู้วิธีเปรียบเทียบตัวเลขสองตัว ตัวอย่างเช่นลองเปรียบเทียบพารามิเตอร์หรือ reg (พูด a) กับตัวเลข 2 (2'b10) สิ่งนี้จะถูกเขียนใน Verilog อย่างไร

คำตอบ:


11

ความเท่าเทียมกันและตัวดำเนินการสัมพันธ์ (ส่งคืน X หากตัวถูกดำเนินการมี X หรือ 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)

ตัวดำเนินการเอกลักษณ์ (เปรียบเทียบค่าตรรกะ 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 ใน

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

คำเตือน

  1. สำหรับการดำเนินการส่วนใหญ่ตัวถูกดำเนินการอาจเป็นอวนตัวแปรค่าคงที่หรือการเรียกใช้ฟังก์ชัน การดำเนินการบางอย่างไม่ถูกกฎหมายเกี่ยวกับค่าของจริง (อิงดัชนี)
  2. ผู้ประกอบการที่ส่งกลับผลลัพธ์ที่แท้จริง / เท็จจะส่งกลับค่า 1 บิตที่ 1 หมายถึงเป็นจริง 0 หมายถึงเท็จและ X หมายถึงไม่ทราบแน่ชัด
  3. ตัวดำเนินการ === และ! == ไม่สนับสนุนการสังเคราะห์เนื่องจาก Z และ X ไม่มีความหมายเหมือนกันในการจำลองและฮาร์ดแวร์
  4. หากคุณเปรียบเทียบสองตัวเลขที่มีความกว้างไม่เท่ากันจะมีการขยายขนาดเล็กลง ตัวถูกดำเนินการที่ไม่ได้ลงชื่อถูกขยายโดยการขยายซ้ายด้วยศูนย์ ตัวถูกดำเนินการที่เซ็นชื่อจะถูกขยายโดยการขยายไปทางซ้ายด้วยค่าบิตที่สำคัญที่สุด (บิตเครื่องหมาย)

ที่มา: "คู่มืออ้างอิงด่วน Verilog HDL อ้างอิงมาตรฐาน Verilog-2001 (IEEE Std 1364-2001)" โดย Stuart Sutherland


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.