mikrocontroller.net

Forum: FPGA, VHDL & Co. Probleme mit generic map


Autor: Michael Lönneker (loenny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

für meine Diplomarbeit brauche ich VHDL. Das Programmieren klappt auch 
schon soweit recht gut. Probleme breitet mir die "GENERIC MAP"

Hier mal mein Problem:


(Programm Eins)
ENTITY mult IS
  generic(
    Size: Integer:= 10
    );
  PORT(
    clk,Reset: IN std_logic;
    a: In std_logic_vector(Size downto 0);
    b: IN std_logic_vector(Size downto 0);
    );
END ENTITY mult;
...
...
(Programm Zwei*)
ENTITY haupt IS
  generic(
    Size: Integer:= 10
    );
  PORT(
    clk,Reset: IN std_logic;
    c: In std_logic_vector(Size downto 0);
    d: IN std_logic_vector(Size downto 0);
    );
END ENTITY haupt;

Architecture haupt_arch OF haupt IS

Component mult
  generic(
    Size: Integer:= 10
    );
  PORT(
    clk,Reset: IN std_logic;
    a: In std_logic_vector(Size downto 0);
    b: IN std_logic_vector(Size downto 0);
    );
  END Component dds_dreieck;

Begin
  I1 : mult
    generic map(
      Size => Size
      );
    port map(
      clk => clk,
      Reset => Reset,
      a => c,
      b => d
      );
END haupt_arch;

Ich möchte die Länge der Vektoren in meinem Hauptprogramm ändern und die 
Länge soll auch in den Unterprogramm übernommen werden. Jedoch bekomme 
ich eine Fehlermeldung. Erst wenn ich die "generic map" aukommentieren 
klappt es. Jedoch muss ich dann in allen Unterprogrammen die Vektoren 
einzelnd ändern.
Wo liegt mein Fehler.

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Begin
  I1 : mult
    generic map(
      Size => Size
      )   -- kein Semkolion!!!
    port map(
      clk => clk,
      Reset => Reset,
      a => c,
      b => d
      );
END haupt_arch;

Schonmal nach der generic map ohne Semikolion probiert? ;-) (siehe 
Quelltext) Semikolion an der Stelle ist ein beliebter Fehler, 
zumindestens bei mir...

Autor: Michael Lönneker (loenny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo danke, genau das war der Fehler.
In meinen Unterlagen steht da leider ein Semikolon.

Gruß Michael

Autor: Johannes Ruder (jruder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  Michael!

Ich habe genau das gleiche Problem wie du! Werde heute Abend gleich mal 
die Lösung von T.M probieren. Das wäre echt klasse, wenn es 
funktioniert.

Gruß, Hannes

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael:
...dass Du mit Size = 10  11-Bit-Vektoren bekommst weisst du schon - 
oder?
Normalerweise schreibt man dann bei der Benutzung sowas wie
a: In std_logic_vector(Size-1 downto 0);

Ist aber mehr eine Stilfrage....

Autor: Michael Lönneker (loenny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ich mit Size = 10 einen 11-Bit Langen Vektor bekomme ist mir schon 
klar. Wollt mit Size auch einzelne Nit des Vektors ansprechen z.B. so


Signal Temp: std_logic_vector(Size dowto 0):= (Size => '1' , others => 
'0');

Nur leider bekomme ich dort eine Fehlermeldung. Kann ich "Size" nicht 
benutzen um ein Bit vorzugeben?

Signal Temp: std_logic_vector(Size dowto 0):= (10 => '1' , others => 
'0');

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum verwendest Du keine Attribute?
Signal Temp: std_logic_vector(Size dowto 0):= (Temp'High => '1' , others =>
'0');

Rick

Autor: loenny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Attributen hab ich noch nicht gearbeitet. Außer bei dem clock 
Signal.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.