www.mikrocontroller.net

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


Autor: tib (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Henk ten Bakker (Gast)
Datum:

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

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.