mikrocontroller.net

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


Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mac4ever (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.