School of Engineering VHDL 7: Automaten 1. School of Engineering Blockdiagramm:...
-
Upload
susanne-kasinger -
Category
Documents
-
view
108 -
download
2
Transcript of School of Engineering VHDL 7: Automaten 1. School of Engineering Blockdiagramm:...
School ofEngineering
VHDL 7: Automaten 1
School ofEngineeringBlockdiagramm:
Vorwärts/Rückwärtszähler
QD
!Q
QD
!Q
QD
!Q
Q0
Q1
Q2
Takt
E
School ofEngineeringMoore Automat
Q
!Q
AnsteuerLogik
n = Anzahlder FFs
n
Takt
nAusgangs-
Logik
Et
Et = Eingangsvektor
Zt = Zustandssvektor zum gegenwärtigen Zeitpunkt t
Zt+1 = Zustandssvektor nach dem Taktimpuls
Zt
Zt+1 = (Zt, Et)At = (Zt)
m
Gegenwärtiger(Aktueller) Zustand
Folge Zustand
School ofEngineering
L1 L2 L3 L4
Blinker links Blinker rechts
Bremse
Beispiel: Knightrider FSM
School ofEngineering
L1 L2 L3 L4
Blinker links Blinker rechts
Bremse
Beispiel: Knightrider FSM
School ofEngineering
L1 L2 L3 L4
Blinker links Blinker rechts
Bremse
Beispiel: Knightrider FSM
School ofEngineering
L1 L2 L3 L4
Blinker links Blinker rechts
Bremse
Beispiel: Knightrider FSM
School ofEngineering
Knightrider Moore
aktueller_zustand
clk
bl_links
bl_rechts
bremse
Steuer-logik
Ausgangslogik
QD
!Q
n
folge_zustand
Led_out(1)
Led_out(2)
Led_out(3)
Led_out(4)
reset
School ofEngineering
Eingänge und Ausgänge
bl_links
bl_rechts
bremse
reset
KnightriderAutomat
clk
Led_out(1)
Led_out(2)
Led_out(3)
Led_out(4)
School ofEngineering
led2 led3
brms
led4
idle
led1
Definition der unterscheidbarenZustände
School ofEngineering
led2 led3
brms
led4
idle
led1
bl_rechts = ‚1‘
bl_links = ‚1‘
bremsen = ‚1‘
bl_rechts = ‚0‘bl_links = ‚0‘
bremsen = ‚0‘
Ermitteln der Zustandsübergänge
School ofEngineering
led2 led3
brms
led4
idle
led1
bl_rechts = ‚1‘
bl_links = ‚1‘
bremsen = ‚1‘bl_rechts = ‚0‘bl_links = ‚0‘
bremsen = ‚0‘
Ermitteln der Zustandsübergänge
School ofEngineering
led2
brms
led4
idle
led1
bl_rechts = ‚1‘
bl_links = ‚1‘
bremsen = ‚1‘bl_rechts = ‚0‘bl_links = ‚0‘
bremsen = ‚0‘
Ermitteln der Zustandsübergänge
School ofEngineering
led2 led3
brms
led4
idle
led1
bl_rechts = ‚1‘bl_links = ‚1‘
bremsen = ‚1‘
bl_rechts = ‚0‘bl_links = ‚0‘
bremsen = ‚0‘
Ermitteln der Zustandsübergänge
School ofEngineering
led2 led3
brms
led4
idle
led1
bl_rechts = ‚1‘ bl_links = ‚1‘
bremsen = ‚1‘
bl_rechts = ‚0‘bl_links = ‚0‘
bremsen = ‚0‘
Ermitteln der Zustandsübergänge
School ofEngineering
led2 led3
brms
led4
idle
led1
bl_rechts = ‚1‘
bl_links = ‚1‘
bremsen = ‚1‘
bl_rechts = ‚0‘bl_links = ‚0‘
bremsen = ‚0‘
Ermitteln der Zustandsübergänge
School ofEngineering
led2 led3
brms
led4
idle
led1
Blinker links=0blinker rechts=0
bremesen=0
Blinker links=0blinker rechts=0
bremesen=0
Blinker rechts=1Blinker rechts=1 Blinker rechts=1
Blinker rechts=1
Reset
Blinker links = 1
Blinker links = 1Blinker links = 1Blinker links = 1
Blinker links = 1
Bremsen=1 Bremsen=1
Bremsen=1
Zustandsübergangsdiagramm des Knightriders
School ofEngineering
Zustand Q2 Q1 Q0
idle 0 0 0
led1 1 0 0
led2 1 1 0
led3 0 1 1
led4 0 0 1
brms 1 1 1
undef1 1 0 1
undef2 0 1 0
Zustandscodierung
School ofEngineering
led2 led3
brms
led4
idle
led1
Blinker links=0blinker rechts=0
bremesen=0
Blinker links=0blinker rechts=0
bremesen=0
Blinker rechts=1Blinker rechts=1 Blinker rechts=1
Blinker rechts=1
Reset
Blinker links = 1
Blinker links = 1Blinker links = 1Blinker links = 1
Blinker links = 1
Bremsen=1 Bremsen=1
Bremsen=1000 111
100 110 011 001
Zustandsübergangsdiagramm des Knightriders
School ofEngineering
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
Zustandsübergangsdiagramm des Knightriders
School ofEngineering
Aktueller Zustand
clk
bl_links
bl_rechtsbremse
Steuer-logik
Ausgangslogik
QD
!Q
nFolge
ZustandLed_out(1)
Led_out(2)
Led_out(3)
Led_out(4)reset
SteuerLogik
Prozess
GetakterProzess
moore_gegenwart
moore_folge
clk
reset
4
4
AusgangsProzess
Eingänge
Prozesse des Automaten
School ofEngineering
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;
Getakteter Process des Knightrider
School ofEngineering
knight_logic: PROCESS (aktueller_zustand, bl_links, bl_rechts, bremse) BEGINCASE aktueller_zustand ISWHEN 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;
Steuer Logik des Knightrider Automaten
School ofEngineering
aktueller_zustand
clk
bl_links
bl_rechts
bremse
Steuer-logik
Ausgangslogik
QD
!Q
n
folge_zustand
Led_out(1)
Led_out(2)
Led_out(3)
Led_out(4)
reset
Ausgangslogik des Knightrider Automaten
25
School ofEngineering
knight_ausg: PROCESS (aktueller_zustand)
BEGINCASE 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;
Ausgangslogik des Knightriders