VHDL: componente vs entidad

25

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.

Peterstone
fuente
1
Por favor, ¿alguien podría crear una etiqueta llamada 'vs'? Gracias.
Peterstone
77
¿Quieres decir "vs" como en el título? Hm, no es una buena idea, creo.
stevenvh
2
No todos aquí usan Visual Studio ... oh, espera ... te refieres al otro "vs" ¿verdad? ;-)
cbmeeks

Respuestas:

17

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

A componentle dice al compilador "en algún momento habrá algo con este tipo de pines llamado esto, pero no se preocupe por ahora". De alguna manera define un "zócalo". Puede continuar describiendo qué se "conecta" a ese "zócalo", etc.

Un entityes algo específico con un nombre y un conjunto de pines, que el compilador puede "enchufar" en ese "zócalo" (y, por lo tanto, conectarse a los "cables").

Tenga en cuenta que no necesita una component"instanciación directa", lo que significa que el compilador ya conoce una entidad, por lo que el "socket" no necesita definirse por separado. De hecho, ese sería mi enfoque recomendado, ya que de lo contrario componentes un nivel adicional que se debe mantener sincronizado.

Usted necesita utilizar componentes, si usted está mezclando Verilog y VHDL y necesidad de utilizar un bloque Verilog dentro del VHDL. Entonces componentes el socket y no hasta mucho más tarde el compilador / elaborador puede enchufar el Verilog en el socket.

Martin Thompson
fuente
El componente es como el paquete DIP. Podrías usar el mismo amplificador operacional de 8 pines una docena de veces en un circuito, y siempre son 8 pines. Son componentes separados, a pesar de que son el mismo tipo de amplificador operacional. La entidad es como el pinout en la hoja de datos; Todos los amplificadores operacionales separados tienen el mismo pinout.
ajs410
14

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 funciona la unidad de diseño. Por lo tanto, podría tener varias formas de implementar la misma función, que sería descrita por 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á armando el nivel superior antes de diseñar 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 trazar qué puerto debe conectarse a qué puerto. Esto mapea cómo el componente que se definió en el sentido ideal se mapea a la entidad que realmente se implementó.

En la práctica , he descubierto 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 componentes instantaneando directamente la entidad y haciendo referencia a qué arquitectura usar para esa instancia de la entidad.

Por ejemplo:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...
Josh
fuente
2

De [1] a continuación:

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 del componente es una copia distinta del componente que se ha conectado a otras partes y señales . Para comparar esto con el proceso de diseño de placa de pan con piezas independientes. La entidad y la arquitectura es como el libro de datos que describe la interfaz y los esquemas de cómo funciona la pieza. El componente es como la lista de clavijas cortas que viene con la parte para describir cómo se debe conectar. La instancia del componente es la parte en sí misma, de la cual puede tener muchas que funcionan independientemente.

Ver [1] para contexto y más detalles.


Existen 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]

Russell McMahon
fuente
1
parece favorecer los enlaces en las notas finales, pero así es como se hace en forma impresa, y no utiliza hipervínculos como debería ser. Podría haber escrito "Vea este enlace para ver el contexto y más detalles". Mucho más fácil de usar, AFAIC. Sólo una sugerencia.
stevenvh
2
Viejo cerebro :-). Me inclino hacia la máxima información (como habrás notado :-)) y el método de nota final permite a los lectores ver de dónde proviene el enlace y si algunos están en el mismo sitio, como a veces sucede. Para enlaces muy largos, tendería a usar bit.ly / j.mp con un nombre significativo. También he visto usuarios reticentes a hacer clic en un enlace (a pesar de que estos se pueden copiar y pegar para su verificación (trabajo adicional)). PERO señaló el punto y consideraré cada uno como opciones en el futuro.
Russell McMahon
0

Una entidad es una unidad de diseño cuyos puertos de entrada-salida están especificados. La entidad solo 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 (mapeo de puertos).

varshika03
fuente