for i in 1,3,6,8 generate

Gast #4290557
Lesenswert?

Hallo zusammen,

ich möchte gerne eine for generate Loop bauen, in der ich bestimmte 
Componenten zusammenknote.
Ich möchte jedoch nicht einen Index I von 0 bis ... verwenden, sondern 
nur bestimmte Werte, z.B. 1,3,6,8.

Ist dies in VHDL irgendwie möglich? Bisher war meine meine Websuche 
diesbezüglich leider erfolglos.

Viele Grüße

Marfel
Gast #4290690
Lesenswert?

Marfel schrieb:

> ich möchte gerne eine for generate Loop bauen, in der ich bestimmte
> Componenten zusammenknote.
> Ich möchte jedoch nicht einen Index I von 0 bis ... verwenden, sondern
> nur bestimmte Werte, z.B. 1,3,6,8.
>
> Ist dies in VHDL irgendwie möglich?

Schleife über einen Aufzählungstyp resp array über range ist möglich, 
also
1
label_gen: for i in index_enum generate
2
//..
3
end generate;

Ist jetz nur die Frage wie man den Index bspw als enumeration definiert.
http://vhdl.renerta.com/mobile/source/vhd00026.htm

Der klassische Fall sind die Zustände einer FSM
1
type enum_state is (OANS,ZWOA,DREIER);
Denen kannst du jetzt eine Zahl im Enumeration encoding zuweisen:
Example 2: http://fpgacenter.com/vhdl_dic/enumar.php

Damit sollte es gehen. Ob man integer in ein Aufzählungstyp packen kann, 
also:
1
type enum_by_numbers is (1,3,6,8);
musst du selbst ausprobieren. Was geht ist auch ein range als index, 
alse
1
subtype index_range is integer range 8 downto 0;
aber da stecken dann auch Zahlen drin du du nicht dabei wolltest.

MfG,
Moderator (Firma: Titel) Persönliche Seite #4290696
Lesenswert?

Marfel schrieb:
> Ist dies in VHDL irgendwie möglich?
Solange das nur ein paar einzelne Werte sind, würde ich es pragmatisch 
mit geschachtelten generate-Anweisungen angehen:
1
   GENERATE_LOOP: for I in 0 to 8 generate
2
      GENERATE_CONDITION: if (i=1 or i=3 or i=6 or i=8) generate
3
        REGX : REG port map (...)
4
      end generate GENERATE_CONDITION;
5
   end generate GENERATE_LOOP;

EDIT: Pech, Zweiter...  ;-)
Gast #4292565
Lesenswert?

Hallo zusammen,

vielen Dank für die Antworten!
Im aktuellen Projekt haben wir eine zentrale Konfigurationsstelle, 
sodass die Lösung von user konzeptionell ganz gut reinpassen würde.

Ein Nachteil der geschachtelten generate loop ist, dass ich beim 
Simulieren eine zusätzliche Ebene in den Signalnamen erhalte. Dies würde 
ich zumindest erwarten, ohne es bisher getestet zu haben.

Marfel

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