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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Schonmal nach der generic map ohne Semikolion probiert? ;-) (siehe Quelltext) Semikolion an der Stelle ist ein beliebter Fehler, zumindestens bei mir...
Jo danke, genau das war der Fehler. In meinen Unterlagen steht da leider ein Semikolon. Gruß Michael
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
@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....
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');
Gast
#477130
Warum verwendest Du keine Attribute?
1 | |
2 | |
Rick
Gast
#479634
Mit Attributen hab ich noch nicht gearbeitet. Außer bei dem clock Signal.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.