VHDL: composant vs entité


25

Je me demande quelle est la différence entre la composante d'une entité. Je voudrais savoir dans quels cas il vaut mieux utiliser des composants plutôt que des entités. Merci beaucoup.


1
S'il vous plaît, quelqu'un pourrait-il créer un appel de balise «vs». Merci.
Peterstone

7
Vous voulez dire "vs" comme dans le titre? Hm, pas une bonne idée, il me semble.
stevenvh

2
Tout le monde ici n'utilise pas Visual Studio .... oh attendez ... vous vouliez dire l'autre "vs" non? ;-)
cbmeeks

Réponses:


17

Voici une analogie qui aide certaines personnes (en particulier celles issues de l'électronique physique):

A componentdit au compilateur "il va y avoir quelque chose avec ce genre de broches appelé à un moment donné, mais ne vous inquiétez pas pour l'instant". Il définit en quelque sorte un "socket". Vous pouvez continuer à décrire ce que "les fils" à cette "prise" etc.

An entityest quelque chose de spécifique avec un nom et un ensemble de broches, que le compilateur peut ensuite "brancher" à cette "prise" (et donc être connecté aux "fils").

Notez que vous n'avez pas besoin d' un, componentvous pouvez faire une "instanciation directe" ce qui signifie que le compilateur connaît déjà une entité, donc le "socket" n'a pas besoin d'être défini séparément. En fait, ce serait mon approche recommandée, car sinon componentc'est un niveau supplémentaire à garder synchronisé.

Vous devez utiliser des composants si vous mélangez Verilog et VHDL et devez utiliser un bloc Verilog dans le VHDL. Ensuite, componentc'est le socket et ce n'est que bien plus tard que le compilateur / élaborateur peut brancher le Verilog dans le socket.


Le composant est comme le package DIP. Vous pouvez utiliser le même ampli op 8 broches une douzaine de fois dans un circuit, et c'est toujours 8 broches. Ce sont des composants séparés, même s'ils sont du même type d'ampli op. L'entité est comme le brochage sur la fiche technique; tous les amplificateurs opérationnels séparés ont le même brochage.
ajs410

14

Une entité est une véritable interface avec une unité de conception qui peut avoir plusieurs architectures. Une entité définit comment les éléments entrent et sortent, tandis que l'architecture définit le fonctionnement de l'unité de conception. Vous pouvez donc avoir plusieurs façons d'implémenter la même fonction, qui seraient décrites par la même entité.

Un composant est une unité de conception idéale ou "virtuelle". Lorsque vous effectuez une conception descendante (c'est-à-dire que vous assemblez le niveau supérieur avant la conception des blocs de niveau inférieur), vous pouvez utiliser un composant pour décrire le type d'interface que vous attendez pour vos unités de conception. Vous pouvez penser à cela comme un espace réservé ou une boîte noire pour une future mise en œuvre réelle.

À l'aide de configurations, vous pouvez lier une instance de composant spécifique à une définition d'entité. Ici, vous pouvez définir quel port doit se connecter à quel port. Cela mappe la façon dont le composant défini dans le sens idéal correspond à l'entité qui a été réellement implémentée.

Dans la pratique , j'ai constaté que les composants sont généralement inutiles et créent un autre niveau d'abstraction qui n'est généralement pas utilisé. Vous pouvez ignorer l'utilisation (et le besoin) de composants en instanciant directement l'entité et en référençant l'architecture à utiliser pour cette instance de l'entité.

Par exemple:

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

2

De [1] ci-dessous:

Il existe une distinction importante entre une entité, un composant et une instance de composant dans VHDL. L'entité décrit une interface de conception, le composant décrit l'interface d'une entité qui sera utilisée comme instance (ou sous-bloc) et l'instance de composant est une copie distincte du composant qui a été connecté à d'autres parties et signaux. . Pour les comparer avec le processus de conception de la planche à pain avec des pièces détachées. L'entité et l'architecture sont comme le livre de données décrivant l'interface et les schémas de fonctionnement de la pièce. Le composant est semblable à la brève liste des broches fournie avec la pièce pour décrire comment il doit être connecté. L'instance de composant est la pièce proprement dite, dont vous pouvez en avoir plusieurs qui fonctionnent chacune indépendamment.

Voir [1] pour le contexte et plus de détails.


Il existe de nombreux didacticiels VHDL en ligne, par exemple [2] [3] ... Livre (PDF de 84 pages) [4] A l'air bien [5] Principalement pour les liens [6]


1
vous semblez privilégier les liens dans les notes de fin, mais c'est ainsi que cela se fait sur papier et n'utilisez pas d'hyperlien comme il est censé être utilisé. Vous auriez pu écrire "Voir ce lien pour le contexte et plus de détails". Beaucoup plus convivial, AFAIC. Juste une suggestion.
stevenvh

2
Vieux cerveau :-). Je me penche vers un maximum d'informations (comme vous l'avez remarqué :-)) et la méthode des notes de fin permet aux lecteurs de voir d'où vient le lien et si certains sont sur le même site - comme cela arrive parfois. Pour les liens très longs, j'aurais tendance à utiliser bit.ly / j.mp avec un nom significatif. J'ai également vu des utilisateurs réticents à cliquer sur un lien (même si ceux-ci peuvent être copiés et collés pour vérification (travail supplémentaire)). MAIS le point est noté et je considérerai chacune comme options à l'avenir.
Russell McMahon

0

Une entité est une unité de conception dont les ports d'entrée-sortie sont spécifiés. L'entité définit simplement les ports externes tandis que le fonctionnement interne est spécifié par l'architecture correspondante. Un composant est l'unité de conception complète composée à la fois de l'entité et de l'architecture. La première étape est la déclaration du composant (en spécifiant son nom et ses ports) puis l'instanciation du composant (mappage de port).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.