ฉันสงสัยว่าอะไรคือความแตกต่างระหว่างส่วนประกอบของเอนทิตี ฉันต้องการทราบว่าในกรณีใดควรใช้ส่วนประกอบแทนเอนทิตี ขอบคุณมาก.
ฉันสงสัยว่าอะไรคือความแตกต่างระหว่างส่วนประกอบของเอนทิตี ฉันต้องการทราบว่าในกรณีใดควรใช้ส่วนประกอบแทนเอนทิตี ขอบคุณมาก.
คำตอบ:
นี่คือการเปรียบเทียบที่ช่วยให้บางคน (โดยเฉพาะผู้ที่มาจากภูมิหลังทางกายภาพอิเล็กทรอนิกส์):
A component
บอกคอมไพเลอร์ "จะมีบางสิ่งบางอย่างกับหมุดประเภทนี้ที่เรียกว่าสิ่งนี้ในบางจุด แต่ไม่ต้องกังวลตอนนี้" มันเรียงลำดับของ "ซ็อกเก็ต" คุณสามารถอธิบายสิ่งที่ "สายไฟ" กับ "ซ็อกเก็ต" นั้นเป็นต้น
An entity
เป็นสิ่งที่เฉพาะเจาะจงกับชื่อและชุดของหมุดซึ่งคอมไพเลอร์สามารถ "เสียบ" กับ "ซ็อกเก็ต" นั้น (และเชื่อมต่อกับ "สาย")
โปรดทราบว่าคุณไม่ต้องการให้component
คุณสามารถ "direct instantiation" ซึ่งหมายความว่าคอมไพเลอร์รู้อยู่แล้วเกี่ยวกับเอนทิตีดังนั้น "ซ็อกเก็ต" จึงไม่จำเป็นต้องกำหนดแยกต่างหาก ในความเป็นจริงนั้นเป็นแนวทางที่แนะนำของฉันไม่เช่นนั้นcomponent
จะเป็นระดับพิเศษที่จะซิงค์
คุณต้องใช้ส่วนประกอบถ้าคุณกำลังผสม Verilog และ VHDL และจำเป็นต้องใช้ Verilog block ภายใน VHDL จากนั้นcomponent
จะเป็นซ็อกเก็ตและไม่สามารถคอมไพเลอร์ / elaborator เสียบในภายหลังได้ Verilog เข้ากับซ็อกเก็ต
นิติบุคคลเป็นอินเตอร์เฟซที่แท้จริงให้กับหน่วยการออกแบบซึ่งจะมีหลายสถาปัตยกรรม เอนทิตีกำหนดวิธีการรับเข้าและออกในขณะที่สถาปัตยกรรมกำหนดวิธีการทำงานของหน่วยการออกแบบ ดังนั้นคุณสามารถมีหลายวิธีในการใช้ฟังก์ชั่นเดียวกันซึ่งจะอธิบายโดยนิติบุคคลเดียวกัน
องค์ประกอบที่เหมาะหรือ "เสมือน" หน่วยการออกแบบ เมื่อคุณทำการออกแบบจากบนลงล่าง (เช่นคุณกำลังรวบรวมระดับบนสุดก่อนที่บล็อกระดับล่างจะได้รับการออกแบบ) คุณสามารถใช้ส่วนประกอบเพื่ออธิบายประเภทของอินเทอร์เฟซที่คุณคาดหวังสำหรับหน่วยการออกแบบของคุณ คุณสามารถคิดว่านี่เป็นที่ยึดหรือกล่องดำสำหรับการนำไปใช้จริงในอนาคต
การใช้การกำหนดค่าคุณสามารถผูกอินสแตนซ์ของคอมโพเนนต์เฉพาะกับข้อกำหนดเอนทิตี ที่นี่คุณสามารถแมปพอร์ตที่ควรเชื่อมต่อกับพอร์ต สิ่งนี้ทำแผนที่ว่าองค์ประกอบที่กำหนดไว้ในความหมายในอุดมคติจะจับคู่กับเอนทิตีที่นำไปใช้จริงได้อย่างไร
ในทางปฏิบัติฉันพบว่าส่วนประกอบโดยทั่วไปไม่จำเป็นและสร้างอีกระดับของนามธรรมที่ไม่ได้ใช้ คุณสามารถข้ามการใช้งาน (และจำเป็น) สำหรับส่วนประกอบโดยการสร้างอินสแตนซ์ของเอนทิตีโดยตรงและอ้างอิงสถาปัตยกรรมที่จะใช้สำหรับอินสแตนซ์ของเอนทิตีนั้น
ตัวอย่างเช่น:
MyDesignUnit : entity library_name.entity_name(architecture_name)
port map(
...
จาก [1] ด้านล่าง:
มีความแตกต่างที่สำคัญระหว่างเอนทิตีส่วนประกอบและอินสแตนซ์ขององค์ประกอบใน VHDL เอนทิตีอธิบายอินเทอร์เฟซการออกแบบส่วนประกอบอธิบายถึงอินเทอร์เฟซของเอนทิตีที่จะใช้เป็นอินสแตนซ์ (หรือบล็อกย่อย) และอินสแตนซ์ของคอมโพเนนต์เป็นสำเนาที่ชัดเจนของส่วนประกอบที่เชื่อมต่อกับส่วนอื่น ๆ และสัญญาณ . เพื่อเปรียบเทียบสิ่งเหล่านี้กับกระบวนการออกแบบบอร์ดขนมปังกับชิ้นส่วนที่ไม่ได้ประกอบเอง เอนทิตีและสถาปัตยกรรมนั้นเหมือนกับหนังสือข้อมูลที่อธิบายถึงอินเทอร์เฟซและแผนผังของการทำงานของชิ้นส่วน ส่วนประกอบเหมือนกับรายการขาสั้นที่มาพร้อมกับชิ้นส่วนเพื่ออธิบายวิธีการเชื่อมต่อ อินสแตนซ์ของส่วนประกอบเป็นส่วนที่เกิดขึ้นจริงซึ่งคุณอาจมีหลายอย่างที่แต่ละส่วนทำงานอย่างอิสระ
ดู [1] สำหรับบริบทและรายละเอียดเพิ่มเติม
มีบทเรียน VHDL จำนวนมากในบรรทัดเช่น [2] [3] ... หนังสือ (หน้า 84 PDF) [4] ดูดี [5] ส่วนใหญ่ใช้สำหรับลิงก์ [6]
เอนทิตีคือหน่วยการออกแบบที่ระบุพอร์ตอินพุต - เอาท์พุต เอนทิตีเพียงกำหนดพอร์ตภายนอกในขณะที่การทำงานภายในถูกระบุโดยสถาปัตยกรรมที่สอดคล้องกัน ส่วนประกอบคือหน่วยการออกแบบที่สมบูรณ์ซึ่งประกอบด้วยทั้งเอนทิตีและสถาปัตยกรรม ขั้นตอนแรกคือการประกาศส่วนประกอบ (ระบุชื่อและพอร์ต) จากนั้นเริ่มต้นส่วนประกอบ (การจับคู่พอร์ต)