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.
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.
Respostas:
Aqui está uma analogia que ajuda algumas pessoas (especialmente as que têm formação em eletrônica física):
A component
diz 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.
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(
...
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]
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).