VHDL: componente versus entidade


25

Eu estou querendo saber qual é a diferença entre o componente de uma entidade. Gostaria de saber em quais casos é melhor usar componentes em vez de entidades. Muito obrigado.


1
Por favor, alguém poderia criar uma chamada de tag 'vs'. Obrigado.
Peterstone

7
Você quer dizer "vs" como no título? Hum, não é uma boa ideia, acho.
12119 stevenvh

2
Nem todo mundo aqui usa o Visual Studio .... oh espera ... você quis dizer o outro "vs", certo? ;-)
cbmeeks 28/01

Respostas:


17

Aqui está uma analogia que ajuda algumas pessoas (especialmente as que têm formação em eletrônica física):

A componentdiz ao compilador "haverá algo com esse tipo de pinos chamado isso em algum momento, mas não se preocupe por enquanto". Ele meio que define um "soquete". Você pode continuar descrevendo o que "liga" a esse "soquete" etc.

An entityé algo específico com um nome e um conjunto de pinos, que o compilador pode "conectar" a esse "soquete" (e, portanto, ser conectado aos "fios").

Observe que você não precisa de uma component"instanciação direta", o que significa que o compilador já conhece uma entidade, portanto o "soquete" não precisa ser definido separadamente. De fato, essa seria minha abordagem recomendada, caso contrário, componenté um nível extra a ser mantido em sincronia.

Você precisa usar componentes se estiver misturando Verilog e VHDL e precisar usar um bloco Verilog dentro do VHDL. Então, esse componenté o soquete e até muito mais tarde o compilador / elaborador pode conectar o Verilog ao soquete.


O componente é como o pacote DIP. Você pode usar o mesmo amplificador operacional de 8 pinos uma dúzia de vezes em um circuito, e sempre são 8 pinos. Eles são componentes separados, mesmo sendo do mesmo tipo de amplificador operacional. Entidade é como a pinagem na folha de dados; todos os amplificadores operacionais separados têm a mesma pinagem.
11289 ajs410

14

Uma entidade é uma interface real para uma unidade de design que pode ter várias arquiteturas. Uma entidade define como as coisas entram e saem, enquanto a arquitetura define como a unidade de design opera. Portanto, você pode ter várias maneiras de implementar a mesma função, que seria descrita pela mesma entidade.

Um componente é uma unidade de design ideal ou "virtual". Ao fazer um design de cima para baixo (ou seja, você está montando o nível superior antes da criação dos blocos de nível inferior), é possível usar um componente para descrever o tipo de interface que você espera para suas unidades de design. Você pode pensar nisso como um espaço reservado ou uma caixa preta para uma futura implementação real.

Usando configurações, você pode vincular uma instância de componente específica a uma definição de entidade. Aqui você pode mapear qual porta deve se conectar a qual porta. Isso mapeia como o componente que foi definido no sentido ideal é mapeado para a entidade que foi realmente implementada.

Na prática , descobri que os componentes normalmente são desnecessários e criam outro nível de abstração que normalmente não é usado. Você pode ignorar o uso (e a necessidade) de componentes instanciando diretamente a entidade e referenciando a arquitetura a ser usada para essa instância da entidade.

Por exemplo:

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

2

De [1] abaixo:

Há uma distinção importante entre uma entidade, um componente e uma instância de componente no VHDL. A entidade descreve uma interface de design, o componente descreve a interface de uma entidade que será usada como uma instância (ou um sub-bloco) e a instância do componente é uma cópia distinta do componente que foi conectado a outras partes e sinais. . Para compará-los com o processo de design da placa de pão com peças autônomas. A entidade e a arquitetura são como o livro de dados que descreve a interface e os esquemas de como a peça funciona. O componente é como a lista de pinos curtos que acompanha a peça para descrever como deve ser conectada. A instância do componente é a parte real em si, da qual você pode ter muitas que operam independentemente.

Veja [1] para contexto e mais detalhes.


Existem inúmeros tutoriais em VHDL on-line, por exemplo, [2] [3] ... Livro (PDF de 84 páginas) [4] Parece bom [5] Principalmente para links [6]


1
você parece favorecer os links nas notas de fim, mas é assim que é impresso e não usa o hiperlink como deveria ser usado. Você poderia ter escrito "Consulte este link para obter contexto e mais detalhes". Muito mais fácil de usar, AFAIC. Apenas uma sugestão.
Stevenvh

2
Cérebro velho :-). Eu me inclino ao máximo de informações (como você já deve ter notado :-)) e o método da nota de fim permite que os leitores vejam de onde vem o link e se alguns estão no mesmo site - como às vezes acontece. Para links muito longos, eu tenderia a usar o bit.ly / j.mp com um nome significativo. Também vi usuários reticentes em clicar em um link (mesmo que eles possam ser copiados e colados para verificação (trabalho extra)). MAS ponto anotado e vou considerar cada um como opções no futuro.
Russell McMahon

0

Uma entidade é uma unidade de design cujas portas de entrada e saída são especificadas. A entidade apenas define as portas externas enquanto o funcionamento interno é especificado pela arquitetura correspondente. Um componente é a unidade de design completa que compõe a entidade e a arquitetura. A primeira etapa é a declaração do componente (especificando seu nome e portas) e, em seguida, a instanciação do componente (mapeamento de porta).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.