Forum: FPGA, VHDL & Co. watchdog


von Sebastian J. (Gast)


Lesenswert?

Hallo,

ist es in VHDL eigentlich möglich und sinnvoll, eine Art watchdog
Funktion einzubauen?
Soll heißen: ich habe mehrere Prozesse in der entity und möchte einen
weiteren Prozess einbauen, in dem immer dann Konstanten gesetzt werden,
wenn die anderen Prozesse durchlaufen sind. Diese Konstanten sollen mit
dem Grundtakt dekrementiert werden. Sollte eine der Konstanten Null
sein (Prozess aufgehängt), soll ein Gesamtreset erfolgen.
Ich bin mir jedoch nicht sicher, ob dies funktioniert, weil: angenommen
in einem Prozess läuft eine statemachine und ich sage in dem watchdog
Prozess, dass aufgrund des Wertes Null der entsprechenden Konstanten
für diesen Prozess, der Zustand der statemachine wieder eins, also der
Ursprungszustand sein soll, würde ich ausgehend von zwei verschiedenen
Prozessen den Zustand der statemachine beeinflussen ... hm, ist nicht
so sinnvoll, oder?

Gruß Sebastian

von Alban (Gast)


Lesenswert?

Das hört sich sehr nach Softwaredenken an. Was du mit VHDL beschreibst
wird in Hardware realisiert. Da hängt sich nichts auf, ausser du
beschreibst was falsch. Aber dann wird auch dein "Watchdog" nichts
bringen, weil du den ja wahrscheinlich auch mit der falschen
Hardwarebeschreibung entwickelt hast.

Was es bei einer Statemachine gibt ist es eine Parität für die
Statewechsel zu berechnen und dadurch zu überprüfen ob nur erlaubte
Statewechsel stattfinden.

von Jens Gutschmidt (Gast)


Lesenswert?

Hallo Sebastin,
Hallo Alban,

wenn ich Dich, Sebastian, recht verstehe, geht es im Eigentlichen um
eine Art Prozeßsynchronisation bzw. "Point of Save Return (PSR)" auf
HW-Ebene. Ich hatte ein ähnliches Problem kürzlich. Dabei laufen drei
Zustandsmaschinen (FSM) teils voll parallel; warten aber teils auch auf
Ergebnisse der Nachbar-FSMs. So einfach, wie Du, Alban, es darstellst,
ist es bisweilen leider nicht. Wenn, wie es bei meinem - mittlerweile
gelösten Problem - um das Auswerten und Einsychronisieren von externen
Daten geht (Disk-Emulator f. Apple II+, Lesen, Schreiben). Wartende
FSMs bleiben sehr wohl hängen, wenn eine z.Zt. aktive FSM keine Daten
mehr an Nachbar-FSMs liefert, weil z.B. externe Trigger-Signale
ausbleiben.
Ich habe zur Lösung dieses Problems sog. "Token" eingeführt, die
zwischen den FSMs ausgetauscht werden. Verbleibt ein Token zu lange in
einer FSM, wird ein PSR-Signal für alle beteilligten FSMs vom WatchDog
erzeugt und setzt diese FSMs auf einen PSR zurück. Der WatchDog ist auf
die jeweilige FSM, die den Token hat, parametrierbar, was z.B.
Zeitdauer/Zyklenanzahl angeht.
Wegen der Komplexität der Beschreibung und Simulation verwende ich
allerdings den HDL Designer v. Mentor und ModelSim.

Für weitergehende Unterstützung stehe ich Dir gerne zur Verfügung. Auch
für Codierung, Simulation und ggf. Testbenches (TestBencherPro).

Gruß + viel Erfolg
   Jens

von Sebastian J. (Gast)


Lesenswert?

@ jens: antwort siehe email

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
Noch kein Account? Hier anmelden.