Hallo zusammen, ich hab da mal ne Frage: Ich arbeite mit VHDL. Wird eine Schleife in einem Prozess unterbrochen und der Prozess neu gestartet, wenn sich ein Wert in der Sensitivity List dieses Prozesses ändert? Oder wird der Prozess erst komplett abgearbeitet? Gruß DS
Der Prozess wird abgearbeitet, und das sofort ohne dass die Zeit fortschreitet. Es kann sich während des Abarbeitens nichts ändern. Mach dir am besten mal den Unterschied zwischen einer Programmiersprache und einer Hardware-Beschreibungssprache klar und überleg dir, was für eine Hardware aus deinem Prozess rauskommt.
Wenn ich aber innerhalb eines Prozesses eine Schleife hab, werden die Schleifendurchläufe ja wohl kaum gleichzeitig abgearbeitet, oder?
@ DS (Gast) >Wenn ich aber innerhalb eines Prozesses eine Schleife hab, werden die >Schleifendurchläufe ja wohl kaum gleichzeitig abgearbeitet, oder? Und ob. Denn es sind KEINE sequentiellen Abläufe zur Laufzeit, wie in einer normalen Programmiersprache vorkommen, sondern der Compiler durchläuft alle Schleifen zur Compilezeit und berechnet daraus EINE parallel arbeitende Logik. Siehe VHDL. MFG Falk
Stimmt, da habt ihr natürlich Recht!!! Denkfehler meinerseits... Danke für den Schubs in die richtige Richtung. Gruß
Was VHDL angeht, muss man eben objektorientiert denken. Was an Schleifen exisitert, wird aus simulationstechnischer Sicht in getrennte Veriablen und damit in ein Array überführt. Praktisch existieren die Zustände also parallel.
>>Wenn ich aber innerhalb eines Prozesses eine Schleife hab, werden die >>Schleifendurchläufe ja wohl kaum gleichzeitig abgearbeitet, oder? > > Und ob. Denn es sind KEINE sequentiellen Abläufe zur Laufzeit, wie in > einer normalen Programmiersprache vorkommen, sondern der Compiler > durchläuft alle Schleifen zur Compilezeit und berechnet daraus EINE > parallel arbeitende Logik. Siehe VHDL. > Hallo ich glaub, hier geht was durcheinander. Im VHDL Code existieren, Prozesse, Sensitivlisten und z.B. Schliefen. In der Simulation des VHDL Codes werden die Schleifen sequentiell durchlaufen; so wie in C auch. Das kann man beim Debuggen in Modelsim sehr gut sehen. Man sieht auch, dass der Prozess erst vollständig abgearbeitet wird bevor auf ein sich änderndes Signal in der Prozessliste reagiert wird und der Prozess neu aufgerufen wird. Aber, in der Synthese wird die Schleife "ausgerollt" und zu einer Netzliste, deren Pfade parallel abgearbeitet werden. Ab hier sind dann die ursprünglichen Prozesse, Sensitivlisten und Schleifen nicht mehr vorhanden. Debuggen kann man das auch noch aber das macht keinen Spass ;-). Gruß DaMicha.
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.