Forum: FPGA, VHDL & Co. Komponenten in Prozessen ausführen ?


von tib (Gast)


Lesenswert?

Hallo und frohe Weihnachten!

Ich habe eine Funktion in VHDL in mehrere Entitys zerlegt. Die so 
entstandene Gesamtfunktion möchte ich rekursiv für eine bestimmte Anzahl 
durchlaufen lassen.
Dafür möchte ich einen Takt einsetzen, der bei jeder Flanke einen 
Durchlauf ausführt.
Nun habe ich aber das Problem, dass ich in Prozessen keine Komponenten 
instanzieren kann.
Wie kann ich da vorgehen? Ich könnte natürlich alle Anweisungen in den 
Prozess schreiben, nur dann geht die Übersicht verloren.
Es muss nicht unbedingt getaktet sein, nur dass der Eingang dieses 
"Blocks" mit dem Ausgang rückgekoppelt wird und nach den z.B. 10 
Durchläufen das Ergebnis am Ausgang gültig wird.

Hier mein Problem als VHDL Schnipsel:

entity one is
...
end;

architecture beh_1 of one is
begin
...
end;


entity two is
...
end;

architecture beh_2 of two is
  component one
  ...
  end component;
begin
...
end;

.
.
.

entity gesamt is
...
end;

architecture beh_ges of gesamt is
  component five
  ...
  end component;
begin
  process(clk)
    if (clk'event and clk = '1')

      ??? (z.B. 10 Mal (zähler) die Entity FIVE durchlaufen)

    end if;
  end process;
end;

von Falk B. (falk)


Lesenswert?

@ tib (Gast)

>Ich habe eine Funktion in VHDL in mehrere Entitys zerlegt. Die so
>entstandene Gesamtfunktion möchte ich rekursiv für eine bestimmte Anzahl
>durchlaufen lassen.

VHDL ist eine Hardwarebeschreibungssprache keine "normale" 
Programmiersprache. Ich glaub du bist auf dem Holzweg.

Was willst du konkret machen?

MFG
Falk

von Henk ten Bakker (Gast)


Lesenswert?

Eine Rekursion muss als Datenfluss programmiert werden, also state 
machine mit Verwaltung, genauso wie in C. Zerlegung in Teilprozesse hat 
damit nichts zu tun.

Ein Itereation ist einfacher, dann wird ein Wert mehrmal in diesele Pipe 
eingeoworfen.

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.