Hi Leutz Ich habe heute folgenden Fall: Ich möchte ein Sub-Modul in einem übergeordneten Modul mehrere hundert Male als Component einbinden. Da dachte ich an "generate". Soweit so gut, nun möchte ich aber, dass die einzelnen Instanziierungen der Komponenten untereinander verbunden werden. Wie funktioniert das? thx for help greez Kiigass PS: Wo wir grad dabei sind: Kann ich die Komponenten auch einzeln ansprechen? Das ist nicht soo wichtig, wäre aber nice to have.
Hi nimm std_logic_vector(en), hier kannst du deinen generate-Zählindex benutzen. Wenn du schon Vectoren hast, musst du dir mehrdimensionale Typen definieren. z.B. type irdendwas is array(max1 downto 0) of std_logic_vector(max2 downto 0); Gruß
franke schrieb: > Hi > > nimm std_logic_vector(en), hier kannst du deinen generate-Zählindex > benutzen. > > Wenn du schon Vectoren hast, musst du dir mehrdimensionale Typen > definieren. > z.B. type irdendwas is array(max1 downto 0) of std_logic_vector(max2 > downto 0); > > Gruß Danke dir! Das hat mich auf Ideen gebracht.
Hmm leider gibt es jetzt ein kleines Typenproblem beim port map. also beispielsweise:
1 | ...
|
2 | component test |
3 | port( |
4 | port1 : in std_logic_vector(3 downto 0); |
5 | ...
|
6 | );
|
7 | end component; |
8 | |
9 | type iwas is array(3 downto 0) of std_logic_vector(3 downto 0); |
10 | |
11 | begin
|
12 | ...
|
13 | port map( port1 => iwas(2),...); |
Da sagt er dann "type conversion does not match type std_logic_vector".
Queck Silber schrieb: > type iwas is array(3 downto 0) of std_logic_vector(3 downto 0); dann schreib da mal sowas drunter:
1 | signal hugo: iwas := (others => (others => '0')); |
und binde das an die Komponente an
berndl schrieb: > Queck Silber schrieb: >> type iwas is array(3 downto 0) of std_logic_vector(3 downto 0); > > dann schreib da mal sowas drunter: >
1 | > signal hugo: iwas := (others => (others => '0')); |
2 | >
|
> und binde das an die Komponente an
Danke für die Antwort, leider ist das Ergebnis folgende Fehlermeldung:
Type error near hugo ; current type iwas; expected type std_logic_vector
Edit: Ahh! Mom! Ich hab da grade was gefunden, wenn ich hugo indiziere
gibt es zumindest nicht sofort ne Fehlermeldung. Ich probier das kurz
und melde mich in wenigen Minuten wieder.
ja schade, edit geht nicht mehr, deshalb Doppelpost. Danke an euch beide für die Antworten. Die Antwort von Berndl hat das Problem gelöst. Soweit ich das bisher getestet hab, gibts keine weiteren Fehler.
hmm... interessant, vielleicht kann ja jemand klären.. von meinem Code entnommen: type coef_result_1_type is array(0 to 15) of std_logic_vector(24 downto 0); signal coef_result_1 : coef_result_1_type; .. -- second adder stage second_stage_adder: for i in 0 to 7 generate inst_coef_adder: piped_adder_25b port map( DataA => coef_result_1(2*i), DataB => coef_result_1(2*i+1), .. geht ohne Probleme bei mir, auch drei dimensional. Gruß
franke schrieb: > geht ohne Probleme bei mir, auch drei dimensional. Ja klar, du verbindest ja auch das Signal:
1 | type coef_result_1_type is ... |
2 | signal coef_result_1 : coef_result_1_type; |
3 | port map( DataA => coef_result_1(2*i), ... |
Und nicht den Typ (wie Queck Silber das probierte):
1 | type iwas is ... |
2 | port map( port1 => iwas(2), ... |
Lothar Miller schrieb: > franke schrieb: >> geht ohne Probleme bei mir, auch drei dimensional. > Ja klar, du verbindest ja auch das Signal: >
1 | > type coef_result_1_type is ... |
2 | > signal coef_result_1 : coef_result_1_type; |
3 | > port map( DataA => coef_result_1(2*i), ... |
4 | >
|
> Und nicht den Typ (wie Queck Silber das probierte): >
1 | > type iwas is ... |
2 | > port map( port1 => iwas(2), ... |
3 | >
|
Ganz genau, aber mit Signalen funktionert es ja.
Queck Silber schrieb: > Ganz genau, aber mit Signalen funktionert es ja. Logisch, weil ja nur Signale über eine Port List weitergegeben werden können. Keinesfalls aber Typdefinitionen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.