VHDL: Component vs Entity


25

ฉันสงสัยว่าอะไรคือความแตกต่างระหว่างส่วนประกอบของเอนทิตี ฉันต้องการทราบว่าในกรณีใดควรใช้ส่วนประกอบแทนเอนทิตี ขอบคุณมาก.


1
ได้โปรดใคร ๆ ก็สามารถสร้างแท็ก 'vs' ได้ ขอขอบคุณ.
Peterstone

7
คุณหมายถึง "vs" เหมือนในชื่อหรือไม่ หืมไม่ใช่ความคิดที่ดีนะ
stevenvh

2
ไม่ใช่ทุกคนที่นี่ใช้ Visual Studio .... โอ้เดี๋ยวก่อน ... คุณหมายถึง "vs" อีกคนใช่มั้ย ;-)
cbmeeks

คำตอบ:


17

นี่คือการเปรียบเทียบที่ช่วยให้บางคน (โดยเฉพาะผู้ที่มาจากภูมิหลังทางกายภาพอิเล็กทรอนิกส์):

A componentบอกคอมไพเลอร์ "จะมีบางสิ่งบางอย่างกับหมุดประเภทนี้ที่เรียกว่าสิ่งนี้ในบางจุด แต่ไม่ต้องกังวลตอนนี้" มันเรียงลำดับของ "ซ็อกเก็ต" คุณสามารถอธิบายสิ่งที่ "สายไฟ" กับ "ซ็อกเก็ต" นั้นเป็นต้น

An entityเป็นสิ่งที่เฉพาะเจาะจงกับชื่อและชุดของหมุดซึ่งคอมไพเลอร์สามารถ "เสียบ" กับ "ซ็อกเก็ต" นั้น (และเชื่อมต่อกับ "สาย")

โปรดทราบว่าคุณไม่ต้องการให้componentคุณสามารถ "direct instantiation" ซึ่งหมายความว่าคอมไพเลอร์รู้อยู่แล้วเกี่ยวกับเอนทิตีดังนั้น "ซ็อกเก็ต" จึงไม่จำเป็นต้องกำหนดแยกต่างหาก ในความเป็นจริงนั้นเป็นแนวทางที่แนะนำของฉันไม่เช่นนั้นcomponentจะเป็นระดับพิเศษที่จะซิงค์

คุณต้องใช้ส่วนประกอบถ้าคุณกำลังผสม Verilog และ VHDL และจำเป็นต้องใช้ Verilog block ภายใน VHDL จากนั้นcomponentจะเป็นซ็อกเก็ตและไม่สามารถคอมไพเลอร์ / elaborator เสียบในภายหลังได้ Verilog เข้ากับซ็อกเก็ต


ส่วนประกอบเหมือนแพคเกจกรมทรัพย์สินทางปัญญา คุณสามารถใช้ 8-pin op-amp หนึ่งครั้งในวงจรเดียวกันและมันก็เป็น 8 พินเสมอ มันเป็นส่วนประกอบที่แยกจากกันแม้ว่าจะเป็นแอมป์สหกรณ์ชนิดเดียวกัน เอนทิตีเป็นเหมือน pinout บนแผ่นข้อมูล op-amps ที่แยกต่างหากทั้งหมดมี pinout เดียวกัน
ajs410

14

นิติบุคคลเป็นอินเตอร์เฟซที่แท้จริงให้กับหน่วยการออกแบบซึ่งจะมีหลายสถาปัตยกรรม เอนทิตีกำหนดวิธีการรับเข้าและออกในขณะที่สถาปัตยกรรมกำหนดวิธีการทำงานของหน่วยการออกแบบ ดังนั้นคุณสามารถมีหลายวิธีในการใช้ฟังก์ชั่นเดียวกันซึ่งจะอธิบายโดยนิติบุคคลเดียวกัน

องค์ประกอบที่เหมาะหรือ "เสมือน" หน่วยการออกแบบ เมื่อคุณทำการออกแบบจากบนลงล่าง (เช่นคุณกำลังรวบรวมระดับบนสุดก่อนที่บล็อกระดับล่างจะได้รับการออกแบบ) คุณสามารถใช้ส่วนประกอบเพื่ออธิบายประเภทของอินเทอร์เฟซที่คุณคาดหวังสำหรับหน่วยการออกแบบของคุณ คุณสามารถคิดว่านี่เป็นที่ยึดหรือกล่องดำสำหรับการนำไปใช้จริงในอนาคต

การใช้การกำหนดค่าคุณสามารถผูกอินสแตนซ์ของคอมโพเนนต์เฉพาะกับข้อกำหนดเอนทิตี ที่นี่คุณสามารถแมปพอร์ตที่ควรเชื่อมต่อกับพอร์ต สิ่งนี้ทำแผนที่ว่าองค์ประกอบที่กำหนดไว้ในความหมายในอุดมคติจะจับคู่กับเอนทิตีที่นำไปใช้จริงได้อย่างไร

ในทางปฏิบัติฉันพบว่าส่วนประกอบโดยทั่วไปไม่จำเป็นและสร้างอีกระดับของนามธรรมที่ไม่ได้ใช้ คุณสามารถข้ามการใช้งาน (และจำเป็น) สำหรับส่วนประกอบโดยการสร้างอินสแตนซ์ของเอนทิตีโดยตรงและอ้างอิงสถาปัตยกรรมที่จะใช้สำหรับอินสแตนซ์ของเอนทิตีนั้น

ตัวอย่างเช่น:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...

2

จาก [1] ด้านล่าง:

มีความแตกต่างที่สำคัญระหว่างเอนทิตีส่วนประกอบและอินสแตนซ์ขององค์ประกอบใน VHDL เอนทิตีอธิบายอินเทอร์เฟซการออกแบบส่วนประกอบอธิบายถึงอินเทอร์เฟซของเอนทิตีที่จะใช้เป็นอินสแตนซ์ (หรือบล็อกย่อย) และอินสแตนซ์ของคอมโพเนนต์เป็นสำเนาที่ชัดเจนของส่วนประกอบที่เชื่อมต่อกับส่วนอื่น ๆ และสัญญาณ . เพื่อเปรียบเทียบสิ่งเหล่านี้กับกระบวนการออกแบบบอร์ดขนมปังกับชิ้นส่วนที่ไม่ได้ประกอบเอง เอนทิตีและสถาปัตยกรรมนั้นเหมือนกับหนังสือข้อมูลที่อธิบายถึงอินเทอร์เฟซและแผนผังของการทำงานของชิ้นส่วน ส่วนประกอบเหมือนกับรายการขาสั้นที่มาพร้อมกับชิ้นส่วนเพื่ออธิบายวิธีการเชื่อมต่อ อินสแตนซ์ของส่วนประกอบเป็นส่วนที่เกิดขึ้นจริงซึ่งคุณอาจมีหลายอย่างที่แต่ละส่วนทำงานอย่างอิสระ

ดู [1] สำหรับบริบทและรายละเอียดเพิ่มเติม


มีบทเรียน VHDL จำนวนมากในบรรทัดเช่น [2] [3] ... หนังสือ (หน้า 84 PDF) [4] ดูดี [5] ส่วนใหญ่ใช้สำหรับลิงก์ [6]


1
ดูเหมือนว่าคุณจะชอบลิงค์ในอ้างอิงท้ายเรื่อง แต่นั่นเป็นวิธีการพิมพ์และไม่ใช้การเชื่อมโยงหลายมิติเหมือนที่ตั้งใจจะใช้ คุณสามารถเขียน "ดูลิงค์นี้สำหรับบริบทและรายละเอียดเพิ่มเติม" AFAIC ใช้งานง่ายขึ้น เพียงข้อเสนอแนะ
stevenvh

2
สมองเก่า :-) ฉันเอนตัวไปที่ข้อมูลสูงสุด (ตามที่คุณจะสังเกตเห็น :-)) และวิธีการอ้างอิงท้ายสุดช่วยให้ผู้อ่านเห็นว่าลิงก์มาจากที่ใดและอยู่ในไซต์เดียวกันบ้างหรือไม่ - บางครั้งก็เกิดขึ้น สำหรับลิงค์ที่ยาวมาก ๆ ฉันมักจะใช้ bit.ly / j.mp ด้วยชื่อที่มีความหมาย ฉันยังเห็นผู้ใช้ไม่เข้าใจเกี่ยวกับการคลิกที่ลิงก์ (แม้ว่าผู้ใช้สามารถคัดลอกและวางเพื่อตรวจสอบได้ (ทำงานพิเศษ)) แต่จุดสังเกตและฉันจะพิจารณาแต่ละตัวเลือกในอนาคต
รัสเซลแม็คมาฮอน

0

เอนทิตีคือหน่วยการออกแบบที่ระบุพอร์ตอินพุต - เอาท์พุต เอนทิตีเพียงกำหนดพอร์ตภายนอกในขณะที่การทำงานภายในถูกระบุโดยสถาปัตยกรรมที่สอดคล้องกัน ส่วนประกอบคือหน่วยการออกแบบที่สมบูรณ์ซึ่งประกอบด้วยทั้งเอนทิตีและสถาปัตยกรรม ขั้นตอนแรกคือการประกาศส่วนประกอบ (ระบุชื่อและพอร์ต) จากนั้นเริ่มต้นส่วนประกอบ (การจับคู่พอร์ต)

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