1 / 37

VHDL 8: Automaten 2

VHDL 8: Automaten 2. Übung 7: Aufgabe 3. Getränkeausgabe nach Einwurf von 2 x 1 Fr. Jederzeit Geldrückgabe durch Betätigen der Taste „Geldrückgabe“. Bisher kennen wir den Moore Automat. Gegenwärtiger(Aktueller) Zustand. Z t. A t = m (Z t ). Z t+1 = d (Z t , E t ). Q.

jera
Download Presentation

VHDL 8: Automaten 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VHDL 8: Automaten 2

  2. Übung 7: Aufgabe 3 • Getränkeausgabe nach Einwurf von 2 x 1 Fr. • Jederzeit Geldrückgabe durch Betätigen der Taste „Geldrückgabe“

  3. Bisher kennen wir den Moore Automat Gegenwärtiger(Aktueller) Zustand Zt At = m (Zt) Zt+1 = d (Zt, Et) Q Ausgangs-Logik n n AnsteuerLogik n = Anzahlder FFs m m !Q Et d Folge Zustand Takt Et = Eingangsvektor Zt = Zustandssvektor zum gegenwärtigen Zeitpunkt t Zt+1 = Zustandssvektor nach dem Taktimpuls

  4. Knightrider als Moore Automat Ausgangslogik n Led_out(1) aktueller_zustand folge_zustand Led_out(2) bl_links D Q Led_out(3) Steuer-logik bl_rechts bremse !Q Led_out(4) reset clk

  5. Blinker links = 1 led2 led3 led1 led4 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Blinker links = 1 Blinker links = 1 Blinker links = 1 Bremsen=1 Reset idle brms Bremsen=1 Blinker links=0blinker rechts=0bremesen=0 Ausgangslogik Reset Q0 Blinker links = 1 D Q L1 Blinker links Blinker rechts !Q Bremshebel L2 Bremsen=1 Q1 D Q L3 Blinker links=0blinker rechts=0bremesen=0 !Q L4 Steuerlogik 00 Q2 D Q !Q Takt Mealy Automat

  6. Mealy Automat allgemein Zt At = w (Zt,, Et) Zt+1 = d (Zt, Et) Q Ausgangs-Logik n n AnsteuerLogik n = Anzahlder FFs w m !Q Et d Takt Et = Eingangsvektor Zt = Zustandssvektor zum gegenwärtigen Zeitpunkt t Zt+1 = Zustandssvektor nach dem Taktimpuls

  7. led1 led2 led3 led4 idle brms Zustandscodierung 100 110 011 001 00 01 10 11 000 111 • Zustände können „wegrationalisiert“ werden • Weniger Zustände brauchen weniger Flip Flops

  8. Blinker links = 1 Blinker rechts=1 Blinker links = 1 Blinker links = 1 Blinker links = 1 led1 led2 led3 led4 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Zustandsübergänge müssen neu definiert werden 00 01 10 11 Reset Blinker rechts=0 AND Blinker links = 0

  9. Knightrider als Mealyautomat mit 2 FF Ausgangslogik n Led_out(1) aktueller_zustand folge_zustand Led_out(2) bl_links D Q Led_out(3) Steuer-logik bl_rechts bremse !Q Led_out(4) reset clk

  10. Ausgangslogik beim Knightrider als Mealy Idle Bremsen

  11. Ausgangslogik Mealy(Fortsetzung)

  12. Prozesse beim Mealy Automaten ZustandsSpeicher Ausgangslogik Next State Logik moore_gegenwart 4 moore_folge Kombinatori-scher Prozess Kombinatori-scher Prozess 4 GetakteterProzess clk reset Eingänge Drei Prozess FSM

  13. Ausgangslogik des Knightriders nach Mealy Ausgang: PROCESS (aktueller_zustand) BEGIN IF BREMSEN = ‚1‘THENled_out <= "1111"; ELSIF (LINKS = ‚0‘) AND (RECHTS = ‚0‘)) THENled_out <= “0000"; ELSE CASE aktueller_zustand is when state_led1 => led_out <= "1000"; when state_led2 => led_out <= "0100"; when state_led3 => led_out <= "0010"; when state_led4 => led_out <= "0001"; when OTHERS => led_out <= "0000"; ENDCASE; ENDIF; ENDPROCESS ausgang;

  14. D D D D D D Q Q Q Q Q Q Tpfad1 = 3 nS + 3 nS + 4 nS + 1 nS + 2 nS = 13 nS Tpfad2 = 3 nS + 6 nS + 2 nS + 1 nS + 2 nS = 14 nS Tpfad3 = 3 nS + 3 nS + 5 nS + 2 nS + 1 nS + 2 nS = 16 nS Fmax = 62.5 MHz Verzögerungszeiten beim Mealy Automaten Baugruppe A Mealy Automat Baugruppe C 3nS tPDCLKQ-FF = 3 nS 4nS 2nS 3nS 6nS D Q tSU-FF= 2 nS 2nS 5nS Tperiod-max = tPDCLKQ-FF+ tPD-Logic +tPD-Leitung+ tSU-FF

  15. Mealy vs. Moore

  16. MAB 5V 5V 5V VRE RUFE TKE KK VRK RUFK TKK M MAUF Übung 7, Aufgabe 2 • Aufzug hat zwei Endpunkte oben und unten • Drücken der Ruf Taste Speichert Funktion • (Aufzug hat nur zwei Geschosse, desh. Nur eine Taste) • Aufzug fährt erst los wenn Tür geschlossen

  17. Medvedev Automat

  18. Blinker links = 1 Blinker rechts=1 Blinker links = 1 Blinker links = 1 Blinker links = 1 led1 led2 led3 led4 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Bremsen=1 Bremsen=1 Blinker links=0blinker rechts=0bremesen=0 Blinker links = 1 Reset idle brms Bremsen=1 Blinker links=0blinker rechts=0bremesen=0 Zustandscodierung des Knightriders als Medvedev Automat 1000 0100 0010 0001 0000 1111

  19. Knightrider als Moore Automat Ausgangslogik n Led_out(1) aktueller_zustand folge_zustand Led_out(2) bl_links D Q Led_out(3) Steuer-logik bl_rechts bremse !Q Led_out(4) reset clk

  20. Glitches N 5 6 7 CLK Q0 1 Q1 Q2 Q3 ~ 0.5 nS seven „Glitch“ Glitch = kurzzeitiger Signaleinbruch

  21. D Q Knightrider als Medvedev Automat n aktueller_zustand folge_zustand Led_out(1) D Q Led_out(2) Steuer-logik Led_out(3) bl_links bl_rechts Led_out(4) bremse !Q reset clk

  22. Medvedev Automat Zt Zt+1 = d (Zt, Et) At = Zt, Q n n AnsteuerLogik m !Q Et d n = Anzahl FFs = Anzahl der Ausgänge Takt Et = Eingangsvektor Zt = Zustandssvektor zum gegenwärtigen Zeitpunkt t Zt+1 = Zustandssvektor nach dem Taktimpuls

  23. One Hot Kodierung

  24. Blinker links = 1 Blinker rechts=1 Blinker links = 1 Blinker links = 1 Blinker links = 1 led1 led2 led3 led4 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Bremsen=1 Bremsen=1 Blinker links=0blinker rechts=0bremesen=0 Blinker links = 1 Reset idle brms Bremsen=1 Blinker links=0blinker rechts=0bremesen=0 One Hot Kodierung(Option im Synthesizer) 001000 100000 010000 000100 0000010 000001

  25. D Q !Q Einfachere Ansteuerlogik bei One Hot Kodierung Q0 D Q Q1 E !Q D Q Q2 !Q Takt

  26. Zustandsdefinierung durch Typen

  27. 100 110 011 001 led1 led2 led3 led4 000 111 idle brms Zustandskodierung des Knightriders

  28. 1. Zustandskodierung mit Konstanten ENTITY knightrider IS PORT(clk,reset, bl_links, bl_rechts, bremse: IN std_logic; led_out : OUT std_logic_vector(4 downto 1)); END knightrider; ARCHITECTURE rtl OF knightrider IS signal folge_zustand : std_logic_vector(2 downto 0);signal aktueller_zustand : std_logic_vector(2 downto 0); --Zustands Kodierungconstant state_idle : std_logic_vector(2 downto 0) := "000";constant state_led1 : std_logic_vector(2 downto 0) := "100";constant state_led2 : std_logic_vector(2 downto 0) := "110";constant state_led3 : std_logic_vector(2 downto 0) := "011";constant state_led4 : std_logic_vector(2 downto 0) := "001";constant state_bremsen : std_logic_vector(2 downto 0) := "111"; BEGIN

  29. Simulation mit Constant State-Assignmnets

  30. Name des neuen Type TYPE knight_state IS (state_idle, state_led1, state_led2, state_led3, state_led4,state_bremsen); --Zustands Kodierungconstant state_idle : std_logic_vector(2 downto 0) := "000";constant state_led1 : std_logic_vector(2 downto 0) := "100";constant state_led2 : std_logic_vector(2 downto 0) := "110";constant state_led3 : std_logic_vector(2 downto 0) := "011";constant state_led4 : std_logic_vector(2 downto 0) := "001";constant state_bremsen : std_logic_vector(2 downto 0) := "111"; Type ersetzt Definierung von Konstanten signal folge_zustand : knight_state;signal aktueller_zustand : knight_state; Signale müssen jetzt vom Type sein, der die Zustände definiert 2. Zustandskodierung durch Typendefinierung

  31. Simulation mit Type State-Assignments

  32. Vorteile der Typendefinierung • Die Zustandskodierung muss nicht selbst bestimmt werden, es wird vom VHDL Synthesizer übernommen. (Nachteil – kein Einfluss auf Kodierung) • Der Synthesizer bestimmt die minimale Anzahl nötiger Flip Flops selbst. • In der Simulation werden die Zustände mit Namen angezeigt leichteres „debugging“. • Für Medvedev 3. Möglichkeit: Enumerieret Kodierung anwenden

  33. 3. Enumerierte Zustandskodierung typemc_state_type is(idle ,write ,read1 ,read2 ,read3 ,read4 ); attributeenum_encoding : string; attributeenum_encoding ofmc_state_type: typeis"0000 0100 1000 1001 1010 1011"; Wird durch die meiste Synthesesoftware unterstützt

  34. Synchronisierung

  35. Eingänge sind nicht synchronisiert Reset Ausgangslogik Q0 L1 D Q Blinker links Blinker rechts L2 Bremshebel !Q L3 Q1 D Q L4 !Q Q2 D Q Steuerlogik !Q Takt

  36. Verhältnis von Steuersignalen und Takt • Wenn sich die Eingänge von Automaten zu jeder beliebigen Zeit ändern können, so können sie Setup Zeit Verletzungen bei den Flip Flops der Automaten verursachen. • Dies hat zur Folge, dass der Automat nicht in gewollte Zustände springt oder Parasitäre Zustände annimmt. • Eingangssignale von Automaten müssen deshalb immer synchron zum Takt geändert werden.

  37. D D Q Q !Q !Q Abhilfe: Synchronisierschaltung Automat A Eingang CLK B(z.B. 1 MHz)

More Related