Forum: FPGA, VHDL & Co. Synthese "for loop" vs. "for generate"


von Fabian (Gast)


Lesenswert?

Hallo,

worin besteht eigentlich der Unterschied zwischen einer "For loop" und 
"for generate" Anweisung in der Synthese? Das man mit der Generate 
Anweisung parallele Strukturen generiert und die loop Anweisung 
normalerwiese für iterative Schleifenkontrukte innerhalb von Prozessen 
verwendet wird ist mir soweit klar. In der synthese wird die Loop 
Schleife dann zu einer Unrolled for Schleife. Was passiert aber, wenn 
ich, mal angenommen zur Erstellung von parallelen Strukturen eine Loop 
Anweisung verwende? Kommt das aufs selbe raus wie eine generate 
Anweisung?

Beispiel: Ich habe eine zwei Vektorarrays und möchte den Wert jedes 
Eintrages  um eins erhöhen.

for i in 0 to ende-1 generate
process(clk)
begin
 risingedge.....
vektor(i) <= vektor1(i)+1;
end process;
end generate


process (clk)
begin
for i in 0 to ende-1 loop
vektor(i) <= vektor1(i)+1;
end loop;
end process;



Grüße
Fabian

von mac4ever (Gast)


Lesenswert?

Für das o.g. Beispiel würde ich einfach mal den RTL-Viewer bemühen ... 
oder ein Äquivalent wenn du nicht mir der ISE arbeitest. Falls dein 
Beispiel mit beiden Schleifen funktioniert, würde ich davon ausgehen, 
dass ein identisches Design raus kommt.

Nach meinem Wissen, ist generate für die mehrfache Instanziierung von 
Komponenten gedacht. Sodass man nicht 100 gleichartige Komponenten 
händisch verdrahten muss.

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


Lesenswert?

Mal davon abgesehen, dass im 2. Beispiel der Takt nicht verwendet wird, 
kommt das selbe Syntheseergebins heraus.

Du wirst hier aber wirklich parallele Hardware erzeugen, da ist nichts 
zu machen mit irgendwelchen Hardware-RAM-Strukturen (z.B. 
DistributedRAM, BRAM). Denn in einer solchen Komponente kann jeweils nur 
1 Element bearbeitet werden. Du willst aber alle gleichzeitig 
manipulieren :-o

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.