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.
Hier ist eine Analogie, die einigen Leuten hilft (insbesondere denen mit einem Hintergrund in der physikalischen Elektronik):
A component
sagt dem Compiler: "Irgendwann wird es etwas mit dieser Art von Pins geben, das so heißt, aber mach dir jetzt keine Sorgen." Es definiert eine Art "Buchse". Sie können fortfahren zu beschreiben, was mit dieser "Buchse" usw. "verkabelt" ist.
Ein entity
ist etwas Bestimmtes mit einem Namen und einer Reihe von Pins, die der Compiler dann an diese "Buchse" "anstecken" kann (und somit mit den "Drähten" verbunden wird).
Beachten Sie, dass Sie keine "direkte Instanziierung" benötigencomponent
, was bedeutet, dass der Compiler bereits über eine Entität Bescheid weiß, sodass der "Socket" nicht separat definiert werden muss. Tatsächlich wäre das mein empfohlener Ansatz, da es sich sonst component
um eine zusätzliche Ebene handelt, die synchron gehalten werden muss.
Sie müssen Komponenten verwenden, wenn Sie Verilog und VHDL mischen und einen Verilog-Block innerhalb der VHDL verwenden müssen. Dann component
ist das der Socket und erst viel später kann der Compiler/Elaborator das 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 rein und raus kommen, während die Architektur definiert, wie die Designeinheit funktioniert. Sie könnten also mehrere Möglichkeiten haben, dieselbe Funktion zu implementieren, die von derselben Entität beschrieben würde.
Eine Komponente ist eine ideale oder "virtuelle" Konstruktionseinheit. Wenn Sie ein Top-Down-Design durchführen (dh Sie bauen die oberste Ebene zusammen, bevor die Blöcke der unteren Ebene entworfen werden), können Sie eine Komponente verwenden, um die Art der Schnittstelle zu beschreiben, die Sie für Ihre Designeinheiten erwarten. Sie können sich dies als Platzhalter oder Blackbox für eine zukünftige reale 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. Diese bildet ab, wie die im ideellen Sinne definierte Komponente auf die tatsächlich implementierte Entität abgebildet wird.
In der Praxis habe ich festgestellt, dass Komponenten normalerweise unnötig sind und eine weitere Abstraktionsebene schaffen, die normalerweise nicht verwendet wird. Sie können die Verwendung (und Notwendigkeit) von Komponenten überspringen, indem Sie die Entität direkt instanziieren und darauf verweisen, welche Architektur für diese Instanz der Entität verwendet werden soll.
Zum Beispiel:
MyDesignUnit : entity library_name.entity_name(architecture_name)
port map(
...
Von [1] unten:
Es gibt einen wichtigen Unterschied zwischen einer Entität, einer Komponente und einer Komponenteninstanz in VHDL. Die Entität beschreibt eine Designschnittstelle, die Komponente beschreibt die Schnittstelle einer Entität, die als Instanz (oder Unterblock) verwendet wird, und die Komponenteninstanz ist eine eindeutige Kopie der Komponente, die mit anderen Teilen und Signalen verbunden wurde . Vergleichen Sie diese mit dem Prozess des Entwurfs von Steckbrettern mit Einzelteilen von der Stange. Die Entität und Architektur ist wie das Datenbuch, das die Schnittstelle und die Schemata der 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 sollte. Die Komponenteninstanz ist der eigentliche Teil selbst, von dem Sie möglicherweise viele haben, die jeweils unabhängig voneinander arbeiten.
Siehe [1] für Kontext und weitere Details.
Es gibt zahlreiche VHDL-Tutorials online, z. B. [2][3] ... Buch (84-seitiges PDF) [4] Sieht gut aus [5] Hauptsächlich für Links [6]
Eine Entität ist eine Designeinheit, deren Input-Output-Ports spezifiziert sind. Die Entität definiert nur die externen Ports, während die interne Funktionsweise durch die entsprechende Architektur festgelegt wird. Eine Komponente ist die vollständige Designeinheit, die aus Entität und Architektur besteht. Der erste Schritt ist die Komponentendeklaration (Angabe des Namens und der Ports) und dann die Instanziierung der Komponente (Port-Mapping).
Peterstein
stevenvh
cbmeeks