mikrocontroller.net

Forum: FPGA, VHDL & Co. loop-Schleife


Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde gerne mal eine For-Loop-Schleife testen aber irgendwie komme
ich noch nicht ganz damit klar.

Hier meine Frage:

1. Von was hängt die Durchlaufgeschwindigkeit einer Schleife ab?
2. Gibt es eine Methode in der ich auf ein Signal warten kann, bevor
ich den nächsten Schleifen durchlauf starte? Sowas wie "wait for
<rising_edge (clock)>"

Gruß
Bustle

Autor: Daniel R. (daniel_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In VHDL gibts keine Schleifen. Sie werden alle hardwaremäßig parallel
ausgeführt.

Autor: Bustle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar gibt es in VHDL Sprache Schleifen. Mir ist vorerst egal wie diese
anschließend hardwaretechnisch aufgebaut sind.

Mir geht es ausschließlich darum, wie eine Loop-Schleife eingesetzt
werden kann.

@Daniel: Wenn's keine Schleifen in VHDL gibt, warum wurde dann in
diese Sprache eine Loop-Schleife aufgenommen? Aus Simulationsgründen?

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also loops werden oft nur zum Instanziieren von paralleler HW benutzt.
Wie zB. ganz primitiv ein OR über einen Vektor:
FOR index IN vektor_a'RANGE LOOP
  vektor_out(index) <= vektor_a(index) OR vektor_b(index);
END LOOP
Damit werden soviele ORs erstellt, wie der Vektor breit ist. Wie man
solche "Schleifen" noch misbrauchen kann (sogar mit
Abbruchbedingung), kann man auch in deiesem Wiki sehen:
http://www.mikrocontroller.net/articles/VHDL_schni...

Man muss sich aber vor Augen halten, dass selbst mit der
Abbruchbedingung immer die komplette HW über den gesamten Vektor
erzeugt wird.
In der Simulation kann man solche loops besser nutzen...


T.M.

Autor: Daniel R. (daniel_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Bustle

Softwerker. Streng mal dein Hirn an, dann musst Du auch nicht wegen
jedem Käse einen Thread eröffnen(5 an der Zahl auf einen Blick).

;)

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#Softwerker. Streng mal dein Hirn an, dann musst Du auch nicht wegen
#jedem Käse einen Thread eröffnen(5 an der Zahl auf einen Blick).

Na, aber!

Für FPGA/cpld's reicht für einen Elektroniker denken, für VHDL dagegen
muss mal als "geborenere Informatiker" umdenken. Und Umdenken ist
schon ein Stück härter als denken. Gerade weil VHDL nach C/Pascal
aussieht aber verdammt anders ist sind an jede Steller Fragen
gestattet. Mit Analogie-Schlüssen (was ja Teil vom denken ist) kommt
man da schnell in die Hölle.
Beispielsweise kannte ich mal einen der Festplattentreiber (Software)
programmiert hat und dan in VHDL eine Festplattencontroller
"schrieb". So wie er es eben gewohnt war mit rekursiven Aufrufen.
Irgendwie hat er es auch durch die Synthese geprügelt und es lief wohl
auch aufm FPGA. Allerdings höchstens mit 200 kHz Takt :-o .

Autor: Daniel R. (daniel_r)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist mir klar. Ich hab ja auch nichts dagegen, dass jemand
fragt(siehe smiley), aber man kann doch auch mal was nachlesen und muss
nicht immer gleich einen Thread eröffnen.
Ich empfehle VHDL-Kompakt. Das ist ein PDF in dem so ziemlich alles gut
beschrieben ist. Ich habe leider grad keinen Link dazu.

Autor: Mirco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde es schon vom Ansatz her irreführend, dort überhaupt das Wort
"for" einzuführen.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bustle,
Auf deine Frage :
> Wenn's keine Schleifen in VHDL gibt, warum wurde dann in
> diese Sprache eine Loop-Schleife aufgenommen? Aus
Simulationsgründen?

kann man nur ja antworten.
VHDL ist ein SIMULATIONS-Sprache. Sie wird nur AUCH verwendet, um
bestimmte Konstrukte wieder in Hardware "zurückzuübersetzen".

Grüße
Klaus

Autor: Alexander Lindert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Anfänger mag es verwirrend sein, dass nur ein kleiner Teil von dem
das VHDL an Beschreibungsmöglichkeiten zulässt, synthesefähig ist.
Ziemlich von Vorteil ist es, wenn dass was man synthesefähig
beschreibt, sich selbst als Hardwaremodule vorstellen kann.
Der Vorteil an VHDL ist, dass man zum Testen keine synthesefähigen
Module benötigt. Man darf alle Testfälle bequem in der selben Sprache
nicht synthesefähig schreiben.
Anmerkung: Es gibt sogar POINTER und rekursive Funktionen sind auch
erlaubt. Die Wahrscheinlichkeit, dass sie jemand benützt, ist sehr
gering.

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt, nachdem du es betont hast, dürfte die Wahrscheinlichkeit rapide
gestiegen sein. :-) Ich halte aber von der "for"-Konstukt auch nicht
besonders viel. "generate" ist da schon aussagefähiger.

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.