Komponenten über "generate" Instanziiert => untereinander verdrahten! Wie?

OP (Firma: Uni) #2813703
Lesenswert?
• ▲
▼
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.
Gast #2813719
Lesenswert?
• ▲
▼
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ß
OP (Firma: Uni) #2813782
Lesenswert?
• ▲
▼
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".
OP (Firma: Uni) #2813818
Lesenswert?
• ▲
▼
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.
Gast #2814244
Lesenswert?
• ▲
▼
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ß
Moderator (Firma: Titel) Persönliche Seite #2814259
Lesenswert?
• ▲
▼
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), ...
OP (Firma: Uni) #2814563
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren