VHDL: Componente vs Entità


25

Mi chiedo quale sia la differenza tra componente un'entità. Vorrei sapere in quali casi è meglio utilizzare i componenti anziché le entità. Grazie mille.


1
Per favore, qualcuno potrebbe creare un tag chiamato "vs". Grazie.
Peterstone,

7
Intendi "vs" come nel titolo? Hm, non è una buona idea, pensa.
Stevenvh,

2
Non tutti qui usano Visual Studio .... oh aspetta ... intendevi l'altro "vs" giusto? ;-)
cbmeeks,

Risposte:


17

Ecco un'analogia che aiuta alcune persone (in particolare quelle provenienti da un background di elettronica fisica):

A componentdice al compilatore "ci sarà qualcosa con questo tipo di pin su di esso chiamato ad un certo punto, ma per ora non preoccuparti". In un certo senso definisce un "socket". Puoi continuare a descrivere cosa "collega" a quella "presa" ecc.

An entityè qualcosa di specifico con un nome e una serie di pin, che il compilatore può quindi "collegare" a quella "presa" (e quindi essere collegato ai "fili").

Si noti che non è necessario un componentsi può fare "istanza diretta", il che significa che il compilatore conosce già un'entità, quindi il "socket" non deve essere definito separatamente. In realtà, questo sarebbe il mio approccio raccomandato, poiché altrimenti componentè un livello extra da mantenere sincronizzato.

È necessario utilizzare i componenti se si stanno mescolando Verilog e VHDL e è necessario utilizzare un blocco Verilog all'interno del VHDL. Quindi componentè il socket e non molto tempo dopo il compilatore / elaboratore può collegare Verilog al socket.


Il componente è come il pacchetto DIP. È possibile utilizzare lo stesso amplificatore operazionale a 8 pin una dozzina di volte in un circuito, ed è sempre a 8 pin. Sono componenti separati, anche se sono lo stesso tipo di amplificatore operazionale. L'entità è come la piedinatura sul foglio dati; tutti gli op-amp separati hanno lo stesso pinout.
ajs410,

14

Un soggetto è una vera interfaccia ad un'unità disegno che può avere più architetture. Un'entità definisce come le cose entrano ed escono, mentre l'architettura definisce come opera l'unità di progettazione. Quindi potresti avere più modi di implementare la stessa funzione, che sarebbe descritta dalla stessa entità.

Un componente è un'unità di progettazione ideale o "virtuale". Quando si esegue una progettazione dall'alto verso il basso (ovvero si sta mettendo insieme il livello superiore prima che vengano progettati i blocchi di livello inferiore) è possibile utilizzare un componente per descrivere il tipo di interfaccia che ci si aspetta dalle proprie unità di progettazione. Puoi pensarlo come un segnaposto o una scatola nera per una futura realizzazione reale.

Utilizzando le configurazioni è possibile associare un'istanza specifica del componente a una definizione di entità. Qui è possibile mappare quale porta deve connettersi a quale porta. Questo mappa come il componente che è stato definito nel senso ideale si associa all'entità che è stata effettivamente implementata.

In pratica , ho scoperto che i componenti in genere non sono necessari e creano un altro livello di astrazione che in genere non viene utilizzato. È possibile saltare l'uso (e le necessità) dei componenti istanziando direttamente l'entità e facendo riferimento all'architettura da utilizzare per quell'istanza dell'entità.

Per esempio:

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

2

Da [1] di seguito:

Esiste un'importante distinzione tra un'entità, un componente e un'istanza del componente in VHDL. L'entità descrive un'interfaccia di progettazione, il componente descrive l'interfaccia di un'entità che verrà utilizzata come istanza (o blocco secondario) e l'istanza del componente è una copia distinta del componente che è stata connessa ad altre parti e segnali . Per confrontarli con il processo di progettazione della breadboard con parti autonome. L'entità e l'architettura sono come il libro di dati che descrive l'interfaccia e gli schemi di funzionamento della parte. Il componente è come l'elenco dei pin brevi fornito con la parte per descrivere come dovrebbe essere collegato. L'istanza del componente è la parte vera e propria, di cui potresti avere molti che funzionano in modo indipendente.

Vedi [1] per il contesto e maggiori dettagli.


Esistono numerosi tutorial VHDL on line, ad esempio [2] [3] ... Libro (84 pagine PDF) [4] Sembra buono [5] Principalmente per i collegamenti [6]


1
sembri favorire i collegamenti nelle note di chiusura, ma è così che viene fatto nella stampa e non usa il collegamento ipertestuale come dovrebbe essere usato. Avresti potuto scrivere "Vedi questo link per contesto e maggiori dettagli". Molto più intuitivo, AFAIC. Solo un suggerimento.
Stevenvh,

2
Vecchio cervello :-). Mi rivolgo alla massima informazione (come avrai notato :-)) e il metodo endnote consente ai lettori di vedere da dove proviene il link e se alcuni si trovano sullo stesso sito, come a volte accade. Per collegamenti molto lunghi tenderei ad usare bit.ly / j.mp con un nome significativo. Ho anche visto gli utenti reticenti nel fare clic su un collegamento (anche se questi possono essere copiati e incollati per il controllo (lavoro extra)). MA punto notato e considererò ciascuno come opzioni in futuro.
Russell McMahon,

0

Un'entità è un'unità di progettazione le cui porte input-output sono specificate. L'entità definisce solo le porte esterne mentre il funzionamento interno è specificato dall'architettura corrispondente. Un componente è l'unità di progettazione completa composta sia da entità che da architettura. Il primo passo è la dichiarazione del componente (specificando il nome e le porte) e quindi l'istanza del componente (mappatura delle porte).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.