54
1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale zum Testen eines Modells bereitstellen 3) Zeitmodelle in VHDL Nachbildung des Zeitverhaltens der modellierten Hardware 4) Modellierung von Zustandsautomaten in VHDL Systematische Beschreibung digitaler Systeme

Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

Embed Size (px)

Citation preview

Page 1: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

1

Gliederung dieser Einführung in VHDL

1) Formaler Aufbau von VHDL-Modellen

2) Testumgebungen

VHDL-Modelle, die Eingangssignale zum Testen eines

Modells bereitstellen

3) Zeitmodelle in VHDL

Nachbildung des Zeitverhaltens der modellierten Hardware

4) Modellierung von Zustandsautomaten in VHDL

Systematische Beschreibung digitaler Systeme

Page 2: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

2

Zeitmodelle in VHDL

Zeitmodelle in VHDL

Page 3: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

3

Signal-Zuweisungen stellen neue Werte für Signale bereit:

SUM <= A + B;

Diese Zuweisung beschreibt die Funktion eines Addierers.

Der Ausdruck auf der rechten Seite wird ausgewertet,sein Datentyp muss dem des Signals SUM entsprechen.

Der Output eines Hardware-Bausteins ändert sich nicht unmittelbar,

wenn sich ein Einganssignal ändert, sein Modell muss also eine

Verzögerung (ein Delay) enthalten:

CARRY <= A and B after 7 ns;

Kapazitäten und Induktivitäten bewirken in einer Analog-Schaltung

Einschwingvorgänge, die im digitalen Modell abstrahierend in einem

konzentrierten Delay zusammengefasst werden.

Signal-Zuweisungen

Page 4: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

4

Eine Waveform beschreibt eine zeitlich aufsteigende Folge von

Werten (alle Zeiten beziehen sich auf die aktuelle Simulationszeit):

CLK <= '1' after PulsWeite, '0' after 2*PulsWeite;

Zusätzlich kann ein Delay-Mechanismus angegeben werden; voreingestellt ist der inertial-Mechanismus.

SUM <= transport A + B after 12 ns;

Waveforms & Delay-Mechanismen

Page 5: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

5

Es gibt formal zwei (gleichwertige) Arten Prozesse zu beschreiben:

Prozesse ohne sensitivity list (mit wait-Anweisungen):

• Anweisungen im process body werden sequentiell ausgeführt. Nach der letzten Anweisung wird wieder mit der ersten fortgefahren ohne Fortschaltung der Simulationszeit.

• Eine wait-Anweisung deaktiviert einen process.

• Damit keine Endlosschleifen entstehen, muß mindestens eine wait-Anweisung vorhanden sein.

Prozesse mit sensitivity list (ohne wait-Anweisungen):

• Die sensitivity list ist eine Liste von Signalnamen. Der processwird aktiviert, wenn sich eines dieser Signale ändert.

• Der process verhält sich so, als ob vor der end-process-Anweisung eine wait-on-signal-Anweisung stünde.

• Der process darf keine wait-Anweisungen enthalten.

Aktivierung und Deaktivierung von Prozessen

Page 6: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

6

Wait-Anweisungen

Durch wait-Anweisungen werden Prozesse suspendiert.

Es gibt vier Varianten:

wait on CLK_SIGNAL, ENABLE; sensitivity clause

Der Prozess wird wieder aufgenommen, wenn bei einem der genannten Signale eine Wertänderung (ein Event) auftritt.

wait until CLOCK='1'; condition clause

Der Prozess wird wieder aufgenommen, sobald der Boolesche Ausdruck wahr wird.

wait for 1 ms; time-out clause

wait for 2*TaktPeriode;

Der Prozess wird nach Ablauf der angegebenen Simulationszeit wieder aufgenommen.

wait;

Der Prozess wird genau einmal während der Initialisierung durchgeführt und bleibt dann deaktiviert.

Page 7: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

7

signal CLK: bit:='0';

constant PulsWeite: time:=20 ns; -- physical type

ClockGen1: process(CLK)

begin

if CLK='0' then

CLK <= '1' after PulsWeite,

'0' after 2*PulsWeite; -- waveform

end if;

end process ClockGen1;

Beispiel: Clock-Generator (1)

0

1

20 40 60 80 1000 ns

1 2 4 5 63Aktivierung

Page 8: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

8

signal CLK: bit:='0';

constant PulsWeite:time:=20 ns; -- physical type

ClockGen2a: process

begin

CLK <= '1' after PulsWeite,

'0' after 2*PulsWeite;

wait until CLK='0'; -- d.h. warten bis sich

-- CLK auf '0' ändert

end process ClockGen2a;

ClockGen2b: process

begin

CLK <= '1' after PulsWeite,

'0' after 2*PulsWeite;

wait for 2*PulsWeite; -- d.h. warten für

-- diese Zeitspanne

end process ClockGen2b;

Beispiel: Clock-Generator (2)

Page 9: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

9

signal CLK: bit:='0';

constant PulsWeite:time:=20 ns; -- physical type

ClockGen3: process

begin

CLK <= '0';

wait for PulsWeite;

CLK <= '1';

wait for PulsWeite;

end process ClockGen3;

Beispiel: Clock-Generator (3)

0

1

20 40 60 80 1000 ns

Page 10: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

10

entity MUX2 is

port(A, B, SEL: in bit;

Z: out bit);

end MUX2;

architecture behavior_1 of MUX2 is

constant prop_delay: time := 2 ns;

begin

MUX2_V1: process(A, B, SEL)

begin -- Änderungen von A, B und SEL können zu

-- Wertänderungen am Ausgang Z führen!

case SEL is

when '0' => Z <= A after prop_delay;

when '1' => Z <= B after prop_delay;

end case;

end process MUX2_V1;

end behavior_1;

Beispiel: 2fach-Multiplexer (1)

1

0A

B

Z

SEL

Page 11: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

11

architecture behavior_2 of MUX2 is

constant prop_delay: time := 2 ns;

begin

MUX2_V2: process

begin

case SEL is

when '0' =>

Z <= A after prop_delay;

wait on SEL, A;

-- Der Prozess wartet also nicht auf B,

-- wenn A selektiert ist!

when '1' =>

Z <= B after prop_delay;

wait on SEL, B;

-- Der Prozess wartet also nicht auf A

end case;

end process MUX2_V2;

end behavior_2;

Beispiel: 2fach-Multiplexer (2)

1

0A

B

Z

SEL

Page 12: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

12

entity MUX2 is

port(A, B, SEL: in bit;

Z: out bit);

end MUX2;

architecture behavior_3 of MUX2 is

constant prop_delay: time := 2 ns;

begin

Z <= A after prop_delay when SEL='0' else

B after prop_delay;

end behavior_3;

Beispiel: 2-Input-Multiplexer (3)

1

0A

B

Z

SEL

Page 13: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

13

Datenfluß-Modell des 2x4-Dekoders

entity DEK2X4 is

port (A, B, EN: in bit;

D: out bit_vector(0 to 3));

end DEK2X4;

architecture DATENFLUSS of DEK2X4 is

signal AQ, BQ: bit;

begin

-- 6 nebenläufige Signal-Zuweisungen

-- Reihenfolge der Anweisungen ist ohne Bedeutung

D(3) <= not(A and B and EN); -- (1)

D(0) <= not(AQ and BQ and EN); -- (2)

BQ <= not B; -- (3)

D(2) <= not(A and BQ and EN); -- (4)

AQ <= not A; -- (5)

D(1) <= not(AQ and B and EN); -- (6)

end DATENFLUSS;

Page 14: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

14

Datenfluß-Modell des 2x4-Dekoders

entity DEK2X4 is

port (A, B, EN: in bit;

D: out bit_vector(0 to 3));

end DEK2X4;

architecture DATENFLUSS of DEK2X4 is

signal AQ, BQ: bit;

begin

-- 6 nebenläufige Signal-Zuweisungen

-- Wertänderung (Event) am Eingang B angenommen

D(3) <= not(A and B and EN); -- (1)

D(0) <= not(AQ and BQ and EN); -- (2)

BQ <= not B; -- (3)

D(2) <= not(A and BQ and EN); -- (4)

AQ <= not A; -- (5)

D(1) <= not(AQ and B and EN); -- (6)

end DATENFLUSS;

Page 15: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

15

Datenfluß-Modell des 2x4-Dekoders

entity DEK2X4 is

port (A, B, EN: in bit;

D: out bit_vector(0 to 3));

end DEK2X4;

architecture DATENFLUSS of DEK2X4 is

signal AQ, BQ: bit;

begin

-- 6 nebenläufige Signal-Zuweisungen

-- Events an den Signalen D(3), BQ, D(1)

D(3) <= not(A and B and EN); -- (1)

D(0) <= not(AQ and BQ and EN); -- (2)

BQ <= not B; -- (3)

D(2) <= not(A and BQ and EN); -- (4)

AQ <= not A; -- (5)

D(1) <= not(AQ and B and EN); -- (6)

end DATENFLUSS;

Page 16: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

16

Simulationsablauf beim 2x4-Dekoder

Zeit-

punkt

Events Aktionen

T Eingang B Triggern der Anweisungen (1), (3) und (6),

Auswerten deren rechter Seiten,

Einplanen der Wertzuweisungen an

die Signale D(3), BQ, D(1)

T1>T D(3),BQ,D(1) Wertzuweisung an

die Signale D(3), BQ, D(1),

Triggern der Anweisungen (2) und (4),

Auswerten deren rechter Seiten,

Einplanen der Wertzuweisungen an

die Signale D(0), D(2)

T2>T1D(0), D(2) Wertzuweisung an D(0), D(2)

Page 17: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

17

Schaltungsentwürfe müssen geprüft (validiert) werden,

um möglichst alle Entwurfsfehler zu beseitigen,

bevor mit der teuren Produktion der Schaltung begonnen wird.

Schaltungssimulation bedeutet, daß für einen Satz von Eingangs-

signalen (Stimuli) über ein Zeitintervall bestimmte Schaltungseigen-

schaften bestimmt werden und mit den erwarteten Werten verglichen

werden.

Schaltungsverifikation ist eine formale Methode, um zwei

Schaltungsmodelle auf ihre Konsistenz (Funktionsgleichheit) zu

untersuchen oder sie bezüglich bestimmter Eigenschaften (z.B.

Verklemmungen) zu überprüfen.

Schaltungsanalyse: Simulation & Verifikation

Page 18: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

18

Damit auch sehr große Schaltungen simuliert werden können,

müssen Simulatoren sehr effizient arbeiten.

Für digitale Schaltungen wird dies durch ereignisgesteuerte

Simulation (event-driven simulation) erreicht.

Sie beruht darauf, daß (im Gegensatz zur analogen Simulation)

eine Schaltungskomponente nur dann ausgewertet wird,

wenn eine Signalwertänderung an einem (oder auch mehreren)

ihrer Eingänge auftritt.

Wie wird nun ein VHDL-Programm interpretiert,

so daß die Ergebnisse der Simulation möglichst genau mit den

Signalverläufen des Hardware-Bausteins übereinstimmen?

Ereignisgesteuerte Simulation

Page 19: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

19

Der Begriff Simulationszeit bezieht sich auf die Zeit, mit welcher der modellierte Hardware-Baustein arbeitet. Bei der Simulation wird diese Zeit in Form von Zeitwerten mitgeführt.

Diese unterscheidet sich von der Ausführungszeit des VHDL-Modells auf dem Simulationsrechner.

Durch eine Signalzuweisung wird eine Transaktion zur späteren Ausführung eingeplant (scheduled transaction). Eine Transaktion ist ein Wertepaar (Neuer_Signalwert, Simulationszeit).

Wenn zur Simulationszeit der Transaktion der neue Signalwert vom bisherigen verschieden ist, spricht man vom Auftreten eines Events (Wertänderung).

Prozesse reagieren auf Events, nicht auf Transaktionen!

Transaktionen & Events

Page 20: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

20

Ein Treiber (driver) ist eine Datenquelle für ein Signal, die Werte für zukünftige Zuweisungen bereithält. Ein Prozess definiert einen Treiber für einen Signalnamen genau dann, wenn er mindestens eine Zuweisung für das Signal enthält.

Der Treiber eines Signals ist eine zeitlich aufsteigend geordnete Liste aller für dieses Signal eingeplanten Transaktionen, d.h. von Wertepaaren (Signalwert, Simulationszeit) = (Wi,Ti).

Jeder Treiber enthält zumindest einen Eintrag, den aktuellen Signalwert (W0,T0), anfangs den initialisierten Wert.

(W0,T0), (W1,T1), (W2,T2), (W3,T3), ...

Grundsätzlich ist pro Signal nur ein Treiber erlaubt. Bei mehreren Treibern (z.B. Busse, Wired-OR) muß eine resolution functionangegeben werden, die den resultierenden Signalwert definiert.

Signal-Treiber

W1

T1

W2

T2

W3

T3

Page 21: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

21

Ereignisgesteuerte Simulation (event-driven simulation) beruht darauf, daß eine Schaltungskomponente nur dann ausgewertet wird, wenn eine Signalwertänderung an einem (oder auch mehreren) ihrer Eingänge auftritt. Dies wird mit einem Simulationszyklus realisiert:

Initialisierungsphase

Allen Variablen und Signalen wird ihr Initialwert zugewiesen.

Die Simulationszeit wird auf 0 fs gesetzt.

Alle Prozesse werden aktiviert, ihre Anweisungen ausgeführtund bei einer wait-Anweisung wieder suspendiert.

Es folgt

Simulationszyklus (1)

Signal-Update-Phase Prozessausführungsphase

Page 22: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

22

Signal-Update-Phase

- Fortschalten der Simulations-

zeit zur nächsten Transaktion

(oder zum nächsten Prozess-

Timeout)

- Ausführen aller für

den aktuellen Zeitpunkt

vorliegenden Transaktionen.

Prozessausführungsphase

- Prozesse, für die

Signalwertänderungen

(Events) vorliegen, werden

wieder aufgenommen.

Mögliche Folge:

Neue Transaktionen

zum gleichen oder einem

späteren Zeitpunkt

Simulationszyklus (2)

Initialisierungsphase

Page 23: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

23

Die AnweisungDATA <= X"00" after DELAY;

werde zur Simulationszeit T ausgeführt.

Für das Signal DATA wird eine Transaktion des hexadezimalen

Wertes X"00" zur Simulationszeit T+DELAY eingeplant.

Der Wert des Signals DATA wird jedoch zum Zeitpunkt T noch nicht

geändert. Alle aktiven Prozesse werden fortgeführt.

Erst wenn alle Prozesse suspendiert sind, wird der nächste

Simulationszyklus gestartet und die Simulationszeit fortgeschaltet.

Wenn die Simulationszeit T+DELAY erreicht ist, wird dem Signal

DATA der eingeplante Wert X"00" zugewiesen und alle auf DATA

sensitiven Prozesse gestartet.

Simulation einer Signalzuweisung

Page 24: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

24

Signalverzögerungszeiten können in einer Signalzuweisung optional angegeben werden. Falls eine Verzögerungszeit nicht explizit angegeben ist, werden 0 fs angenommen.

Da bei der Ausführung einer Zuweisung zunächst nur eine Transaktion für das Signal eingeplant wird, also auch bei einer Verzögerung von 0 fs keine sofortige Änderung des Signalwerts erfolgt, sieht der Prozess eine Wertänderung erst bei seinernächsten Ausführung (dem nächsten Simulationszyklus).

Auch bei einer Verzögerung von 0 fs wird ein neuer Simulations-zyklus durchlaufen, die Simulationszeit bleibt aber gleich; man spricht von einer Delta-Verzögerung (infinitesimal kleiner Zeitschritt, delta delay).

Das Konzept der Delta-Verzögerungen stellt die Kausalität der Anweisungen sicher, so dass bereits eine Simulation möglich ist, wenn noch keine Verzögerungszeiten bekannt sind.

Delta-Verzögerungen

Page 25: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

25

library ieee;

use ieee.std_logic_1164;

entity ANDOR is

port (A,B,C: in std_ulogic;

CLK: in std_ulogic;

Z: out std_ulogic);

end ANDOR;

Beispiel: Erzeugen (flankengesteuerter) FlipFlops

architecture AAO1 of ANDOR is

signal P: std_ulogic;

begin

AOprocess: process (CLK)

begin

if rising_edge(CLK) then

P <= A and B;

Z <= P or C;

end if;

end process;

end AAO1;

A

B

Z

CLK

ANDOR

1

OR

&

AND

C D Q

Qq

D Q

Qq

P

Page 26: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

26

library ieee;

use ieee.std_logic_1164;

entity ANDOR is

port (A,B,C: in std_ulogic;

CLK: in std_ulogic;

Z: out std_ulogic);

end ANDOR;

Beispiel: Erzeugen (flankengesteuerter) FlipFlops

architecture AAO2 of ANDOR is

begin

AOprocess: process (CLK)

variable P: std_ulogic;

begin

if rising_edge(CLK) then

P := A and B;

Z <= P or C;

end if;

end process;

end AAO2;

A

B

Z

CLK

ANDOR

1

OR

&

AND

C D Q

Qq

P

Page 27: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

27

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A)

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns

A

B

C

Page 28: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

28

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A)

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns

A 0

B 0

C 0

Page 29: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

29

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A) –- Nicht aktiviert!

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns 0 ns +

A 0 0

B 0 0

C 0 0

Page 30: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

30

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A)

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns 0 ns + 3 ns

A 0 0 1

B 0 0 0

C 0 0 0

Page 31: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

31

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A) –- Nicht aktiviert!

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns 0 ns + 3 ns 3 ns +

A 0 0 1 1

B 0 0 0 1

C 0 0 0 0

Page 32: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

32

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A)

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns 0 ns + 3 ns 3 ns + 7 ns

A 0 0 1 1 2

B 0 0 0 1 1

C 0 0 0 0 1

Page 33: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

33

architecture TestArch of TestEntity is

signal A, B: integer := 0;

begin

A <= 1 after 3 ns, 2 after 7 ns;

TestProcess: process(A)

variable C: integer := -1;

begin

B <= A; -- Signalzuweisung (eingeplant!)

C := B; -- Variablenzuweisung (sofort!)

end process TestProcess;

end TestArch;

Simulationszyklus – Beispiel

0 ns 0 ns + 3 ns 3 ns + 7 ns 7 ns +

A 0 0 1 1 2 2

B 0 0 0 1 1 2

C 0 0 0 0 1 1

Page 34: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

34

Modellierung der Signallaufzeit eines idealen Bauelements mit

unbegrenzter Bandbreite, kürzeste Impulse werden übertragen.

Signaltreiber: (W0,T0), (W1,T1), (W2,T2), ..., (Wi,Ti), ..., (Wk,Tk)

Regel für das Einfügen einer neuen Transaktion (Wn,Tn):

Alle Transaktionen (Wi,Ti) mit Tn Ti werden gelöscht.

Die neue Transaktion (Wn,Tn) wird am Ende der Liste angefügt.

Einfluß hat nur die Verzögerung, nicht der Signalwert.

Wie wirkt das Transport-Delay auf Treiber?

Page 35: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

35

Beispiel: Ideale Leitung

signal LineIn, LineOut: bit := '0';

LineIn <= '1' after 20 ps, '0' after 50 ps;

TransmissionLine: process(LineIn)

begin

LineOut <= transport LineIn after 50 ps;

end process TransmissionLine;

80 1200 ps20 40 10060

1

0LineIn

1

0LineOut

'1'

70

'1'

70

'0'

100

'0'

100

Treiber fürLineOut

'1'

70

'0'

100

Page 36: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

36

Beispiel: Unsymmetrische Verzögerung

signal A, Z: bit := '0';

A <= '1' after 20 ps, '0' after 40 ps;

AsymDelay: process(A)

begin

if A='1' then

Z <= transport A after 80 ps;

else –- A='0'

Z <= transport A after 50 ps;

end if;

end process AsymDelay;

1

0Z

80 1200 ps20 40 10060

1

0A

20 ps

'1'

100

'0'

90

'1'

100

Kein

Event!Treiberfür Z

Page 37: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

37

Modellierung realer, d.h. speichernder (träger, englisch inertial) Bauelemente mit endlicher Übertragungsbandbreite.

Inertial Delay ist die Voreinstellung.

Signaltreiber: (W0,T0), (W1,T1), (W2,T2), ..., (Wi,Ti), ..., (Wk,Tk)

Regel für das Einfügen einer neuen Transaktion (Wn,Tn):

Alle Transaktionen (Wi,Ti) mit Tn Ti werden gelöscht.

Die neue Transaktion (Wn,Tn) wird am Ende der Liste angefügt.

Im Intervall T0 Ti Tn gilt: Eine ununterbrochene Folge von Transaktionen (Wi,Ti), ..., (Wn,Tn) mit Wi = Wn bleibt erhalten, alle anderen Transaktionen werden gelöscht.

Verzögerung und Signalwert beeinflussen das Verhalten.

Wie wirkt das Inertial Delay auf Treiber?

Page 38: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

38

Beispiel: Inverter mit Verzögerung

signal A: bit := '0';

signal Y: bit := '1';

A <= '1' after 1 ns, '0' after 6 ns, '1' after 8 ns;

INV: process(A)

begin

Y <= not A after 3 ns; -- inertial voreingestellt

end process INV;

8 120 ns2 4 106

1

0A

2 ns

Page 39: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

39

Beispiel: Inverter mit Verzögerung

signal A: bit := '0';

signal Y: bit := '1';

A <= '1' after 1 ns, '0' after 6 ns, '1' after 8 ns;

INV: process(A)

begin

Y <= not A after 3 ns; -- inertial voreingestellt

end process INV;

8 120 ns2 4 106

1

0Y

1

0A

2 ns

'0'

4

'1'

9

'1'

9

'0'

11

Treiberfür Y

'0'

4

'0'

11

Kein

Event!

Page 40: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

40

library IEEE; use IEEE.std_logic_1164.all;entity And2 is

port(A, B: in std_logic; Y: out std_logic);

end And2;

architecture And2_with_delay of And2 issignal AndOut: std_logic;

beginAnd2_gate: process(A, B) –- idealisiertes UND-Gatter

beginAndOut <= A and B;

end process And2_gate;

And2_delay: process(AndOut)begin –- inertial delay ist voreingestellt

if AndOut='1' thenY <= '1' after 1.5 ns;

elseif AndOut='0' thenY <= '0' after 1.2 ns;

elseY <= 'X' after 0.5 ns;

end if;end process And2_delay;

end And2_with_delay;

Beispiel: 2-Input-UND-Gatter

delay

Page 41: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

41

Beispiel: 2-Input-UND-Gatter – Signalverläufe

0

4 6 80 ns1 2 5 73

1

0A

1

0B

Page 42: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

42

Beispiel: 2-Input-UND-Gatter – Signalverläufe

0

1

0

1

uninit.

uninitialized

4 6 80 ns1 2 5 73

1

0A

1

0B

AndOut

Y

'0'

2,2

'0'

2,2

'1'

3,5

'1'

3,5

'0'

4,2

'0'

4,2

'1'

7,5

Treiberfür Y

'1'

7,5

1 ns

1 ns

Page 43: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

43

Zustandsautomaten

Zustandsautomaten

Page 44: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

44

(Endliche) Zustandsautomaten

• Englisch "finite state machine" oder abgekürzt FSM

• Systematische Grundlage für die Beschreibung und den Entwurf

digitaler Systeme

• Erleichtern die Realisierung zyklischer Funktionsabläufe

– Steuern von Logikschaltungen

– Synchronisation mehrerer Teilsysteme

• Zustandsautomaten sind synchrone Schaltwerke, d.h. alle

Funktionen sind an ein periodisches Taktsignal gebunden

• Zustandsautomaten sind sequentiell arbeitende

Logikschaltungen, die gesteuert durch ein periodisches

Taktsignal eine Folge von Zuständen durchlaufen.

• Grundstrukturen, Automatentypen, Automatenvarianten

– Moore-Automat

– Mealy-Automat

Page 45: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

45

Zustandsautomaten (Moore-Typ)

Die Ausgangssignale des Moore-Automaten sind nur eine Funktion

des aktuellen Automatenzustands, nicht der Eingangssignale.

E Eingangssignale A Ausgangssignale

Z Automatenzustände Z+ Folgezustände

Übergangs-

schaltnetz

Zustands-

speicher

Ausgangs-

schaltnetzE Z+

A

Z

enable reset

clock

Page 46: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

46

Zustandsautomaten (Mealy-Typ)

Die Ausgangssignale des Mealy-Automaten sind eine Funktion des

aktuellen Automatenzustands und der Eingangssignale.

E Eingangssignale A Ausgangssignale

Z Automatenzustände Z+ Folgezustände

Übergangs-

schaltnetz

Zustands-

speicher Ausgangs-

schaltnetz

E Z+ AZ

enable reset

clock

Page 47: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

47

Zustandsautomaten (Eigenschaften)

Synchrones Schaltwerk mit drei Funktionsblöcken:

• Zustandsspeicher

– N synchron getaktete Flipflops

– 2N Zustände können binär codiert werden

– Jede (positive) Flanke des clock-Signals bewirkt, daß die

Folgezustände Z+ als aktuelle Zustände Z für eine Taktperiode

gespeichert werden

– Das enable-Signal gibt das Fortschalten von einem Zustand zum

nächsten frei

– Das reset-Signal dient der Initialisierung des Zustandsspeichers mit

einem vorgegebenen Bitmuster

• Übergangsschaltnetz

– Kombinatorische Logik

• Ausgangsschaltnetz

– Kombinatorische Logik

Page 48: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

48

FSM-Beispiel Impulsfolgeerkennung (1a)

• Erkennen dreier aufeinander folgender 2-Bit-Muster (01, 11, 10)

an den zwei Eingängen

• Erfolgreiche Erkennung mit dem Ausgangssignal 1 anzeigen

• Der 1-Pegel des Ausgangssignals soll eine Taktperiode anliegen

• Zustandsdiagramm (Moore):

Reset Z0

0

Z1

0

Z3

1

Z2

0

X0

X0

11

01

01 11

10

01 1100

01X0 11

Page 49: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

49

FSM-Beispiel Impulsfolgeerkennung (1b)

entity FSM_Moore is

port(Clock, Reset, Enable: in bit;

E: in bit_vector(1 downto 0);

A: out bit);

end FSM_Moore;

architecture Sequenz of FSM_Moore is

begin

type Zustaende is (Z0, Z1, Z2, Z3); -- Aufzaehlungstyp

signal Zustand, Fz: Zustaende;

begin

Zsp: process(Clock, Reset)

begin

if Reset='1' then Zustand <= Z0 after 20 ns;

elseif Clock='1' and Clock'event then

if Enable='1' then Zustand <= Fz after 20 ns;

end if;

end if;

end process Zsp;

...

Page 50: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

50

FSM-Beispiel Impulsfolgeerkennung (1c)

UeSn: process(E, Zustand)

begin

case Zustand is

when Z0 => if E="01" then Fz <= Z1 after 20 ns;

else Fz <= Z0 after 20 ns;

end if;

when Z1 => if E="11" then Fz <= Z2 after 20 ns;

elseif E="01" then Fz <= Z1 after 20 ns;

else Fz <= Z0 after 20 ns;

end if;

when Z2 => if E="10" then Fz <= Z3 after 20 ns;

elseif E="01" then Fz <= Z1 after 20 ns;

else Fz <= Z0 after 20 ns;

end if;

when Z3 => if E="01" then Fz <= Z1 after 20 ns;

else Fz <= Z0 after 20 ns;

end if;

end case;

end process UeSn;

Page 51: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

51

FSM-Beispiel Impulsfolgeerkennung (1d)

...

AusSn: process(Zustand)

begin

case Zustand is

when Z3 => A <= '1' after 20 ns;

when others => A <= '0' after 20 ns;

end case;

end process AusSn;

end Sequenz;

Page 52: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

52

FSM-Beispiel Impulsfolgeerkennung (2a)

• Erkennen dreier aufeinander folgender 2-Bit-Muster (01, 11, 10)

an den zwei Eingängen

• Anzeigen mit dem Ausgangssignal 1

• Der 1-Pegel des Ausgangssignals soll eine Taktperiode anliegen

• Zustandsdiagramm (Mealy):

ResetZ0 Z1

Z2

X0/0

01/0

01/0 11/011/0

00/0

01/0X0/0 11/0

10/1

Page 53: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

53

FSM-Beispiel Impulsfolgeerkennung (2b)

entity FSM_Mealy is

port(Clock, Reset, Enable: in bit;

E: in bit_vector(1 downto 0);

A: out bit);

end FSM_Mealy;

architecture Sequenz of FSM_Mealy is

begin

type Zustaende is (Z0, Z1, Z2); -- Aufzaehlungstyp

signal Zustand, Fz: Zustaende;

begin

Zsp: process(Clock, Reset)

begin

if Reset='1' then Zustand <= Z0 after 20 ns;

elseif Clock='1' and Clock'event then

if Enable='1' then Zustand <= Fz after 20 ns;

end if;

end if;

end process Zsp;

...

...

Page 54: Gliederung dieser Einführung in VHDL - eda.ei.tum.de · PDF file1 Gliederung dieser Einführung in VHDL 1) Formaler Aufbau von VHDL-Modellen 2) Testumgebungen VHDL-Modelle, die Eingangssignale

54

FSM-Beispiel Impulsfolgeerkennung (2c)

UeSn: process(E, Zustand)

begin

Fz <= Z0 after 20 ns;

case Zustand is

when Z0 => if E="01" then Fz <= Z1 after 20 ns;

end if;

when Z1 => if E="11" then Fz <= Z2 after 20 ns;

elseif E="01" then Fz <= Z1 after 20 ns;

end if;

when Z2 => if E="01" then Fz <= Z1 after 20 ns;

end if;

end case;

end process UeSn;

AusSn: process(E, Zustand)

begin

A <= '0' after 20 ns;

if (Zustand=Z2 and E="10") then A <= '1' after 20 ns;

end if;

end process AusSn;

end Sequenz;