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


von roninme (Gast)


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!!

von SeriousSam (Gast)


Lesenswert?

wird in einem takt berechnet

von Mobius (Gast)


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.
1
dummy: process (clk, rst)
2
 variable vN : integer range 0 to X := 0;
3
begin  -- process dummy
4
  if rst = '0' then                   -- asynchronous reset (active low)
5
    vN := 0;
6
  elsif clk'event and clk = '1' then  -- rising clock edge
7
    if vN < X then
8
      vN := vN + 1;
9
      -- do something in the loop
10
    else
11
      -- do something else
12
    end if;
13
  end if;
14
end process dummy;

von roninme (Gast)


Lesenswert?

danke!

von roninme (Gast)


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!!

von roninme (Gast)


Lesenswert?

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

von roninme (Gast)


Lesenswert?

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

von Falk B. (falk)


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

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.