Vhdl 8 automaten 2
Download
1 / 37

VHDL 8: Automaten 2 - PowerPoint PPT Presentation


  • 227 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' VHDL 8: Automaten 2' - jera


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Bung 7 aufgabe 3
Ü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
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


Knightrider als moore automat
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


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


Mealy automat allgemein
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


Zustandscodierung

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


Zustands berg nge m ssen neu definiert werden

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


Knightrider als mealyautomat mit 2 ff
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




Prozesse beim mealy automaten
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


Ausgangslogik des knightriders nach mealy
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;


Verz gerungszeiten beim mealy automaten

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



Bung 7 aufgabe 2

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



Zustandscodierung des knightriders als medvedev automat

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


Knightrider als moore automat1
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


Glitches
Glitches

N

5

6

7

CLK

Q0

1

Q1

Q2

Q3

~ 0.5 nS

seven

„Glitch“

Glitch = kurzzeitiger Signaleinbruch


Knightrider als medvedev automat

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


Medvedev automat1
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



One hot kodierung option im synthesizer

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


Einfachere ansteuerlogik bei one hot kodierung

D

Q

!Q

Einfachere Ansteuerlogik bei One Hot Kodierung

Q0

D

Q

Q1

E

!Q

D

Q

Q2

!Q

Takt



Zustandskodierung des knightriders

100

110

011

001

led1

led2

led3

led4

000

111

idle

brms

Zustandskodierung des Knightriders


1 zustandskodierung mit konstanten
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



2 zustandskodierung durch typendefinierung

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



Vorteile der typendefinierung
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


3 enumerierte zustandskodierung
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



Eing nge sind nicht synchronisiert
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


Verh ltnis von steuersignalen und takt
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.


Abhilfe synchronisierschaltung

D

D

Q

Q

!Q

!Q

Abhilfe: Synchronisierschaltung

Automat

A

Eingang

CLK B(z.B. 1 MHz)


ad