ฉันกำลังวิเคราะห์รหัส 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กลายเป็นค่าบิตเดียวบรรทัดนี้ยังคงถูกต้องทางเทคนิคดังนั้นตัวดำเนินการลดที่ไม่จำเป็นในตอนนี้จึงถูกทิ้งไว้