Forum: PC-Programmierung Unterschiede Implementierung FSM (Zustandsautomat) in µC und FPGA


von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Servus,

in einem anderen thread wurde am Beispiel FSM-Erstellung die These 
aufgestellt, das sich dies zwischen FPGA und µC-Spezialisten 
unterscheidet:

> Meistens Autodidakten, die aus der C-Ecke kommen und von
> Elektronik nichts verstehen. Digitaltechnik haben sie nicht erlernt,
> kennen die Mechanismen nicht und programmieren state machines. Dann
> arbeiten sie viel mit Code-Generatoren und wundern sich, ...

(siehe: Beitrag "Re: Projektverzug und Bugdichte in der FPGA-Entwicklung")

Ich hab da mal ein paar Fragen aufgestellt, um heraus zu loten, wo ob 
einer eher ein allgemeiner FSM-Kenner ist, mit C-Programmierung 
desselben Erfahrung hat oder ein FPGA-Experte ist.

Sicher ist diese Auswahl sehr subjektiv, mal zu detailiert, an anderer 
Stelle werden Teile des Know/Hows nicht getestet, dessen Fehlen erst 
später zu "bösen Erwachen" führt. Da kann diese Auflistung sicher 
ergänzt respektive verfeinert werden:

Fragen FSM Design allgemein:

* Was ist mealy/Moore
* was ist ein Sackgassen-Zustand
* Was ist ein unerreichbarer state
* wie dokumentiert man eine FSM (Automatengraph, Zustand, Transition, * 
Transitionbedingung, output)
* wie macht man eine FSM robust?
* was bedeutet "Lebendigkeit" im Zusammenhang mit FSM

Fragen Schwerpunkt (embeddded) programmierer:

* was ist Enumeration/Aufzählungstyp ?
* wie organisiert den Sourcecode einer FSM damit es übersichlich bleibt 
(header, funktional) ?
* wie organisiet man eine wartbare (leicht anpassbaer) FSM
* Gibt es ein LoC-Limit für FSM
* testunit für FSM
* wie spaghetti ist fsm
* switch case break
* was schreibt man in default:
* code style/lint für FSM
* typische Fehler die man bei FSM gemacht hat/kennt
* Welche Testabdeckung (test coverage) kann man wie erreichen ?

Fragen bzgl. FPGA-Aspekte:

*(VHDL) Ein oder zwei process Darstellung
* Anzahl states bezüglich schaltgeschwindigkeit
* Statcodierung ONE-HOT versus binary versus GRAY Vor-, Nachteile, 
Möglichkeit.
*P robleme beim (asynchronen) reset
* warum states beim Debugging (nach Synthese/Implementierung) nicht mehr 
sichtbar
* was bedeutet fully encoded
* implementierungsunterschiede FF-FSM versus RAM-FSM
* VHDL: syntax gepulste signale (nur einen Takt lang aktiv)
* Auswirkungen single event upset auf FSM, wie gegenmassnahmen.
sind die designprizipien für Zähler/counter auf FSM übertragbar.
* wenn ein LFSR die scnellste Implementierung für einen Zähler ist, kann 
man mit LSFR besonders schnelle FSM bauen ?
* wie macht man eine FPGA-FSM schneller? (schnell meint hier eine 
kürzeres period constraints setzen zu können.
* was verlangsamt eine FPGA-FSM (bei gleichen Ablauf), was nicht
* was macht ein FSM größer (mehr Logikelemente)

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ganz hervorragende Arbeit. Aehnlich wichtig waere bestimmt auch ein 
detaillierter Fragenkatalog zum differenzierten Einsatz von 17er 
Schluesseln bei Kfz-Mechatronikern und Industriemechanikern.

scnr,
WK

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

> Aehnlich wichtig waere bestimmt auch ein
> detaillierter Fragenkatalog zum differenzierten Einsatz von 17er
> Schluesseln bei Kfz-Mechatronikern und Industriemechanikern.

Och, manche erkennen die Wichtigkeit der richtigen Besetzung einer 
Stelle erst, wenn sie in einem Flieger sitzen auf desem Bordrechner 
"Gurkensoftware" läuft.

Oder unter einem Medizingerät liegen, dessen Zustandsautomat von einem 
Programmierer runtergeschrieben wurde, der nicht bedachte, wie schnell 
manche Assistentin die Tasten drückt:

https://de.wikipedia.org/wiki/Therac-25#Programmfehler

Manchmal ist der "Schrauber" auch zu 'bequem', die richtige Schraube zu 
finden und dem Flieger fliegt beim Flug die Frontscheibe weg:
https://de.wikipedia.org/wiki/British-Airways-Flug_5390#Unfallursache

SCNR,

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

Als Merkliste beim Interview sicher OK. Es muss aber klar sein, dass

 * es zu den meisten Fragen keine allgemeingültige Antwort gibt. Die 
Frage muss daher nicht "wie macht MAN das" lauten sondern "DU" und in 
dessen Kontext interpretiert werden.

 * dass nicht die Antworten an sich wichtig sind, sondern wie sicher 
sich jemand in dem Gebiet bewegt.

z.B. bei "LOC Limit" hast Du als Bewerber keine Chance auf eine 
sinnvolle Antwort, wenn Du Dein Gegenüber nicht schon sehr gut kennst.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bradward B. schrieb:
> Statcodierung ONE-HOT versus binary versus GRAY Vor-, Nachteile,
> Möglichkeit.
Woran kann es liegen, wenn bei der One-Hot-FSM auf einmal mehrere 
FFs/States gleichzeitig "hot" sind?

> *P robleme beim (asynchronen) reset
Wann kann Metastabilität zum Problem werden? Und warum ist sie meistens 
nicht das Problem?

: Bearbeitet durch Moderator
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

>  * es zu den meisten Fragen keine allgemeingültige Antwort gibt. Die
> Frage muss daher nicht "wie macht MAN das" lauten sondern "DU" und in
> dessen Kontext interpretiert werden.
>
>  * dass nicht die Antworten an sich wichtig sind, sondern wie sicher
> sich jemand in dem Gebiet bewegt.

Entscheidend ist IMHO, ob der Befragte sich schon mal mit diesem Thema 
in der Praxis beschäftigt hat/wurde.
Oder ob er sich was anhand seiner Erinnerungen an Gehörtes "was aus den 
Fingern saugt".
Egal, wie sicher er/sie beim "Finger saugen" rüberkommt.

> z.B. bei "LOC Limit" hast Du als Bewerber keine Chance auf eine
> sinnvolle Antwort, wenn Du Dein Gegenüber nicht schon sehr gut kennst.

Die Frage, wieviel Zeilen ein source-File resp. function/class maximal 
enthalten sollte, ist bei einer FSM eher eine "Fangfrage".
Lt. ISBN:  ‎978-3897215672 (Das Buch mit dem Esel)
ist es sinnvoll, FSM wegen der Gesamtheit/Ganzheitlichkeit in einem File 
zu halten.

https://de.wikipedia.org/wiki/Fangfrage

: Bearbeitet durch User
von Martin S. (strubi)


Lesenswert?

Bradward B. schrieb:
> * wenn ein LFSR die scnellste Implementierung für einen Zähler ist, kann
> man mit LSFR besonders schnelle FSM bauen ?

Die hier finde ich noch pfiffig, ansonsten geht alles andere mir etwas 
in Richtung 'academic nitpicking'.
Betreffend Safety koennte man die Robustheit einer FSM ausfuehren, oder 
ueber die formale Verifizierbarkeit reden.

Bei einer Bewerbung oder einem Assessment reicht mir eigentlich, wenn 
ich genuinen Sourcecode des Probanden zu Gesicht bekomme. Waehrend der 
Covid-Zeit haben wir dazu einfache Tests auf Jupyter-Notebook-Basis 
eingesetzt, hat sich auch bewaehrt.

von Falk B. (falk)


Lesenswert?

Bradward B. schrieb:
> Die Frage, wieviel Zeilen ein source-File resp. function/class maximal
> enthalten sollte, ist bei einer FSM eher eine "Fangfrage".
> Lt. ISBN:  ‎978-3897215672 (Das Buch mit dem Esel)
> ist es sinnvoll, FSM wegen der Gesamtheit/Ganzheitlichkeit in einem File
> zu halten.

Das stimmt meistens. Darum sollte man auch eher die maximale Anzahl 
Zeilen/Funktion bzw. case im Blick haben. Man kann problemlos Dutzende 
kleine Funktionen bzw. State in einer Datei unterbringen.

>
> https://de.wikipedia.org/wiki/Fangfrage

Ja, aber diese entwickeln sich sehr schnell zum Religionskrieg und 
Klugscheißerei. Und das in einem Vorstellungsgespräch? Naja.

von 🍅🍅 🍅. (tomate)


Lesenswert?

FSM Fliegendes Spaghetti Monster?

von Falk B. (falk)


Lesenswert?

Bradward B. schrieb:
> Fragen FSM Design allgemein:
>
> * Was ist mealy/Moore

Zwei Typen von FSMs. EInmal mit 3 Logikdekodern, einmal mit einem. Frag 
mich nicht, welcher was ist. Ohne Googel würde ich sagen Moore hat nur 
einen.

> * was ist ein Sackgassen-Zustand

Ein Zustand einer FSM ohne Ausweg zu anderen States (außer hartes Reset)

> * Was ist ein unerreichbarer state

Ein Zustand einer FSM, welcher nie erreicht wird. (Apfelmus ist Mus aus 
Äpfeln)

> * wie dokumentiert man eine FSM (Automatengraph, Zustand, Transition, *
> Transitionbedingung, output)

Die meisten "Helden" tun das gar nicht . . . Steht doch alles im 
Quelltext

> * wie macht man eine FSM robust?

Möglichst alle komischen Fälle von Eingangssignalen prüfen und passend 
reagieren incl. Fehlerzuständen.

> * was bedeutet "Lebendigkeit" im Zusammenhang mit FSM

Keine Ahnung

> * was ist Enumeration/Aufzählungstyp ?

Eine Zuordnung von Wörtern (z.B. Rot, Grün, Blau) zu Zahlen zwecks 
menschenlesbarer Kodierung.

> * wie organisiert den Sourcecode einer FSM damit es übersichlich bleibt
> (header, funktional) ?

Mit einem Switch/Case Statement (Kleine bis mittlere FSM) oder über eine 
Tabelle mit Funktionszeigern.

> * wie organisiet man eine wartbare (leicht anpassbaer) FSM

Modular ;-)

> * Gibt es ein LoC-Limit für FSM

Das gleiche wie bei Funktionen, welches aber von der "Philosopie" der 
Firma/Entwicklungsabteilung abhängt. Wenn eine Funktion deutlich länger 
als eine normale Bildschirmseite ist, wird es langsam zuviel.

> * testunit für FSM

Ist mehr oder minder das Gleiche wie für normale Funktionen.

> * wie spaghetti ist fsm

So sehr wie es der Koch verzapft hat. Eigentlich gar nicht, denn 
Zustandsübergänge einer FSM sind immer eineindeutig.

> * switch case break

Ist eine Möglichkeit zur Umsetzung einer FSM.

> * was schreibt man in default:

"Ich war hier"

> * code style/lint für FSM

Kommt drauf an.

> * typische Fehler die man bei FSM gemacht hat/kennt
> * Welche Testabdeckung (test coverage) kann man wie erreichen ?

Theoretisch 100%, wenn die FSM nicht zu groß und die Zustandsübergänge 
nicht zuviele sind.

> *(VHDL) Ein oder zwei process Darstellung

Logik und Speicher ein einem oder zwei VHDL-Prozessen. Die Ein-Prozess 
Variante ist kompakter und meistens besser.

> * Anzahl states bezüglich schaltgeschwindigkeit

Ist je nach Kodierung langsamer oder egal.

> * Statcodierung ONE-HOT versus binary versus GRAY Vor-, Nachteile,

Resourcenverbrauch (Logikzellen) gegenüber Geschwindigkeit

> Möglichkeit.
> *P robleme beim (asynchronen) reset

Der asynchrone Start der FlipFlops.

> * warum states beim Debugging (nach Synthese/Implementierung) nicht mehr
> sichtbar

Der Optimierer ist Schuld.

> * was bedeutet fully encoded

Ungenutzte States/Codes werden vollständig dekodiert und im Fehlerfall 
erkannt.

> * implementierungsunterschiede FF-FSM versus RAM-FSM

RAM kann im Allgemeinen nur kleine FSM kodieren, denn sonst wird zuviel 
RAM benötigt. Dafür sehr kompakt und schnell.

> * VHDL: syntax gepulste signale (nur einen Takt lang aktiv)

x and  not x_old oder so ähnlich

> * Auswirkungen single event upset auf FSM, wie gegenmassnahmen.

Passende Kodierung mit Redundanz und Hamming-Distanz >1.

> sind die designprizipien für Zähler/counter auf FSM übertragbar.

Welche denn? Jain.

> * wenn ein LFSR die scnellste Implementierung für einen Zähler ist, kann
> man mit LSFR besonders schnelle FSM bauen ?

1 aus N Kodierung (one hot)

> * wie macht man eine FPGA-FSM schneller? (schnell meint hier eine
> kürzeres period constraints setzen zu können.

Pipelining, one hot encoding

> * was verlangsamt eine FPGA-FSM (bei gleichen Ablauf), was nicht

Lange Liste

> * was macht ein FSM größer (mehr Logikelemente)

Zuviel Logik, komplexe Vergleiche mit breiten Signalen.

Wieviele Punkte habe ich erreicht? ;-)

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Falk B. schrieb:
> Wieviele Punkte habe ich erreicht? ;-)

Der Kandidat hat 99 Punkte. Ab 100 Punkte gibt es eine aufblasbare 
Waschmaschine.
Jury, wieviele Punkte sind das in oesterreichischen Schillingen?

scnr,
WK

von Harald K. (kirnbichler)


Lesenswert?

Dergute W. schrieb:
> Jury, wieviele Punkte sind das in oesterreichischen Schillingen?

Drölfundfuchzig.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Harald K. schrieb:
> Dergute W. schrieb:
>> Jury, wieviele Punkte sind das in oesterreichischen Schillingen?
>
> Drölfundfuchzig.

Das spielt doch überhaupt keine Rolle. Da Falk zwar nicht alle Fragen
beantworten konnte, er aber weit und breit der Einzige ist, der sich dem
Bewerbungstest unterzug, wird der Zuschlag für den Job in Bradwards
Firma wohl an ihn gehen.

@Falk: Herzlichen Glückwunsch zu deinem neuen Arbeitgeber :)

von Harald K. (kirnbichler)


Lesenswert?

Yalu X. schrieb:
> wird der Zuschlag für den Job in Bradwards
> Firma wohl an ihn gehen.

Ich weiß gar nicht, welchen Aufwand ich treiben würde, um so einen Job 
nicht zu bekommen.

Aber ich bin ja auch ein alter Sack, in absehbarer Zeit (< 10 Jahre) aus 
dem Erwerbsleben scheidend ... und ich hab' das Glück, als 
Embedded-Entwickler von derartigen Dingen verschont zu bleiben. Also 
nicht von State Machines, aber dem selbstverliebten theoretischen 
Überbau, der da breitgetreten wird, wie in jeder Erstsemestervorlesung 
bei den Wirtschaftsinformatikern, die sich gegenseitig mit 
stolzgeschwellter Brust die Akronyme herunterbeten, um zu beweisen, wie 
sehr sie in der Vorlesung doch aufgepasst haben.

Daß der Kram, den ich so zusammenfrickele*, ausreichend gut 
funktioniert, belegt mein seit Jahrzehten regelmäßig eingehendes Gehalt 
(und nein, ich bin kein Ödi, würde ich also dauerhaft Mursk abliefern, 
wäre mein Arbeitgeber schon lange nicht mehr mein Arbeitgeber)

*) für die wahren Freunde der hohen akademischen Lehre benutze ich die 
falschen Werkzeuge, die falsche Programmiersprache und mache sowieso 
alles falsch, deswegen schreibe ich nicht "entwickle".

von Yalu X. (yalu) (Moderator)


Lesenswert?

Harald K. schrieb:
> für die wahren Freunde der hohen akademischen Lehre benutze ich die
> falschen Werkzeuge, die falsche Programmiersprache […]

O je, dann bist du also auch einer von der Bascom¹-Fraktion ;-)

─────────────
¹) Mir fällt gerade keine Programmiersprache ein, die von der
   hohen akademischen Lehre mehr abgelehnt werden könnte.

von Harald K. (kirnbichler)


Lesenswert?

Yalu X. schrieb:
> O je, dann bist du also auch einer von der Bascom¹-Fraktion

Nee - ich nutze sehr überwiegend C. Und das ist, wenn man so 
hochdekorierten Fachkoryphäen wie unserem seit einiger Zeit als 
"Beobachter" schreibenden Programmiersprachenversteher und -Würdiger 
folgt, quasi der Grund für diverse Kernschmelzen in Atomreaktoren, der 
"Challenger"-Katastrophe, dem Börsencrash von 2008 und mindestens auch 
dem 30-jährigen Krieg.

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.