mikrocontroller.net

Forum: FPGA, VHDL & Co. loops im clk prozess


Autor: roninme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, mal ne ganz dumme einfach frage
Wenn ich eine loop-schleife in einen taktgesteuerten Prozess 
reinschreibe, also:

process(clk)
...
for i in 0 to N loop
....
end loop;

wird dieser loop in dem takt komplett durchgerechnet oder in N+1 takten?

Danke!!

Autor: SeriousSam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wird in einem takt berechnet

Autor: Mobius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Er wird in einem Takt durchgerechnet. Bei der Synthese wird dein Code 
dann N-Mal hintereinander in Hardware implementiert.

Eine richtige For-Schleife, wie aus C gibt es in Hardware nicht. Da 
musst du umdenken und so etwas in der Art schreiben.
dummy: process (clk, rst)
 variable vN : integer range 0 to X := 0;
begin  -- process dummy
  if rst = '0' then                   -- asynchronous reset (active low)
    vN := 0;
  elsif clk'event and clk = '1' then  -- rising clock edge
    if vN < X then
      vN := vN + 1;
      -- do something in the loop
    else
      -- do something else
    end if;
  end if;
end process dummy;

Autor: roninme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke!

Autor: roninme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein brauchte ich auch nicht, hatte eher gehofft das es aufgerollt wird.
Muss aber derzeit noch ne Menge verstehen.
weil ja generate auch aufrollt. Daher hab ich noch nicht speed technisch 
zumindest nen nachteil bei loop gefunden.
Aber da werd ich die nächsten Tage denke mal schlauer.

Somit war es gut zu wissen, das ich es so machen kann.
Auch wenn ich leider atm noch immer irgendwas falsch mache da xilinx mir 
sowohl als generate als auch als loop anweisung Errors auswirft, sowie 
ich das berechnete signal über einen port zu einem anderen Modul 
verknüpfe.

einmal xst:1706 und xst:1847.
Der einzige Tip dem ich im Inet gefunden hab, hat nicht geholfen.
Naja morgen bin ich auch da sicherlich schlauer.

Vielen Dank!!

Autor: roninme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade das man hier nicht editieren kann...
problem ist das xilinx wohl 2 if-Anweisungen im loop nicht gefallen

Autor: roninme (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so hab auch das mit 2 variablen gelöst nun. Danke nochmal für die Mühe 
und die sehr schnellen Antworten!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  roninme (Gast)

>Schade das man hier nicht editieren kann...

Kann man, wenn man eingeloggt ist.

>problem ist das xilinx wohl 2 if-Anweisungen im loop nicht gefallen

Das geht schon.

MFG
Falk

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.