Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

VHDL 8: Automaten 2.

Ähnliche Präsentationen


Präsentation zum Thema: "VHDL 8: Automaten 2."—  Präsentation transkript:

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 AnsteuerLogik n n = Anzahl der FFs m Et m !Q 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=0 blinker rechts=0 bremesen=0
Mealy Automat Blinker rechts=1 led2 led3 brms led4 idle led1 Blinker links=0 blinker rechts=0 bremesen=0 Reset Blinker links = 1 Bremsen=1 00 Steuerlogik Q D !Q Q0 Q1 Takt Reset L1 L2 L3 L4 Ausgangslogik Blinker rechts Blinker links Bremshebel Q2

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

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

8 Zustandsübergänge müssen neu definiert werden
Blinker rechts=1 Blinker links = 1 Blinker links = 1 Blinker links = 1 Blinker links = 1 led1 led2 led3 led4 00 01 10 11 Reset Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 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
No. Eingänge Aktueller Zustand Lampen links rechts bremsen Q1 Q0 L1 L2 L3 L4 led1 1 led2 2 led3 3 led4 4 5 6 7 8 9 10 11 12 13 14 15 Idle Bremsen

11 Ausgangslogik Mealy(Fortsetzung)
No. Eingänge Aktueller Zustand Lampen links rechts bremsen Q1 Q0 L1 L2 L3 L4 16 1 led1 17 led2 18 led3 19 led4 20 21 22 Led3 23 24 25 26 27 28 29 30 31

12 Prozesse beim Mealy Automaten
Zustands Speicher Ausgangslogik Next State Logik moore_gegenwart 4 moore_folge Kombinatori- scher Prozess Kombinatori- scher Prozess 4 Getakteter Prozess clk reset Eingänge Drei Prozess FSM

13 Ausgangslogik des Knightriders nach Mealy
Ausgang: PROCESS (aktueller_zustand) BEGIN IF BREMSEN = ‚1‘ THEN led_out <= "1111"; ELSIF (LINKS = ‚0‘) AND (RECHTS = ‚0‘)) THEN led_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"; END CASE; END IF; END PROCESS ausgang;

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

15 Mealy vs. Moore Moore Mealy
Braucht normalerweise mehr Zustände als die Mealy Maschine Man kann Zustände einsparen Indirekt, muss erst bis zur nächsten Taktflanke warten, bis diese reagiert Schnelleres reagieren der Ausgänge Eventuelle Glitches werden von Eingang zu Ausgang durchgeschleusst Beim Zusammenschalten von mehreren Mealy Maschinen kann ein langer kombinatorischer Pfad entstehen, der die max. Taktfrequenz beeinflusst.

16 Übung 7, Aufgabe 2 Aufzug hat zwei Endpunkte oben und unten
5V KK RUFK RUFE VRE VRK M MAUF MAB TKK TKE 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 Zustandscodierung des Knightriders als Medvedev Automat
Blinker rechts=1 Blinker links = 1 led1 led2 led3 led4 1000 0100 0010 0001 Bremsen=1 Blinker links=0 blinker rechts=0 bremesen=0 idle brms Reset 0000 1111 Bremsen=1

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 Glitch = kurzzeitiger Signaleinbruch
Glitches N 5 6 7 N Q3 Q2 Q1 Q0 seven 1 2 3 4 5 6 7 CLK Q0 1 Q1 Q2 Q3 seven ~ 0.5 nS „Glitch“ Glitch = kurzzeitiger Signaleinbruch

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

22 Medvedev Automat d Zt Zt+1 = d (Zt, Et) At = Zt, Q n AnsteuerLogik n
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 One Hot Kodierung (Option im Synthesizer)
Blinker rechts=1 Blinker links = 1 led1 led2 led3 led4 100000 010000 001000 000100 Bremsen=1 Blinker links=0 blinker rechts=0 bremesen=0 idle brms Reset 000001 Bremsen=1

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

26 Zustandsdefinierung durch Typen

27 Zustandskodierung des Knightriders
led2 led3 brms led4 idle led1 000 111 100 110 011 001 Zustand Q2 Q1 Q0 idle led1 1 led2 led3 led4 brms undef1 undef2

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 Kodierung constant 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 2. Zustandskodierung durch Typendefinierung
TYPE knight_state IS (state_idle, state_led1, state_led2, state_led3, state_led4,state_bremsen); Name des neuen Type --Zustands Kodierung constant 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

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
type mc_state_type is (idle ,write ,read1 ,read2 ,read3 ,read4 ); attribute enum_encoding : string; attribute enum_encoding of mc_state_type: type is " "; 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 Abhilfe: Synchronisierschaltung
Automat A Q D !Q Q D !Q Eingang CLK B (z.B. 1 MHz)


Herunterladen ppt "VHDL 8: Automaten 2."

Ähnliche Präsentationen


Google-Anzeigen