einführung in eingebettete systeme - react.uni … · einführung in eingebettete systeme...

40
Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 [email protected] Prof. Bernd Finkbeiner, Ph.D. [email protected] 1

Upload: hoangque

Post on 18-Sep-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Einführung in

Eingebettete Systeme

Vorlesung 8 Bernd Finkbeiner 10/12/2014 [email protected]

Prof. Bernd Finkbeiner, Ph.D. [email protected]

1

Page 2: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Letzte Woche: Rückgekoppelte Schaltnetze

! Schaltnetz vs. Schaltwerk

2

Digitale Schaltung

Schaltnetz (kombinatorisch) Schaltwerk

Synchron (sequentiell)

Asynchron

Page 3: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Letzte Woche: Volladdierer

! si = xi XOR yi XOR ui ! ui+1 = (xi · yi) + ((xi + yi) · ui)

3[H. Liebig: Logischer Entwurf digitaler Systeme, 2006]

1.2 Boolesche Funktionen 29

Beispiel 1.16. Addition. Die Funktionen ui+1 und si aus Beispiel 1.13 sollendurch Blockbilder dargestellt werden, und zwar in denjenigen Strukturen, wie siedort durch die Gleichungen vorgegeben sind. Es entsteht Bild 1-7.

Aufgabe 1.8. Subtraktion. Beschreiben Sie in Analogie zur ziffernpaarweisen Addition die zif-fernpaarweise Subtraktion in allen hier gezeigten Darstellungsformen.

Aufgabe 1.9. Paritätsprüfung. Die Datenübertragung binär codierter Zeichen (8-Bit-Codewörter)von einem Sender zu einem Empfänger (in einem Rechner z.B. von der Peripherie zum Prozes-sor) wird oft dadurch überprüft, daß zu allen Wörtern auf der Senderseite ein sog. Paritätsbit hin-zugefügt wird, wodurch sich die Anzahl der Codewörter verdoppelt. Es entstehen zu gleichenTeilen gültige und ungültige Wörter, die auf der Empfängerseite auf ihre Gültigkeit überprüftwerden. – Beschreiben Sie die folgenden Funktionen durch Gleichungen und Blockbilder. (a) Eine erste boolesche Funktion (senderseitig) soll zu einem 8-Bit-Wort, einem Byte, den Wertdes Paritätsbits erzeugen, so daß die Quersumme der entstehenden 9-Bit-Wörter ungerade ist.Als Verknüpfung ist die Äquivalenz zu verwenden. (b) Eine zweite boolesche Funktion (empfängerseitig) soll „1“ liefern, wenn die Anzahl der Ein-sen, d.h. die Quersumme der 9-Bit-Wörter, gerade ist. Als Verknüpfung ist entweder die Äquiva-lenz oder die Antivalenz zu verwenden.

Ausblick. Wir haben eine Reihe äquivalenter Darstellungen einer Funktion vor-gestellt. Die Gleichungsdarstellung nahm dabei eine zentrale Rolle ein; von ihrausgehend haben wir die anderen Darstellungsformen entwickelt. Aber genau so,wie aus der Gleichung die Tabelle oder die Tafel ermittelt werden kann, ist esmöglich, aus einer Tabelle eine Tafel und weiter eine Gleichung und darausschließlich das Blockbild zu konstruieren. Das betrifft die Schaltungssyntheseund wird im Abschnitt 1.2.3 fortgeführt.

1.2.2 Systeme von Funktionen (Vektorfunktionen)

In 1.2.1 (auf S. 24) wurde eine Funktion allgemein durch

(33)

beschrieben. Zur bequemeren Schreibweise kürzen wir das „eindimensionaleFeld“

[x1 x2 x3 … xn]

Bild 1-7. Blockbilder für die Vollad-dierfunktion bzw. die Volladdier-schaltung; a Übertrag, b Summe.

uixi

siui+1

xi yi ui

a b

yi

y f x1 x2 x3 … xn, , , ,( )=

Page 4: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Letzte Woche: SR Flipflop

! Asynchron, pegelgesteuert

4

Q

Q

R

S

S R Operation (Q‘)

0 0 Zustand halten

1 0 Q setzen

0 1 Q zurücksetzen

1 1 undefiniert

Page 5: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Entwurfsebenen für digitale Hardware

! Systembeschreibung ! Registertransferebene ! Netzliste, Schaltplan ! Physisches Layout

5

VHDL, Verilog

r1 | r2

x

y�r1 = r2r1x _ r2r1x

�r2 = r2r1x _ r2r1x

�y = r2r1x

Page 6: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

10. VHDL

Ziel:

! Beschreibung und Simulation von digitaler Hardware mit der Hardwarebeschreibungssprache VHDL

Page 7: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

VHDL

! HDL = hardware description language ! VHDL = VHSIC hardware description language ! VHSIC = very high speed integrated circuit

! Initiiert durch US Department of Defense ! 1987 IEEE Standard 1076 ! Neue Versionen: 1993, 2000, 2002, 2008

! Standard in der (Europäischen) Industrie(daneben: Verilog)

! Erweiterung: VHDL-AMS, beinhaltet analoge Modellierung

7

Page 8: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Ziele

! Zwei Ziele: Simulation und Synthese ! Synthese: Übersetzung in eine

Implementierungstechnologie wie ASIC oder FPGA ! Nicht alle Konstrukte in VHDL sind synthetisierbar ! Modellierung auf verschiedenen Abstraktionsebenen

möglich ! Technologie-unabhängig

→ hohe Wiederverwendbarkeit ! Standard

→ Portabilität (verschiedene Synthese- und Analysewerkzeuge)

8

Page 9: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Struktur- und Verhaltensbeschreibungen

! Strukturbeschreibung: Aufbau einer Schaltung aus Komponenten

! Verhaltensbeschreibungen: welche datenverarbeitenden Prozesse realisiert eine Schaltung

! Typischerweise werden beim Hardwareentwurf Verhaltensbeschreibungen nach und nach durch Strukturbeschreibungen ersetzt.

9

Page 10: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Entities und Architectures

! In VHDL heißt jeder modellierte Baustein design entity ! Entities bestehen aus einer entity declaration und einer

oder mehrerer Architekturen.

Jede Architektur beschreibt ein Modell der Entity.Im Normalfall wird die zuletzt angegebene Architektur

verwendet.

10

Page 11: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Beispiel: Addierer - Entity declaration

! Entity declaration:

entity full_adder is port(a, b, carry_in: in Bit; -- input ports sum,carry_out: out Bit); -- output ports end full_adder;

11

Page 12: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Beispiel: Addierer - Architektur mit Verhaltensbeschreibung

architecture behavior of full_adder is begin sum <= (a xor b) xor carry_in after 10 Ns; carry_out <= (a and b) or (a and carry_in) or (b and carry_in) after 10 Ns; end behavior;

12

Page 13: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Beispiel: Addierer - Architektur mit Strukturbeschreibung

architecture structure of full_adder is component half_adder

port (in1,in2:in Bit; carry:out Bit; sum:out Bit); end component;

component or_gate port (in1, in2:in Bit; o:out Bit); end component; signal x, y, z: Bit; -- local signals begin -- port map section i1: half_adder port map (a, b, x, y); i2: half_adder port map (y, carry_in, z, sum); i3: or_gate port map (x, z, carry_out); end structure;

13

Page 14: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Beispiel: Addierer - Architektur mit Strukturbeschreibung

! Architekturen beschreiben Implementierungen von Entities.

! Für die Komponente half_adder brauchen wir wiederum ! eine entity Deklaration, z.B. entity half_adder port (in1,in2:in Bit; carry:out Bit; sum:out Bit); end half_adder;

! (Mindestens) eine Architektur • Diese Architektur kann wiederum Komponenten enthalten

! Architekturen und ihre Komponenten können eine Hierarchie beliebiger Tiefe beschreiben.

14

Page 15: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Struktur- und Verhaltensbeschreibungen

! Strukturbeschreibungen benutzen Instanzen von Komponenten.

! Verhaltensbeschreibungen definieren das Verhalten ohne die Struktur festzulegen.

! Mischformen sind möglich. ! Mischformen werden benötigt, zumindest für die

Basisfälle in der strukturellen Hierarchie.

! Strukturelle Hierarchie ist essentiell für die kompakte und übersichtliche Modellierung großer Systeme.

! Für die Beschreibung der VHDL-Semantik gehen wir aber davon aus, dass die Komponenten bereits instantiiert wurden und eine “flache” Verhaltensbeschreibung vorliegt.

15

Page 16: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozesse

! Verhaltensbeschreibungen bestehen aus einer Menge gleichzeitig ausgeführter Prozesse.

! Syntax: [label:] process[(sensitivity list)] declarations begin statements end process [label]

16

Page 17: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozesse – Beispiele (1)

architecture RTL of NANDXOR is begin

process begin

if (C='0') then D <= A nand B after 5 ns; else D <= A and B after 10 ns; end if; wait on A, B, C;

end process; end RTL;

17

Page 18: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozesse – Beispiele (2)

signal clk : std_logic;

clk_gen : process begin

clk <= 0; wait for 5 ns; clk <= 1; wait for 5 ns;

end process clk_gen;

18

Page 19: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozesse

! Prozesse haben keine Unterprozesse(keine Prozesshierarchie).

! Prozesse werden ausgeführt bis ein Wait-Befehl erreicht wird.

! Prozesse werden nach den Bedingungen des Wait-Befehls reaktiviert.

! Es gibt verschiedene Typen von Wait-Befehlen.

19

Page 20: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Wait-Befehle

Vier Typen von wait-Befehlen: ! wait on signal list;

! warte bis sich mindestens ein Signal in der Signalliste ändert; ! Beispiel: wait on a;

! wait until condition; ! warte bis die Bedingung condition wahr wird; ! Beispiel: wait until c='1';

! wait for duration; ! warte die angegebene Zeit ab; ! Beispiel: wait for 10 ns;

! wait; ! warte für immer

20

Page 21: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozesse - Sensitivity lists

! Sensitivity lists sind eine Abkürzung für einen wait on-Befehl am Ende der Prozessbeschreibung:

! process (x, y) begin prod <= x and y ; end process;

ist äquivalent zuprocess begin prod <= x and y ; wait on x,y; end process;

21

Page 22: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Signal Zuweisungen

! Signal-Zuweisungen ausserhalb von Prozessen sind implizite Prozesse:

a <= b and c after 10 ns

ist äquivalent zu

process(b, c) begin a <= b and c after 10 ns end

22

Page 23: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Konstanten, Signale und Variablen

! Konstanten

! der Wert einer Konstanten kann nicht geändert werden.

! Beispiele: constant PI : real := 3.1415;

constant DEFAULT : bit_vector(0 to 3) :=„1001“; constant PERIOD : time := 100 ns;

23

Page 24: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Konstanten, Signale und Variablen

! Variablen ! Variablen werden lokal in Prozessen (und Prozeduren/

Funktionen) deklariert und sind nur dort sichtbar. ! Signale

! verbinden Komponenten ! Signale können nicht in Prozessen deklariert werden,

sondern nur in Architekturen (ausserhalb von Prozessen).

! Syntax: ! variable_assignment ::= target := expression

• Example: Sum := 0

! signal_assignment ::= target <= [ delay_mechanism ] waveform_element

{ , waveform_element } ! waveform_element ::=

value_expression [ after time_expression ]

Beispiel:

Inpsig <= ´0´, ´1´after 5 ns, ´0´ after 10 ns, ´1´ after 20 ns; 24

Page 25: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Zuweisungen an Variablen und Signale! Zuweisungen an Variablen werden sequentiell und direkt nach

ihrem Auftreten ausgeführt. ! Zuweisungen an Signale werden nebenläufig durchgeführt, d.h. sie

werden (sequentiell) aufgesammelt bis der Prozess anhält und werden danach parallel ausgeführt.

signal a : std_logic := `0`; signal b : std_logic := `1`; … swap : process variable c : std_logic := `1`; variable d : std_logic := `0`; begin

a <= b; b <= a; c := d; d := c; wait on a, b;

end process swap;

25

Page 26: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Aufgabe: Halbaddierer

! Geben Sie eine Architektur mit einer Verhaltensbeschreibung für den Halbaddierer in VHDL. Der Halbaddierer soll der folgenden entity declaration entsprechen: entity half_adder is port( a, b: in Bit; carry, sum: out Bit);end half_adder;

26

Page 27: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Lösung: Halbaddierer

entity half_adder is port( a, b: in Bit; carry, sum: out Bit);end half_adder;

architecture behavior of half_adder is begin sum <= (a xor b) after 10 Ns; carry <= (a and b) after 10 Ns; end behavior;

27

Page 28: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Aufgabe: 4-Bit-Addierer

! Beschreiben Sie die Struktur eines 4-Bit-Addierers in VHDL. Dabei dürfen die Entities full_adder und half_adder benutzt werden.

entity adder_4bit is port(a3, a2, a1, a0, b3, b2, b1, b0: in Bit; c3, c2, c1, c0, d: out Bit); end adder_4bit; component half_adder port (in1,in2:in Bit; carry: out Bit; sum: out Bit); end component; component full_adder port (in1,in2,carry_in: in Bit; carry: out Bit; sum: out Bit); end component;

28

Page 29: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Lösung: 4-Bit-Addiererarchitecture structure of adder_4bit is component half_adder port(in1,in2: in Bit; carry: out Bit; sum: out Bit); end component; component full_adder port(in1,in2,carry_in: in Bit; carry: out Bit; sum: out Bit); end component; signal carry0,carry1,carry2,carry3: Bit; begin adder0: half_adder port map (a0,b0, carry0,c0); adder1: full_adder port map (a1,b1,carry0,carry1,c1); adder2: full_adder port map (a2,b2,carry1,carry2,c2); adder3: full_adder port map (a3,b3,carry2,carry3,c3); d <= carry3; end structure;

29

Page 30: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

VHDL Semantik

! „Discrete event driven simulation“

! Schrittweise Semantik wie in StateCharts: ! Berechnung ist eine Sequenz von Schritten ! Zeit schreitet nicht unbedingt zwischen zwei Schritten voran ! Ähnlich der Superstep Semantik der StateCharts

! Nebenläufige Zuweisungen an Signale wie Zuweisungen in StateCharts.

Ein Schritt besteht aus zwei Phasen.

30

Page 31: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Überblick

Initialisierung

Ende der Simulation

Zuweisung neuer Signalwerte

Aktualisierungder Zeit

Ausführungvon Prozessen

Reaktivierungvon Prozessen

31

Page 32: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Transaktionsliste und Prozessaktivierungsliste

! Transaktionsliste ! Für Signalzuweisungen ! Einträge der Form (s, v, t) ! Bedeutung: „Signal s wird zum Zeitpunkt t auf Wert v gesetzt

werden“ ! Beispiel: (clock, ´1´, 10 ns)

! Prozessaktivierungsliste ! Für die Reaktivierung von Prozessen ! Einträge der Form (pi, t) ! Bedeutung:

„Prozess pi läuft zum Zeitpunkt t weiter“.

32

Page 33: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Initialisierung

! Zu Beginn wird die aktuelle Zeit, tcurr, auf 0 ns gesetzt. ! Jedes Signal bekommt einen initialen Wert.

! Falls dort definiert, wird der Wert aus der Deklaration übernommen, z.B. • signal s : std_ulogic := `0`;

! Andernfalls wird der kleinste Wert verwendet, z.B. • signal s : std_ulogic

withtype std_ulogic is (`U`, `X`, `0`, `1`, `Z`, `W`, `L`, `H`, `-`); Initialwert ist `Ù`

! Es wird angenommen, dass das Signal zu jedem Zeitpunkt vor der Ausführung der Simulation diesen Wert hatte.

! Jeder Prozess wird genau einmal ausgeführt (bis er anhält) ! Während der Ausführung werden die Signalzuweisungen in der

Transaktionsliste aufgesammelt (aber noch nicht ausgeführt) ! Wenn der Prozess an einem „wait for“-Befehl anhält, dann wird der Prozess

in die Prozessaktivierungsliste eingetragen. ! Der Zeitpunkt der nächsten Runde, tnext,ist der früheste der folgenden

Zeitpunkte: 1. time’high (Ende der Simulation). 2. Frühester Zeitpunkt in der Transaktionsliste (falls nicht leer) 3. Frühester Zeitpunkt in der Prozessaktivierungsliste (falls nicht leer)

33

Page 34: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Beispielarchitecture behaviour of example is signal a : std_logic := ‘0’; signal b : std_logic := ‘1’; signal c : std_logic := ‘1’; signal d : std_logic := ‘0’; begin swap1: process(a, b) begin a <= b after 10 ns; b <= a after 10 ns; end process; swap2: process begin c <= d; d <= c; wait for 15 ns; end process; end architecture;

34

Page 35: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Signalzuweisungsphase – Erster Teil eines Schritts! Jeder Simulationszyklus beginnt damit, dass die Zeit auf

den nächsten Zeitpunkt gestellt wird, an dem Änderungen durchgeführt werden müssen:

! tcurr = tnext ! tnext wurde am Ende der Intitialisierung (oder am Ende

des letzten Zyklus) gesetzt. Es wird geprüft, ob das Ende der Simulation, time’high, erreicht wurde.

! Für alle (s, v, tcurr) in der Transaktionsliste: ! Entferne (s, v, tcurr) von der Transaktionsliste. ! s wird auf Wert v gesetzt.

! Für alle Prozesse pi die auf Signal s warten: ! (pi, tcurr) wird in die Prozessaktivierungsliste eingetragen.

! Analog, falls sich der Wert eines „wait until“-Ausdrucks ändert.

35

Page 36: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozessaktivierungsphase -- Zweiter Teil eines Schritts

! Alle Prozesse pi mit Einträgen (pi, tcurr) in der Prozessaktivierungsliste werden reaktiviert.

! Alle aktivierten Prozesse werden „parallel“ (genauer: in beliebiger Ordnung) ausgeführt.

! Signalzuweisungen ! werden in Transaktionsliste gespeichert (nicht sofort ausgeführt!). ! Beispiele:

• s <= a and b; – Sei v die Konjunktion aus dem aktuellen Wert von a und dem

aktuellen Wert von b. – Füge (s, v, tcurr) in die Transaktionsliste ein.

• s <= ´1´ after 10 ns; – Füge (s, ´1´, tcurr + 10 ns) in die Transaktionsliste ein.

! Prozesse werden solange ausgeführt, bis ein „wait“ Befehl erreicht wird.

! Falls pi an einem „wait for“-Befehl hält, dann wird die Prozessaktivierungsliste erweitert: ! Beispiel:

• pi hält bei „wait for 20 ns;“ an • (pi, tcurr + 20 ns) wird in die Prozessaktivierungsliste eingetragen 36

Page 37: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Prozessaktivierungsphase -- Zweiter Teil eines Schritts

! Falls ein Prozess den letzten Befehl erreicht und ! keine sensitivity Liste hat und ! der letzte Befehl kein Wait-Befehl ist,

dann läuft der Prozess solange weiter bis ein wait-Befehl erreicht wird.

! Wenn alle Prozesse angehalten haben, wird die Zeit für den nächsten Zyklus als der früheste der folgenden Zeitpunkte berechnet:

1.time’high (Ende der Simulation). 2.Frühester Zeitpunkt in der Transaktionsliste (falls nicht leer) 3.Frühester Zeitpunkt in der Prozessaktivierungsliste (falls nicht

leer) ! Stop, falls tnext = time’high oder die Transaktions- und

Prozessaktivierungslisten leer sind.

37

Page 38: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Delta delay

! Wie in StateCharts (Superstep Semantik) schreitet die Zeit zwischen zwei Schritten nicht notwendigerweise voran.

! Mehrere (potentiell unendlich viele) Schritte können zur selben Zeit tcurr geschehen.

! Signal-Zuweisungen, die zur selben Zeit, aber in verschiedenen Schritten geschehen, werden durch „Delta-Verzögerungen“ getrennt.

38

Page 39: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

Current time Delta delay Event0 ns 1 -- evaluation of inverter

-- (A, 1, 0 ns)2 -- evaluation of AND and

NAND -- (B, 0, 0ns), (C, 1, 0ns)

3 -- evaluation of AND -- (C, 0, 0ns)

Delta-Zeitschritte erhalten Kausalität

X

1

A

B

C= 1 = 0

= 1

= 01→0

Delta-Zeitschritte

39

Page 40: Einführung in Eingebettete Systeme - react.uni … · Einführung in Eingebettete Systeme Vorlesung 8 Bernd Finkbeiner 10/12/2014 finkbeiner@cs.uni-saarland.de

RS-Flipflop

entity RS_Flipflop is port (R, S : in std_logic; Q, nQ : inout std_logic); end RS_FlipFlop; architecture one of RS_Flipflop is begin process (R,S,Q,nQ) begin Q := R nor nQ; nQ := S nor Q; end process; end one; 0ns 0ns+δ 0ns+2δ

R 1 1 1 S 0 0 0 Q 1 0 0 nQ 0 0 1

0001

1100

0000

0111

1st δ

2nd δ

40