VHDL: Componente vs Entidad

21

Me pregunto cuál es la diferencia entre un componente y una entidad. Me gustaría saber en qué casos es mejor usar componentes en lugar de entidades. Muchas gracias.

    
pregunta Peterstone

4 respuestas

16

Aquí hay una analogía que ayuda a algunas personas (especialmente aquellas con antecedentes en electrónica física):

Un component le dice al compilador "va a haber algo con este tipo de pines llamado esto en algún momento, pero no te preocupes por ahora". Es una especie de define un "socket". Puede continuar describiendo qué se "conecta" a ese "zócalo", etc.

Un entity es algo específico con un nombre y un conjunto de pines, que el compilador puede "conectar" a ese "socket" (y, por lo tanto, estar conectado a los "cables").

Tenga en cuenta que no necesita un component que puede hacer "creación de instancias directas", lo que significa que el compilador ya conoce una entidad, por lo que no es necesario definir el "socket" por separado . De hecho, ese sería mi enfoque recomendado, ya que de lo contrario, component es un nivel adicional que se debe mantener sincronizado.

Usted necesita para usar componentes si está mezclando Verilog y VHDL y necesita usar un bloque Verilog dentro de la VHDL. Luego, component es el socket y no hasta mucho después, el compilador / elaborador puede conectar el Verilog en el socket.

    
respondido por el Martin Thompson
12

Una entidad es una interfaz real para una unidad de diseño que puede tener múltiples arquitecturas. Una entidad define cómo las cosas entran y salen, mientras que la arquitectura define cómo el diseño La unidad funciona. Por lo tanto, podría tener varias formas de implementar la misma función, que se describiría con la misma entidad.

Un componente es una unidad de diseño ideal o "virtual". Cuando está haciendo un diseño de arriba hacia abajo (es decir, está juntando el nivel superior antes de que se diseñen los bloques de nivel inferior) puede usar un componente para describir el tipo de interfaz que espera para sus unidades de diseño. Puede pensar en esto como un marcador de posición o una caja negra para una futura implementación real.

Usando configuraciones puede vincular una instancia de componente específica a una definición de entidad. Aquí puede asignar qué puerto debe conectarse a qué puerto. Esto mapea cómo el componente que se definió en el sentido ideal se asigna a la entidad que realmente se implementó.

En la práctica , he encontrado que los componentes son típicamente innecesarios y crean otro nivel de abstracción que normalmente no se usa. Puede omitir el uso (y la necesidad) de los componentes creando una instancia directa de la entidad y haciendo referencia a la arquitectura que se utilizará para esa instancia de la entidad.

Por ejemplo:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...
    
respondido por el Josh
2

De [1] abajo:

Hay una distinción importante entre una entidad, un componente y una instancia de componente en VHDL. La entidad describe una interfaz de diseño, el componente describe la interfaz de una entidad que se utilizará como una instancia (o un subbloque), y la instancia de componente es una copia distinta del componente que se ha conectado a otras partes y señales. . Para compararlos con el proceso de diseño de tablas de pan con partes independientes. La entidad y la arquitectura son como el libro de datos que describe la interfaz y los esquemas de cómo funciona la pieza. El componente es como la lista corta de pines que viene con la parte para describir cómo debe conectarse. La instancia del componente es la parte real en sí misma, de la que puede tener muchas que operen de manera independiente.

Vea [1] para el contexto y más detalles.

Hay numerosos tutoriales de VHDL en línea, por ejemplo [2] [3] ... Libro (84 páginas PDF) [4] Se ve bien [5] Principalmente para enlaces [6]

respondido por el Russell McMahon
0

Una entidad es una unidad de diseño cuyos puertos de entrada-salida están especificados. La entidad simplemente define los puertos externos, mientras que el funcionamiento interno está especificado por la arquitectura correspondiente. Un componente es la unidad de diseño completa que compone la entidad y la arquitectura. El primer paso es la declaración del componente (especificando su nombre y puertos) y luego la creación de instancias del componente (asignación de puertos).

    
respondido por el varshika03

Lea otras preguntas en las etiquetas