Probleme mit generic map

OP #473335
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.
Gast #473377
1
Begin
2
  I1 : mult
3
    generic map(
4
      Size => Size
5
      )   -- kein Semkolion!!!
6
    port map(
7
      clk => clk,
8
      Reset => Reset,
9
      a => c,
10
      b => d
11
      );
12
END haupt_arch;

Schonmal nach der generic map ohne Semikolion probiert? ;-) (siehe 
Quelltext) Semikolion an der Stelle ist ein beliebter Fehler, 
zumindestens bei mir...
OP #474372
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');

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.