Forum: FPGA, VHDL & Co. [vhdl] for generate


von Bjørn (Gast)


Lesenswert?

Hallo!

Ich möchte das for-generate Konstrukt dazu nutzen nicht eine 
kontinuierliche Range zu generieren sondern nur bestimmte Elemente aus 
dieser Range. Also sowas wie:
1
generator: for i in 1,2,4,8,16,32 generate
2
  bla(i) <= blubb(i);
3
end generate generator;

Gibt es sowas?

Vielen Dank im Voraus.

von Lisa (Gast)


Lesenswert?

Wenn ich das richtig sehe, suchst du folgendes:

1
lol: for c in 0 to 5 generate
2
    test(2**c-1) <= '1';
3
  end generate lol;

;3

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lisa schrieb:
> suchst du folgendes
>    test(2**c-1) <= '1';
Die -1 kann da weggelassen werde, denn 2^0=1, 2^1=2 usw...

Und sonst mußt du eben über ein Array gehen
1
 type integerarray is array (natural range <>) of integer;
2
 constant indices : integerarray (0 to 5) := (1,3,5,7,11,17);
3
 xyz: for c in 0 to 5 generate
4
     test(indices(i)) <= '1';
5
 end generate xyz;

von Bjørn (Gast)


Lesenswert?

Cool, danke. :D

Gibt es analog zu dem 2**x eigentlich auch ein log2(x)? Das wäre sehr 
praktisch für meinen generischen adder. :3

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bjørn schrieb:
> Gibt es analog zu dem 2**x eigentlich auch ein log2(x)?
Synthetisierbar oder "nur so zum Rechnen" (z.B. für Konstanten)?
http://www.lothar-miller.de/s9y/archives/72-Breite-eines-Vektors-berechnen-log2.html

von Bjørn (Gast)


Lesenswert?

Soll nur für Konstanten sein. Z.B:
1
generic(bits : natural)
2
[...]
3
constant stages : natural := log2(bits);

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bjørn schrieb:
> Soll nur für Konstanten sein.
Gibts als REAL in der ieee.math_real.log2
Dann noch ein wenig hin- und hergecastet und fertig. Sieh dir den Link 
an.

von Jorge (Gast)


Lesenswert?

was ist das für ein Konstrukt, bei dem nur partiell zugewiesen werden 
soll?

werden dann wirklich  nur diese Vektorelemente generiert?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jorge schrieb:
> werden dann wirklich  nur diese Vektorelemente generiert?
Du meinst das aus dem 
Beitrag "Re: [vhdl] for generate"?
Es wird da gar nichts generiert. Das Array bzw. der Vektor ist schon 
da. Es werden einfach nur einzelnen Elementen eine '1' zugewiesen.

von Bjørn (Gast)


Lesenswert?

Das war auch nur ein minimalbeispiel, weil ich nicht den nganzen Code 
posten wollte. ;3

Danke Leute, ihr habt mir sehr geholfen. :3

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
Noch kein Account? Hier anmelden.