Hallo Leute, hat jemand ne Ahnung wie man eine FSM auf steigender und fallender reagieren lässt. Ich bräuchte eine FSM die bei steigender und bei fallender Taktflanke den Status ändern kann. Gibt es eine einfach Lösung, oder muss ich den takt mit pll verdoppeln. Das nachfolgende Beispiel (nur als Test gedacht) funktioniert leider nicht. LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ENTITY myEntity IS PORT ( clk : IN std_logic; engine : IN std_logic; detection : OUT std_logic ); END myEntity; ARCHITECTURE myEntityArch OF myEntity IS SIGNAL counter : signed(15 DOWNTO 0); TYPE fsmstates IS (stop, starting); SIGNAL fsmstate : fsmstates := stop; SIGNAL nextfsmstate : fsmstates := stop; BEGIN PROCESS (clk) BEGIN IF rising_edge(clk) THEN fsmstate <= nextfsmstate; END IF; IF falling_edge (clk) THEN fsmstate <= nextfsmstate; END IF; CASE fsmState IS WHEN stop => IF (engine = '1') THEN nextfsmstate <= starting; ELSE nextfsmstate <= stop; END IF; detection <= '0'; WHEN starting => IF (engine = '1') THEN nextfsmstate <= starting; ELSE nextfsmstate <= stop; END IF; detection <= '1'; WHEN OTHERS => detection <= '0'; END CASE; END PROCESS ; END myEntityArch; Danke
@ ThomasM >hat jemand ne Ahnung wie man eine FSM auf steigender und fallender >reagieren lässt. Geht praktisch so gut wie nicht. > Ich bräuchte eine FSM die bei steigender und bei >fallender Taktflanke den Status ändern kann. Gibt es eine einfach Sicher? Warum? Wie ist die Schaltung? >Lösung, oder muss ich den takt mit pll verdoppeln. Wäre eine Möglichkeit, wenn das mit der steigenden/fallenden Flanke WIRKLICH gebraucht wird. Eine andere wäre, die Statemachine auf zwei Prozesse aufzuteilen und in jedem eine Flanke auszuwerten. >Das nachfolgende Beispiel (nur als Test gedacht) funktioniert leider >nicht. Logisch, kann gar nicht. So gut wie keine Arhitektur hat FlipFlops, welche auf beide Flanken gleichzeitig reagieren können (Ausnahme Coolrunner-II von Xilinx). Ausserdem ist deine Beschreibung falsch. Man müsste schreiben if clk'event then -- reagiert auf beide Flanken MfG Falk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.