ฉันกำลังวิเคราะห์รหัส verilog และพบสิ่งที่ต้องการ
wire z = |a & b;
ในขณะที่ simultation โค้ดจะทำงานเหมือน
wire z = a & b;
ดังนั้นฉันสงสัยว่าความหมายของ|
สัญลักษณ์ (ไพพ์) คืออะไร? มันมีผลกระทบต่อการจำลอง / การสังเคราะห์หรือไม่?
ฉันกำลังวิเคราะห์รหัส verilog และพบสิ่งที่ต้องการ
wire z = |a & b;
ในขณะที่ simultation โค้ดจะทำงานเหมือน
wire z = a & b;
ดังนั้นฉันสงสัยว่าความหมายของ|
สัญลักษณ์ (ไพพ์) คืออะไร? มันมีผลกระทบต่อการจำลอง / การสังเคราะห์หรือไม่?
คำตอบ:
นี้เป็นผู้ประกอบการลดลงเล็กน้อยที่ชาญฉลาด |a & b
วิธีที่คุณใช้ตรรกะหรือบิตทั้งหมดa
(ผลิตบิตเดียว) b
แล้วทำตรรกะและบิตที่และ |a
ไม่มีผลเมื่อa
เป็นบิตเดียว
อย่างไรก็ตามเป็นเรื่องปกติที่จะเห็นการลดค่าบิตอย่างชาญฉลาดที่ใช้กับค่าบิตเดียว กรณีทั่วไปหนึ่งกรณีคือรหัสที่สร้างขึ้นอัตโนมัติซึ่งความกว้างจริงa
อาจขึ้นอยู่กับการกำหนดค่า ความเป็นไปได้อีกอย่างหนึ่งก็คือนี่เป็นรหัสดั้งเดิมซึ่งa
ครั้งหนึ่งเคยมีหลายบิต เมื่อa
กลายเป็นค่าบิตเดียวบรรทัดนี้ยังคงถูกต้องทางเทคนิคดังนั้นตัวดำเนินการลดที่ไม่จำเป็นในตอนนี้จึงถูกทิ้งไว้