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.
vhdl
components
Peterstone
fuente
fuente
Respuestas:
Aquí hay una analogía que ayuda a algunas personas (especialmente aquellas con experiencia en electrónica física):
A
component
le 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
entity
es 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 contrariocomponent
es 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
component
es el socket y no hasta mucho más tarde el compilador / elaborador puede enchufar el Verilog en el socket.fuente
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:
fuente
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]
fuente
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).
fuente