Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

VHDL 7: Automaten 1.

Ähnliche Präsentationen


Präsentation zum Thema: "VHDL 7: Automaten 1."—  Präsentation transkript:

1 VHDL 7: Automaten 1

2 Blockdiagramm: Vorwärts/Rückwärtszähler
Q D !Q Q0 Q1 Q2 Takt E

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

4 Beispiel: Knightrider FSM
Blinker links Blinker rechts Bremse

5 Beispiel: Knightrider FSM
Blinker links Blinker rechts Bremse

6 Beispiel: Knightrider FSM
Blinker links Blinker rechts Bremse

7 Beispiel: Knightrider FSM
Blinker links Blinker rechts Bremse

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

9 Eingänge und Ausgänge Knightrider Automat bl_links Led_out(1)
bl_rechts Led_out(2) Knightrider Automat bremse Led_out(3) reset Led_out(4) clk

10 Definition der unterscheidbaren Zustände
led1 led2 led3 led4 idle brms

11 Ermitteln der Zustandsübergänge
led1 led2 led3 led4 bl_rechts = ‚1‘ bremsen = ‚1‘ idle brms bl_links = ‚0‘ bl_rechts = ‚0‘ bl_links = ‚1‘ bremsen = ‚0‘

12 Ermitteln der Zustandsübergänge
bl_links = ‚1‘ led1 led2 led3 led4 bl_rechts = ‚1‘ bl_links = ‚0‘ bremsen = ‚1‘ bl_rechts = ‚0‘ bremsen = ‚0‘ idle brms

13 Ermitteln der Zustandsübergänge
bl_links = ‚1‘ led1 led2 led4 bl_rechts = ‚1‘ bl_links = ‚0‘ bl_rechts = ‚0‘ bremsen = ‚0‘ bremsen = ‚1‘ idle brms

14 Ermitteln der Zustandsübergänge
bl_links = ‚1‘ bl_rechts = ‚1‘ led1 led2 led3 led4 bl_links = ‚0‘ bl_rechts = ‚0‘ bremsen = ‚0‘ bremsen = ‚1‘ idle brms

15 Ermitteln der Zustandsübergänge
bl_rechts = ‚1‘ bl_links = ‚1‘ led1 led2 led3 led4 bl_links = ‚0‘ bl_rechts = ‚0‘ bremsen = ‚0‘ bremsen = ‚1‘ idle brms

16 Ermitteln der Zustandsübergänge
led1 led2 led3 led4 bl_links = ‚0‘ bl_rechts = ‚1‘ bl_rechts = ‚0‘ bremsen = ‚0‘ bl_links = ‚1‘ idle brms bremsen = ‚1‘

17 Zustandsübergangsdiagramm des Knightriders
Blinker rechts=1 Blinker links = 1 led1 led2 led3 led4 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Bremsen=1 Blinker links=0 blinker rechts=0 bremesen=0 idle brms Reset Bremsen=1

18 Zustandscodierung Zustand Q2 Q1 Q0 idle led1 1 led2 led3 led4 brms
led1 1 led2 led3 led4 brms undef1 undef2

19 Zustandsübergangsdiagramm des Knightriders
Blinker rechts=1 Blinker links = 1 led1 led2 led3 led4 100 110 011 001 Blinker rechts=1 Blinker rechts=1 Blinker rechts=1 Blinker links=0 blinker rechts=0 bremesen=0 Bremsen=1 idle brms Reset 000 111 Bremsen=1

20 Zustandsübergangsdiagramm des Knightriders
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

21 Prozesse des Automaten
Aktueller Zustand n Folge Zustand Led_out(1) bl_links Steuer- logik D Q Led_out(2) bl_rechts bremse Led_out(3) !Q Led_out(4) reset clk Ausgangslogik moore_folge Eingänge 4 Steuer Logik Prozess Getakter Prozess clk Ausgangs Prozess reset 4 moore_gegenwart

22 Getakteter Process des Knightrider
clocked: PROCESS (clk, reset) BEGIN IF reset = '1' THEN aktueller_zustand <= "000"; ELSIF clk'EVENT AND clk = '1' THEN aktueller_zustand <= folge_zustand; END IF; END PROCESS clocked;

23 Steuer Logik des Knightrider Automaten
knight_logic: PROCESS (aktueller_zustand, bl_links, bl_rechts, bremse) BEGIN CASE aktueller_zustand IS WHEN state_idle => IF bremse = '1' THEN folge_zustand <= state_bremsen; ELSIF bl_links = '1' THEN folge_zustand <= state_led4; ELSIF bl_rechts = '1‘ THEN folge_zustand <= state_led1; ELSE folge_zustand <= state_idle; END IF; WHEN state_led1 => IF bremse = '1‚ THEN folge_zustand <= state_bremsen; ELSIF bl_links = '1' THEN folge_zustand <= state_led4; ELSIF bl_rechts = '1‚ THEN folge_zustand <= state_led2; ELSE folge_zustand <= state_idle; END IF; . . WHEN OTHERS => folge_zustand <= state_idle; END CASE; END PROCESS knight_logic;

24 Ausgangslogik des Knightrider Automaten
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

25 Ausgangslogik des Knightriders
knight_ausg: PROCESS (aktueller_zustand) BEGIN 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 state_bremsen => led_out <= "1111"; WHEN OTHERS => led_out <= "0000"; END CASE; END PROCESS knight_ausg;


Herunterladen ppt "VHDL 7: Automaten 1."

Ähnliche Präsentationen


Google-Anzeigen