Frage zu VHDL loops

OP Persönliche Seite #5395043
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
Gast #5395101
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
Moderator (Firma: Titel) Persönliche Seite #5395236
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"...

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