Case Statement: Müssen in allen Cases alle Zuweisungen drin stehen?

Gast #2550405
Lesenswert?
• ▲
▼
Hallo,

ich meine irgendwo gelesen zu haben, dass in einem Case-Statement in 
allen Cases jedes Signal, welches in diesem Statement vorkommt, eine 
Zuweisung haben muss. Mit anderen Worten, wenn ich in einer 
"when-Abfrage" einem bestimmten Signal etwas zuweise, so muss ich in 
allen übrigen "when-Abfragen" diesem Signal auch etwas zuweisen, auch 
wenn sich dieses Signal bei den übrigen Bedingungen nicht ändern soll. 
Stimmt das? (hoffe, ich habe es verständlich erklärt)
Moderator (Firma: Titel) Persönliche Seite #2550512
Lesenswert?
• ▲
▼
Zeig mal ein Beispiel. Interessant ist dabei: hast du das case in einem 
synchronen/getakteten oder einen kombinatorischen Prozess?

Denn wenn du in einm case etwas zuweist, und in eineme anderen nicht, 
dann muß das entsprechende signal speichern können. In einem 
getakteten Prozess wird das ein unkritisches Flipflop. In einem 
kombinatorischen Prozess wird in einem zwielichtigen Latch gespeichert.
Gast #2550551
Lesenswert?
• ▲
▼
Lothar Miller schrieb:
> In einem
> kombinatorischen Prozess wird in einem zwielichtigen Latch gespeichert.

Gerade das war mein Problem. Ich hatte das in einem kombinatorischen 
Prozess. Meine FSM ist hängen geblieben. Ich habe Warnungen von Lattice 
Diamond näher angeschaut und fand, dass Latches generiert werden. Nun 
habe ich die Zuweisungen ergänzt und alles läuft wie geschmiert.

Ich bedanke mich!
#2550862
Lesenswert?
• ▲
▼
> habe ich die Zuweisungen ergänzt

Was danach klingt, als hättest du jetzt jeden when-Fall einzeln 
versorgt. Die Latches vermeidet man viel konsequenter, wenn man als 
erstes im Prozess allen Signalen einen "Defaultwert" zuweist. Ein 
späteres if/case kann das problemlos überschreiben und man kann nicht 
einzelne Fälle vergessen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren