Forum: FPGA, VHDL & Co. Component Deklaration in Package


von Freddy (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich lese mich gerade durch ein paar Design Guidelines durch um eine Idee 
zu bekommen was man so alles für ein Code Review benutzen kann.

Dabei ist mir im VHDL Design Guideline von der Interstaatlichen 
Hochschule für Technik Buchs (CH) aufgefallen, dass empfohlen wird die 
Component Declaration direkt als Package zu schreiben.
(siehe Anhang=

An sich eine schöne Idee um diese nicht immer neu definieren zu müssen, 
aber welche Nachteile kann ich mir dabei einfangen?
Wird mein Code wirklich übersichtlicher?

Freddy

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Freddy schrieb:
> Wird mein Code wirklich übersichtlicher?
Nur, wenn du tatsächlich mehrere Instanzen der Komponente bräuchtest.

von Klaus (Gast)


Lesenswert?

Du kannst auch ohne component deklaration ein Modul direkt 
instantiieren:
1
architecture bla of xyz is
2
begin
3
4
  work.my_module
5
    port map(...);
6
end architecture bla;

von Klaus (Gast)


Lesenswert?

Ups, was vergessen:
1
architecture bla of xyz is
2
begin
3
4
  my_module_inst: work.my_module
5
    port map(...);
6
end architecture bla;

von Duke Scarring (Gast)


Lesenswert?

Klaus schrieb:
> Ups, was vergessen:
Du hast noch was vergessen:
1
architecture bla of xyz is
2
begin
3
 
4
  my_module_inst: entity work.my_module
5
    port map(...);
6
end architecture bla;

Duke

von Klaus (Gast)


Lesenswert?

Duke Scarring schrieb:
> Klaus schrieb:
>> Ups, was vergessen:
> Du hast noch was vergessen:

Stimmt, danke!

von Freddy (Gast)


Lesenswert?

@Lothar:

das ist natürlich richtig. Aber wenn ich es unter Reuse Aspekten 
betrachte und die Compontent Initiierung direkt als Package einbaue ist 
es die Frage ob es sinnvoll ist oder vielleicht in anderen Projekten zu 
Problemen oder Verlust der Übersichtlichkeit führt.

@Klaus:

Ist seid VHDL2008 gültig?
Natürlich kann man es noch mehr vereinfachen:
1
port map(
2
   a,
3
   b
4
);
Aber ich persönlich mag diese direkte Initiierung nicht wenn der Code 
nachher über Jahre noch lesbar sein soll.
Um mal eben schnell was zu testen oder notfalls in der Testbench ist es 
ok.
Die Gefahr ist aber dass die richtige Reihenfolge eingehalten wird.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Freddy schrieb:
> Natürlich kann man es noch mehr vereinfachen:
Nennt sich dann Positional Association.
Das ist natürlich auch eine der beliebtesten Fehlerquellen. Und taucht 
hier im Forum so etwa alle 2-3 Wochen mal als Ursache auf...

von Klaus (Gast)


Lesenswert?

Freddy schrieb:
> Aber ich persönlich mag diese direkte Initiierung nicht wenn der Code
> nachher über Jahre noch lesbar sein soll.
> Um mal eben schnell was zu testen oder notfalls in der Testbench ist es
> ok.
> Die Gefahr ist aber dass die richtige Reihenfolge eingehalten wird.

Ich glaube du verwechselst hier was. Ich habe nichts davon geschrieben, 
innerhalb der Portmap ein positional association zu benutzen (das macht 
man nicht! ;-) )

sondern mir ging es darum, dass man ein Modul auch instantiieren kann, 
ohne vorher die lästige component deklacarion in der architecture zu 
haben.

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.