Direkte Instanziierung

Gast #3861251
Hallo zusammen,
kann mir jemand die Vor- und Nachteile einer direkten Instanzierung 
erklären ?

Es besteht ja die Möglichkeit mit component zu arbeiten. Wie z.B.
1
--
2
-- [...]
3
component async_adder is
4
      port (
5
      ain    : in  std_ulogic_vector(3 downto 0);
6
      bin    : in  std_ulogic_vector(3 downto 0);
7
      result : out std_ulogic_vector(4 downto 0)
8
      );
9
end component;
10
-- [...]
11
--
12
--Spaeter im Code dann die Instanz:
13

14
dev1 : async_adder
15
   port map (
16
      ain    => sw_ain,
17
      bin    => sw_bin,
18
      result => data);

Jetzt besteht ja auch die Möglichkeit, über die direkte Angabe der 
entity+architecture mein Modul "async_adder" einzubinden. Wie z.B. :
1
dev1 : entity work.async_adder(rtl)
2
   port map (
3
      ain    => sw_ain,
4
      bin    => sw_bin,
5
      result => data);

Aufgrund der Übersichtlichkeit habe ich habe bis jetzt immer den 
direkten Weg verwendet.

Gruß Till
#3861299
Nachteil ist z.B. bei Xilinx Vivado, dass du dann an das direkt 
Instanziierte Modul keine Konstanten wie '0' anlegen kannst. Aus 
irgendeinem Grund kann VIVADO zumindest für die IP-Cores das nicht 
auflösen. Bei eigenen Modulen klappt es mittlerweile. Auch muss 
natürlich die Library in die die Module kompiliert werden, passen. Auch 
da wieder Negativbeispiel VIVADO: Seit neuestem muss man explizit work 
wieder neu einstellen, weil die der Meinung sind, xilinx_default_lib 
wäre doch was viel sinnvolleres.
Ich nutze das aber zumindest für die eigenen Module immer, die IP Cores 
Component Deklarationen laden dann bei mir in einem Package. Sonst hab 
ich ja schon hunderte Zeilen nur für die Deklaration z.B. vom MGT.
Gast #3861884
Hallo, vielen Dank für die Antwort. Diese Problematik bei der 
Xilinx-Umgebung klingt für mich seltsam, eventuell wird das mit der Zeit 
ja noch behoben. Die Syntax ist ja eindeutig.
Gast #3862389
Christian R. schrieb:
> Liegt wohl an der
> Kompilierreihenfolge, dass er vokn den Cores nicht kennt, was an den
> Ports erwartet wird.

Ist bei ISE und PlanAhead recht ähnlich und hat m.E. folgenden 
Zusammenhang:
die direkte Instanziierung funktioniert nur bei Modulen, welche in VHDL 
vorliegen. Wenn man jedoch Module in Netzlisten hat, geht das so nicht 
mehr. Je nach Modul erstellt der IP Core Gen mal ein VHDL-Modul, mal 
eine fertige Netzliste.

Für diese Netzlisten-Module benötigt man dann eine 
Komponentenbeschreibung (im Package, in einem Wrapper-Modul oder im 
Deklarationsteil des aktuellen Moduls).

grüße

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.