VHDL-Forum - Anfänger

Prozess soll auf einen Anderen warten -Wie?

Prozess soll auf einen Anderen warten -Wie?

Hi!

Ich habe zwei Prozesse, der eine (driver) setzt ein signal aufgrunddessen
der andere(writer) gestartet wird.
nun soll driver solange mit der ausführung seiner weiteren prozesschritte warten, bis der prozess "writer" all seine przesschritte vollständig abgearbeitet hat.
also: der eine prozess soll auf den anderen warten, wie geht das?

hier mein versuch, der jedoch leider nicht das tut was ich möchte:



architecture behav of memory_tester is

signal done: std_logic:='0';
signal n:integer:=0;
signal helper:bit;

begin -- begin der architecture
helper

Re: Prozess soll auf einen Anderen warten -Wie?

Hmmm, ist nicht so ganz klar was Du machen willst, bzw. wie Du die Waits einsetzt ...

In VHDL gibt es zwei Konzepte für die Steuerung der Prozesse: Sensitivity List und Wait.

Bei der Sensitivity List wird ein Prozess immer dann gestartet, wenn sich eines des Signale darin ändert. Macht man auch meist, wenn man beispielsweise Register und Takt verwendet. Und wenn man daraus HW erzeugen (= synthetisieren) will.

Bei Verwendung von Wait läuft der Prozess los bis zum ersten/nächsten Wait und wartet dann, bis die Bedingung erfüllt ist, Dann läuft er weiter. Wenn er am Ende angekommen ist, fängt er wieder von vorne an.
Wait ist für ne Simulation ok, für die Abbildung auf HW aber ungeeignet.

In Deinem 1. Prozess steht ausserdem ein
wait;
Das beendet den Prozess bzw. hält ihn komplett an. Er wird kein weiteres mal durchlaufen - egal was mit den SIgnalen im 2. Prozess passiert.

Zu der Frage, was Du machen willst: Du brauchst ein zweites Signal im 2. Prozess, dass Du verwendest, um den ersten Prozess zu steuern. Nennt sich Synchronisation, handshake oder Semaphose - such Dir was aus :-)
D.h.der erste Prozess erzeugt das STart Signal und wartet dann auf das Ok oderready oder Acknowledge oder sowas in der Art. Der zweite prozess setzt das Ready Signal auf Null oder False, reagiert auf das Start Signal des 1. prozesses, macht seine Aktionen und setzt dann das Ready auf 1 bzw. True. Dmait läuft dererste prozess dann weiter. Ach ja, der zweite muss dnan natürlicch das Ready wieder zurücksetzen, damit der erste beim nächsten Durchlauf wieder wartet.

Das mal als Tipps, in welche Richtung Du suchen solltest.

Ansonsten gibts gute Bücher und Online Tutoruials, die jede Menge Beispiele enthalten - auch solche Synchronisationen ... ist immer mal empfehlenswert, dort nachzuschauen.

Schöne Grüße,

A.

Re: Prozess soll auf einen Anderen warten -Wie?

Hallo,

mir stellt sich die Frage ob das ganze nur simulationsfähig sein soll, oder später auch auf echter hardware laufen soll.

waits sind nähmlich nicht synthetisierbar!


gruesse.

Re: Prozess soll auf einen Anderen warten -Wie?

p1: process
StartP2

Re: Prozess soll auf einen Anderen warten -Wie?

Your writing is really inspiring, especially because it's so colorful and fresh. Thanks for sharing this story with us! mybkexperience mykfcexperience mybpcreditcard