1 | --Zustand Kodierung
|
2 | CONSTANT state_idle :std_logic_vector(1 downto 0) := "00";
|
3 | CONSTANT state_licht :std_logic_vector(1 downto 0) := "11";
|
4 | CONSTANT state_wait :std_logic_vector(1 downto 0) := "01";
|
Das macht man normalerweise anders. Nämlich mit einer Typdefinition für
die Zustände. Dann braucht man auch keinen others Pfad:
http://www.lothar-miller.de/s9y/archives/30-when-others.html
Sparxx schrieb:
> Das Signal musst du zuerst initialisieren,es kann ja nicht irgendeinen
> Anfangswert annehmen.
Doch: jedes Signal nimmt uninitialisiert den "linkesten" Wert seiner
Typdefinition an. Bei std_logic ist das 'U', bei einem bit die '0',
bei integer die negativste Zahl usw...
Stephen Trowbridge schrieb:
> in der zweiten IF-Schleife
http://www.if-schleife.de
> es ist doch klar definiert das es '1' werden sollte?
Sieh dir mal diesen Prozess an:
1 | IF sekTick'EVENT AND sekTick = '1' THEN
|
2 | .... -- bei einer steigenden Flanke mach das hier
|
3 | ELSE
|
4 | sechsSekFlag <= '0'; -- und sonst das? Häh?
|
5 | END IF;
|
Kurios, nicht wahr?
Zum Hintergrund: eine steigende Flanke hat die Dauer 0 (Null)... :-o
Du hast damit einen eigenartigen Effekt: die Simulation wird dir hier
für die Dauer der '1' des sekTick den Wert aus dem THEN Zweig
ausgeben, und dann beim nächsten sekTick'event in die ELSE gehen...
In der Hardware ist der sekTick dagegen dauerhaft und fest auf '0'
verdrahtet.