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
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?
Also loops werden oft nur zum Instanziieren von paralleler HW benutzt. Wie zB. ganz primitiv ein OR über einen Vektor:
1 | FOR index IN vektor_a'RANGE LOOP |
2 | vektor_out(index) <= vektor_a(index) OR vektor_b(index); |
3 | 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_schnipsel_or_vectorbits 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.
@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). ;)
#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 .
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.
Ich finde es schon vom Ansatz her irreführend, dort überhaupt das Wort "for" einzuführen.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.