Forum: FPGA, VHDL & Co. FSM Implementierung


von O_o (Gast)


Lesenswert?

Moin,

ich hab ne kurze Frage zur Beschreibung von FSMs. Angenommen ich habe 
vier Zustände S0 bis S3.

Sollte man dann in einem case(state) die Zustände S0 bis S3 explizit 
auswerten (Variante 1) oder S0 bis S2 explizit und S3 über ein 'others' 
abfangen (Variante 2)?

Könnte es nicht bei Variante 1 zu dem Fall kommen, dass ein Bitkipper im 
Zustandsregister in einen 'illegalen' Zustand führt? In Variante 2 
müsste dieser Fall ansich abgefangen werden, allerdings müsste der 
Ressourcenbedarf leicht ansteigen.

von GAU (Gast)


Lesenswert?

O_o schrieb:
> Könnte es nicht bei Variante 1 zu dem Fall kommen, dass ein Bitkipper im
> Zustandsregister in einen 'illegalen' Zustand führt?

Dann gibt es ganz andere Probleme.

von berndl (Gast)


Lesenswert?

aehm, was von deiner in einer HDL beschriebenen FSM uebrig bleibt 
bestimmen ueblicherweise die Synthesetools... (einfach mal den Report 
dazu mal genau durchlesen, du kannst ja auch Einstellungen in deiner 
Toolchain vorgeben)

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


Lesenswert?

O_o schrieb:
> Sollte man dann in einem case(state) die Zustände S0 bis S3 explizit
> auswerten (Variante 1) oder S0 bis S2 explizit und S3 über ein 'others'
> abfangen (Variante 2)?
Wenn dein Typ genau mit den Zuständen s0..3 definiert ist, und du alle 
vier möglichen Zustände in der FSM abfrägst, gibt es keine "anderen" 
Zustände mehr, die mit "when others" abgefragt werden könnten:
http://www.lothar-miller.de/s9y/categories/25-when-others

ABER ACHTUNG
Wie diese FSM mit 4 Zuständen realisiert wird, steht auf einem ganz 
ANDEREN Blatt, nämlich in den Syntheseeinstellungen. Dort kannst du z.B. 
One Hot, Binär, Gray, oder sonst ein Encoding auswählen. Und dann gibt 
es in der realen Hardware (=CPLD, FPGA) durchaus noch andere Zustände: 
in diesem Fall bei One Hot mit 4 Bits also 12 undefinierte 
Bitkombinationen (alles, wo mehr als 1 Eins gesetzt ist). Und du kannst 
solche ungültigen Zustände dann auch ganz einfach erreichen, z.B. über 
nicht synchronisierte Signale, die direkt in die FSM gehen:
http://www.lothar-miller.de/s9y/archives/64-State-Machine-mit-asynchronem-Eingang.html

von =_o (Gast)


Lesenswert?

Lothar Miller schrieb:
> ABER ACHTUNG
> Wie diese FSM mit 4 Zuständen realisiert wird, steht auf einem ganz
> ANDEREN Blatt, nämlich in den Syntheseeinstellungen. Dort kannst du z.B.
> One Hot, Binär, Gray, oder sonst ein Encoding auswählen. Und dann gibt
> es in der realen Hardware (=CPLD, FPGA) durchaus noch andere Zustände:
> in diesem Fall bei One Hot mit 4 Bits also 12 undefinierte
> Bitkombinationen (alles, wo mehr als 1 Eins gesetzt ist). Und du kannst
> solche ungültigen Zustände dann auch ganz einfach erreichen, z.B. über
> nicht synchronisierte Signale, die direkt in die FSM gehen:
> http://www.lothar-miller.de/s9y/archives/64-State-...

Der zweite Link ist wirklich interessant. Super erklärt!

Mal angenommen alle Signale sind synchron, dann könnten doch Glitches 
trotzdem zu diesem Verhalten führen, oder?! Und wenn man dann in einem 
Zustand landet, der auf einen Handshake wartet ist Ende im Gelände.
Demnach müsste jeder Zustand, der durch andere (externe) Signale 
weitergeschaltet wird mit einer Timeoutüberwachung versehen werden.

von Christian R. (supachris)


Lesenswert?

Wo sollen denn Glitches in einem synchronen Design herkommen? Da wird 
doch immer nur der (stabile) Zustand bei der nächsten Taktflanke 
ausgewertet. Da kommts höchstens zu komischen Zuständen, wenn die 
Taktfrequenz höher ist als das was die Logikstufen hergeben. Aber die 
Implementierungstools sagen dir bei richtigen Constraints schon, wenn es 
zu schnell wird.

von O_o (Gast)


Lesenswert?

Christian R. schrieb:
> Wo sollen denn Glitches in einem synchronen Design herkommen?

z.B durch kapazitive oder induktive Einkopplungen

von Christian R. (supachris)


Lesenswert?

Innerhalb des FPGA? Wenn das passiert, ist am gesamten Design bzw. an 
der Umgebung was grundlegendes falsch.

von Georg A. (georga)


Lesenswert?

Naja, Bitkipper durch Strahlung sind auch auf der Erde möglich, wenn 
auch sehr selten.

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


Lesenswert?

Christian R. schrieb:
> Wo sollen denn Glitches in einem synchronen Design herkommen?
Natürlicht glitcht ein synchrones Design: jedesmal, wenn sich nach einem 
Takt der Pegel eines Flipflops ändert und eine passende Kombinatorik 
dahinter geschaltet ist. Aber das ist der Knackpunkt: Es wird
> immer nur der (stabile) Zustand bei der nächsten Taktflanke ausgewertet.
Kurz&bündig: bis zur nächten Taktflanke muss sich diese Glitcherei 
erledigt haben, denn sonst ist das Design zu übertaktet.

Georg A. schrieb:
> Naja, Bitkipper durch Strahlung sind auch auf der Erde möglich, wenn
> auch sehr selten.
Ja, sagen wir mal in homöopathischen Dosen. Wenn man Actel (jetzt 
Microsemi) glauben kann/will tritt das allerdings wesentlich häufiger 
auf...  ;-)

> Naja, Bitkipper durch Strahlung sind auch auf der Erde möglich
Und dann kommt es immer noch darauf an, ob dadurch "nur" ein Datenbit 
umkippt (was auch in jedem RAM-Baustein passieren kann/wird) oder ob 
eine Konfigurationsspeicherzelle im FPGA umkippt und so z.B. eine 
fehlerhafte Verdrahtung erzeugt.

von Duke Scarring (Gast)


Lesenswert?

Georg A. schrieb:
> Naja, Bitkipper durch Strahlung sind auch auf der Erde möglich,
Da würde ich mir erst Sorgen drüber machen, wenn Deine Mimik am Reaktor 
sitzt, im Flugzeug fliegt oder auf dem Weg zum Mond ist.

Duke

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.