คุณสามารถใช้คำสั่งขั้นตอนที่ไม่ปิดกั้น เมื่อใดก็ตามที่คุณต้องการมอบหมายงานการลงทะเบียนหลายรายการภายในขั้นตอนเวลาเดียวกัน โดยไม่คำนึงถึงลำดับหรือการพึ่งพาซึ่งกันและกัน หมายความว่าคำสั่ง nonblocking คล้ายกับฮาร์ดแวร์จริงมากกว่าการบล็อกการมอบหมาย
ทำไมเราจึงใช้การไม่บล็อกในบล็อก
การบล็อก (=) และการไม่บล็อก (<=) เป็น ที่ให้มาเพื่อควบคุมคำสั่งดำเนินการภายในบล็อกเสมอ การดำเนินการคำสั่ง การมอบหมายที่ไม่บล็อกไม่ได้บล็อกการดำเนินการคำสั่งถัดไปอย่างแท้จริง ด้านขวาของข้อความทั้งหมดถูกกำหนดก่อน จากนั้นให้กำหนดด้านซ้ายร่วมกัน
คุณจะใช้การมอบหมายการบล็อกกับการไม่บล็อกเมื่อทำการเข้ารหัสลอจิกตามลำดับ
Guideline 1: เมื่อสร้างโมเดลลอจิกตามลำดับ ให้ใช้การมอบหมายที่ไม่บล็อก แนวทาง 2: เมื่อสร้างโมเดลแลตช์ ให้ใช้งานการมอบหมายที่ไม่บล็อก มีหลายวิธีในการโค้ดตรรกะเชิงผสมโดยใช้ Verilog แต่เมื่อเข้ารหัสตรรกะเชิงผสมโดยใช้บล็อกเสมอ ควรใช้การกำหนดการบล็อก
การบล็อกและการไม่บล็อกคืออะไร
บล็อกที่มีพฤติกรรมแตกต่างกันเล็กน้อย • การบล็อกการมอบหมาย: การประเมินและการมอบหมายในทันที • การมอบหมายแบบไม่บล็อก: การมอบหมายทั้งหมดเลื่อนออกไปจนกว่าทั้งหมด ด้านขวามือได้รับการประเมินแล้ว (สิ้นสุดการจำลอง
Verilog ที่บล็อกและไม่บล็อกใช้ที่ไหน
นี่เป็นกฎง่ายๆ สำหรับ Verilog: ใน Verilog หากคุณต้องการ เพื่อสร้างตรรกะตามลำดับ ให้ใช้บล็อกการตอกบัตรเสมอด้วยการกำหนด Nonblocking หากคุณต้องการสร้างตรรกะเชิงผสม ให้ใช้ บล็อกเสมอด้วยการบล็อกการมอบหมายพยายามอย่าผสมทั้งสองอย่างในบล็อกเดียวกันเสมอ