Ich frage mich, was der Unterschied zwischen einer Komponente und einer Entität ist. Ich würde gerne wissen, in welchen Fällen es besser ist, Komponenten anstelle von Entitäten zu verwenden. Ich danke dir sehr.
Ich frage mich, was der Unterschied zwischen einer Komponente und einer Entität ist. Ich würde gerne wissen, in welchen Fällen es besser ist, Komponenten anstelle von Entitäten zu verwenden. Ich danke dir sehr.
Antworten:
Hier ist eine Analogie, die einigen Menschen hilft (insbesondere Menschen mit einem Hintergrund in der physikalischen Elektronik):
A component
teilt dem Compiler mit, dass es irgendwann etwas mit diesen Pins geben wird, das man das nennt, aber mach dir vorerst keine Sorgen. Es definiert eine Art "Socket". Sie können weiter beschreiben, was "Drähte" zu dieser "Buchse" usw.
An entity
ist etwas Bestimmtes mit einem Namen und einer Reihe von Pins, die der Compiler dann an diese "Buchse" "anschließen" kann (und daher mit den "Drähten" verbunden werden kann).
Beachten Sie, dass Sie nicht benötigen ein component
können Sie „direkte Instanziierung“ tun , die den Compiler bedeutet bereits kennt eine Einheit , so dass die „Steckdose“ nicht separat werden muss , um festgelegt. In der Tat wäre das mein empfohlener Ansatz, da sonst das component
eine zusätzliche Ebene ist, die synchron gehalten werden muss.
Sie müssen Komponenten verwenden, wenn Sie Verilog und VHDL mischen und einen Verilog-Block in der VHDL verwenden. Dann component
ist das der Socket und erst viel später kann der Compiler / Entwickler den Verilog in den Socket stecken.
Eine Entität ist eine echte Schnittstelle zu einer Designeinheit, die mehrere Architekturen haben kann. Eine Entität definiert, wie Dinge ein- und ausgehen, während die Architektur definiert, wie die Designeinheit arbeitet. Sie können also dieselbe Funktion auf mehrere Arten implementieren, die von derselben Entität beschrieben werden.
Eine Komponente ist eine ideale oder "virtuelle" Designeinheit. Wenn Sie ein Top-Down-Design erstellen (dh Sie stellen die oberste Ebene zusammen, bevor die Blöcke der unteren Ebene erstellt werden), können Sie mithilfe einer Komponente den Schnittstellentyp beschreiben, den Sie für Ihre Designeinheiten erwarten. Sie können sich dies als Platzhalter oder Black Box für eine zukünftige echte Implementierung vorstellen.
Mithilfe von Konfigurationen können Sie eine bestimmte Komponenteninstanz an eine Entitätsdefinition binden. Hier können Sie festlegen, welcher Port mit welchem Port verbunden werden soll. Dadurch wird zugeordnet, wie die im Idealfall definierte Komponente der tatsächlich implementierten Entität zugeordnet wird.
In der Praxis habe ich festgestellt, dass Komponenten normalerweise nicht erforderlich sind und eine andere Abstraktionsebene erstellen, die normalerweise nicht verwendet wird. Sie können die Verwendung (und den Bedarf) von Komponenten überspringen, indem Sie die Entität direkt instanziieren und auf die Architektur verweisen, die für diese Instanz der Entität verwendet werden soll.
Beispielsweise:
MyDesignUnit : entity library_name.entity_name(architecture_name)
port map(
...
Von [1] unten:
In VHDL gibt es einen wichtigen Unterschied zwischen einer Entität, einer Komponente und einer Komponenteninstanz. Die Entität beschreibt eine Entwurfsschnittstelle, die Komponente beschreibt die Schnittstelle einer Entität, die als Instanz (oder als Unterblock) verwendet wird, und die Komponenteninstanz ist eine eindeutige Kopie der Komponente, die mit anderen Teilen und Signalen verbunden wurde . Um diese mit dem Prozess der Brotkartongestaltung mit selbst gefertigten Teilen zu vergleichen. Die Entität und Architektur ähnelt dem Datenbuch, das die Schnittstelle und die Schaltpläne für die Funktionsweise des Teils beschreibt. Die Komponente ist wie die kurze Pin-Liste, die mit dem Teil geliefert wird, um zu beschreiben, wie es angeschlossen werden soll. Die Komponenteninstanz ist das eigentliche Teil, von dem möglicherweise viele unabhängig voneinander arbeiten.
Siehe [1] für den Kontext und weitere Einzelheiten.
Es gibt zahlreiche Online-VHDL-Tutorials, zB [2] [3] ... Buch (84 Seiten PDF) [4] Sieht gut aus [5] Hauptsächlich für Links [6]
Eine Entität ist eine Designeinheit, deren Eingabe-Ausgabe-Ports angegeben sind. Die Entität definiert lediglich die externen Ports, während die interne Funktionsweise durch die entsprechende Architektur festgelegt wird. Eine Komponente ist die komplette Designeinheit, die sowohl aus einer Entität als auch aus einer Architektur besteht. Der erste Schritt ist die Komponentendeklaration (Angabe des Namens und der Ports) und anschließend die Komponenteninstanziierung (Port-Mapping).