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