Forum: FPGA, VHDL & Co. Direkte Instanziierung


von Till (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Till (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

Da kennst du aber Xilinx schlecht. Sowas wird höchstens als Feature 
dargestellt und dann ist es halt so. Liegt wohl an der 
Kompilierreihenfolge, dass er vokn den Cores nicht kennt, was an den 
Ports erwartet wird.

von daniel__m (Gast)


Lesenswert?

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

von daniel__m (Gast)


Lesenswert?

daniel__m schrieb:
> Wenn man jedoch Module in Netzlisten hat

PS: Verilog gilt hier ebenso als Netzliste.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.