Forum: FPGA, VHDL & Co. Frage zu VHDL loops


von Mampf F. (mampf) Benutzerseite


Lesenswert?

Gute Morgen,

angenommen ich möchte soetwas machen:
1
mask := (others => '1');
2
mask := mask and myarray(0);
3
mask := mask and myarray(1);
4
mask := mask and myarray(2);
5
mask := mask and myarray(3);
6
mask := mask and myarray(4);

ginge das dann per for-loop?
1
mask := (others => '1');
2
for I in 0 to 4 loop
3
  mask := mask and myarray(I);
4
end loop

Soweit ich weiß, würde das Synthese-Tool aus der for-loop die obere 
Version generieren, stimmt das so?

Viele Grüße,
Mampf

von Duke Scarring (Gast)


Lesenswert?

Mampf F. schrieb:
> mask := (others => '1');
> for I in 0 to 4 loop
>   mask := mask and myarray(I);
> end loop
Jepp.
Das sind dann vermutlich 5 AND hintereinander.
Man kann sich das Syntheseergebnis eigentlich bei allen Tools mit 'Show 
RTL Schematic' o.ä. anzeigen lassen.

Duke

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


Lesenswert?

Mampf F. schrieb:
> Soweit ich weiß, würde das Synthese-Tool aus der for-loop die obere
> Version generieren, stimmt das so?
Im Prinzip ja.
Aber letztlich werden in einem 6er-LUT-FPGA einfach pro mask-Bit die 5 
myarray()-Bits auf 1 LUT gehen und du hast "insgesamt" die selbe 
Durchlaufzeit wie bei einer einzigen AND-Verknüfung. Es werden also 
nicht 5 (oder 4) LUTS "hintereinandergeschaltet"...

von bitwurschtler (Gast)


Lesenswert?

Mampf F. schrieb:
1
 mask := (others => '1');
2
 for I in 0 to 4 loop
3
   mask := mask and myarray(I);
4
 end loop

Ich vermutet da einen Typfehler, mask scheint ein vector (wegen der 
Zuweisung mit others) zu sein und myarray(I) ein einzelnes Element.

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


Lesenswert?

bitwurschtler schrieb:
> myarray(I) ein einzelnes Element.
myarray wird wohl ein Array aus Vektoren sein...

: Bearbeitet durch Moderator
von Mampf F. (mampf) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> bitwurschtler schrieb:
>> myarray(I) ein einzelnes Element.
> myarray wird wohl ein Array aus Vektoren sein...

Jap, genau das ist es :)

Ok, vielen Dank für eure Antworten! :)

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.