mikrocontroller.net

Forum: FPGA, VHDL & Co. watchdog


Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alban (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jens Gutschmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ jens: antwort siehe email

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.