entwurf digitaler schaltungen (f3) - tu clausthaltech · inhalt f2: handwerkszeug teil 2 automaten...

140
·

Upload: others

Post on 24-Sep-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Entwurf digitaler Schaltungen (F3)

Handwerkszeug Teil 2

Prof. G. Kemnitz

Institut für Informatik, Technische Universität Clausthal23. Juni 2015

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 1/140

Inhalt F2: Handwerkszeug Teil 2

Automaten1.1 Modellierung und

Klassi�kation1.2 Automat als Schaltung1.3 Entwurf mit KV-Diagrammen1.4 Beschreibung in VHDL1.5 Redundante Zustände1.6 Beispiel Zahlenschloss1.7 Aufgaben

Operationsabläufe2.1 Dreiecksignalgenerator2.2 Serieller Addierer2.3 Divisionswerk2.4 Aufgaben

Zeitverhalten3.1 Simulation von

Laufzeittoleranzen3.2 Laufzeitanalyse3.3 Register3.4 Register-Transfer-Funktionen3.5 Constraints3.6 Aufgaben

Asynchrone Eingabe4.1 Abtastung4.2 Entprellen4.3 Asynchrone Initialisierung4.4 Eingabesynchronisation4.5 Aufgaben

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 2/140

Lernziele

Automaten: Beschreibung von Abläufen mit Automaten.Schaltungsentwurf für Automaten mit KV-Diagrammen.Beschreibung von Automaten in VHDL und Umgang mitredundanten Zuständen.

Operationssteuerungen: Erweiterung des Automatenmodells umdie Steuerung und Auswertung von Register-Transfer-Operatio-nen. Sequentiell arbeitende Rechenwerke.

Zeitverhalten: Modellierung und Kontrolle von Zeitbedingungen.

Asynchrone Eingabe: Robuste Datenübernahme von Schaltern,Tastern und Systemen mit einem anderen Takt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 3/140

1. Automaten

Automaten

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 4/140

1. Automaten

Automaten

Automaten sind

ein Basismodell der Mathematik und der TheoretischenInformatik,

ein Mittel zur Spezi�kation von Abläufen und Testfällen beider Programmierung und

Steuerungen in der Automatisierungstechnik.

In der Digitaltechnik dienen Automaten vor allem zur Steuerungvon Hardware-Abläufen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 5/140

1. Automaten 1. Modellierung und Klassi�kation

Modellierung und Klassi�kation

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 6/140

1. Automaten 1. Modellierung und Klassi�kation

Endlicher Automat (engl. FSM �nite state machine)

Ein endlicher Automat ist ein mathematisches Funktionsmodellzur Beschreibung sequentieller Abläufe. Er ist de�niert durch

eine Eingabemenge Σ = {E1, E2, . . .},eine Zustandsmenge S = {Z1, Z2, . . .},einen Anfangszustand aus der Zustandsmenge Z1 ∈ S,eine Ausgabemenge: Π = {A1, A2, . . .},eine Übergangsfunktion: fs : S × Σ→ S undeine Ausgabefunktion: fa : S × Σ→ Π.

In der Darstellung als Graph werden Zustände durch Knoten undZustandsübergänge durch Kanten dargestellt. Der Anfangs-zustand bekommt die Startkennung. Die Kanten sind mit denEingaben beschriftet, bei denen die Übergänge statt�nden.

Z1 Z2

E1

E2

ZustandsubergangKennzeichnung des Startzustands

Zustand

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 7/140

1. Automaten 1. Modellierung und Klassi�kation

Transduktor, Moore- und Mealy-Automat

Die für die Digitaltechnik interessanten Automaten sindTransduktoren. Sie generieren Ausgaben in Abhängigkeiten vonZustand und Eingabe und werden für Steuerungsaufgabeneingesetzt. Es wird zwischen zwei Typen unterschieden:

Moore-Automat: Die Ausgabe hängt nur vom Zustand ab.Mealy-Automat: Die Ausgabe ist den Zustandsübergängenzugeordnet.

R/N

A

D

V/K

H/K

H/N

B

C

R/L V/M

H/M

H/L

RV

D

A

K

N

H

H

B

C

L

M

R V

H

HV

R

V

R

Moore-Automat

V/L

R/K

R/M

V/N

Mealy-Automat

S = {A,B,C,D}

Π = {K,L,M,N}Ausgabemenge

Zustandsmenge

EingabemengeΣ = {H,V,R}

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 8/140

1. Automaten 1. Modellierung und Klassi�kation

Mit beiden Automatentypen lassen sich dieselben Zielfunktionenbeschreiben. Die Moore-Form braucht mehr Zustände, dieMealy-Form hat eine kompliziertere Ausgabefunktion und ist oftunübersichtlicher.

Wenn keine Ausgaben explizit zugeordnet sind, ist der Zustanddie Ausgabe. Kanten mit demselben Anfangs- und Endknotenkönnen weggelassen werden.

Eine weitere Sonderform sind autonome Automaten. Sie habenkeine Eingabe und schalten in jedem Schritt einen Zustandweiter. Zyklische autonome Automaten dienen z.B. als Taktteilerund zyklenfreie zur Steuerung von Initialisierungsabläufen.

A B C D

EFGH

A B C D

E G HF

zyklischer autonomer Automat zyklenfreier autonomer Automat

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 9/140

1. Automaten 1. Modellierung und Klassi�kation

Spezi�kation einer Türsteuerung

In der Digitaltechnik dienen Automaten hauptsächlich zurSteuerung von Abläufen, z.B. dem Ö�nen und Schlieÿen einerFahrstuhltür.

Eingangssignale der Türsteuerung:Sensorsignal �Tür ist komplett auf� (SA = 1),Sensorsignal �Tür ist komplett zu� (SZ = 1),Tastereingabe �Tür ö�nen� (TA = 1) undTastereingabe �Tür schlieÿen� (TS = 1).

Gesteuert wird der Schlieÿmotor der Tür. Die Ausgaben sind:�Motor aus� (A0),�Tür ö�nen� (AA) und�Tür schlieÿen� (AS).

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 10/140

1. Automaten 1. Modellierung und Klassi�kation

Der Steuerablauf in der Moore-Form hat die Zustände �auf�,�schlieÿen�, �zu� und �ö�nen�. Bei den Tastereingaben wechseltder Automat in die Zustände �ö�nen� bzw. �schlieÿen� und beiAktivierung der Endlagenschalter in die Zustände �auf� bzw.�zu�.

aufA0

zuA0

TS

Mealy-Automat

TA

Moore-Automat

TS

TA

TS

TASZ

SA

offnenAA AS

offnen

schließenschließen

wenn ”offnen”∧SA

sonst wenn ”schließen”∧SZ

sonst Ausgabe A0

Ausgabe AA

Ausgabe AA

In der Mealy-Form werden nur die Zustände �ö�nen� und�schlieÿen� unterschieden. Das Abschalten des Motors über dieEndlagenschalter ist in der Ausgabefunktion enthalten.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 11/140

1. Automaten 1. Modellierung und Klassi�kation

Die Automatenbeschreibung des Moore-Automaten ist nochfehlerhaft/unvollständig. Sie beschreibt z.B. nicht, was in denZuständen �ö�nen� und �schlieÿen� bei gleichzeitiger Aktivie-rung von Taster und Endlagenschalter passieren soll. Wenn beideTaster gedrückt sind, ist der permanente Wechsel zwischen�ö�nen� und �schlieÿen� sicher unerwünscht. Verbesserung:

aufA0

zuA0

offnenAA AS

schließen

Mealy-Automat

TA

More-Automat

TS ∧ SA ∧ TA

TA ∧ SZ

offnen

schließen

wenn ”offnen”∧SA

sonst wenn ”schließen”∧SZ

sonst Ausgabe A0

Ausgabe AA

Ausgabe AA

TS ∧ TATS

SZ

SA

TA

Die Ablaufspezi�kation mit Automaten ist vor allem deshalbbeliebt, weil sie anschaulich ist und solche Probleme aufdeckt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 12/140

1. Automaten 2. Automat als Schaltung

Automat als Schaltung

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 13/140

1. Automaten 2. Automat als Schaltung

Automaten als Schaltung

Bei der Realisierung als digitale Schaltung sind die Eingaben,Zustände und Ausgaben Bitvektoren. Die Unterscheidung von mWerten verlangt mindestens

n ≥ log2 (m)

Bits. Der Zustand wird in einem Register gespeichert.Anfangszustand ist der Initialisierungswert des Register. DieZustandsübergänge erfolgen mit der aktiven Takt�anke. DieÜbergangs- und Ausgabefunktion sind Verarbeitungsfunktion:

I

II

fy(x, s)fs(x, s) Ubergangsfunktion

Ausgabefunktion

fs(x, s)

fy(x, s)

s

yx

T

Tsx Eingabe

Zustandy Ausgabe

TaktInitialisierungssignal

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 14/140

1. Automaten 2. Automat als Schaltung

Die Änderungen des Eingabe- und das Initialisierungssignalsmüssen zeitlich zur aktiven Takt�anke ausgerichtet sein. DieAusgabe wird in ihrem Gültigkeitsfenster, in der Regel mit dernächsten aktiven Takt�anke, abgetastet. Die dafür erforderlichenEin- und Ausgaberegister werden nicht zur Schaltung desAutomaten gezählt.

I

IIxfs(x, s)

fy(x, s)

xs

y

T

I+

x+ y’

S1 S2

S1S0 S2

x+ Eingabe einen Takt zuvorI+ Initialisierungssignal einen Takt zuvory’ Ausgabesignal einen Takt verzogert

Folgezustandswertes+

AbtastzeitpunktWert ungultig / ohne Bedeutung

X1 X2

X1 X2 X3

X3

Y1 Y2

Y1 Y2

I+

T

y’

y

s

s+

x

x+

s+

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 15/140

1. Automaten 2. Automat als Schaltung

Bei einem Moore-Automaten ist die Ausgabe nicht von derEingabe abhängig.

II

I

xsy

T

EingabeZustandAusgabeInitialisierungssignalTakt

sfs(x, s) fy(s) y

T

x

Ohne explizite Zuordnung von Ausgaben ist die Ausgabe derZustand.

I

Is

fs(x, s)

T

xy

Bei einem autonomen Automaten ist der Folgezustand nur eineFunktion des Ist-Zustands.

I

Is

y

T

fs(s)

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 16/140

1. Automaten 3. Entwurf mit KV-Diagrammen

Entwurf mit KV-Diagrammen

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 17/140

1. Automaten 3. Entwurf mit KV-Diagrammen

Vorwärts-/Rückwärtszähler

Die Funktion sei als Graph gegeben. Das Beispiel ist ein Zähler,der bei Eingabe �V� vorwärts, bei �R� rückwärts zählt und bei�H� seinen Zustand beibehält. Die Zählfolge ist �A�, �B�, ... DieAusgabe ist den Übergängen zugeordnet (Mealy-Automat):

Zustands

R/N

A B

CD

V/L

R/LV/KR/K

V/M

R/M

V/N

H/L

H/M

H/K

H/N

Π = {K,L,M,N}S = {A,B,C,D}Σ = {H,V,R}

Anfangszustand

Eingabemenge

Zustandsmenge

Ausgabemenge

x/y

Eingabewert

Ausgabewert

Ausgehend davon sind die Codierung der symbolischen Wertesowie die Gröÿe des Zustandsregisters festzulegen und dieÜbergangs- und Ausgabefunktion zu entwerfen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 18/140

1. Automaten 3. Entwurf mit KV-Diagrammen

Aufstellen der Tabellen für die Übergangs- und Ausgabefunktion.Festlegung der Zustandscodierung.

⇒ ⇒

BA

CD

V

BCDA

H

BA

CD

R

BA

C

D

V H R

KLMNK

LMN

KLM

N 0010

1011

KLMN

1011

CD

0010

VHR

000110 01

00

1011

00011011

000110

11

00

011011

00 01 10

00011011

000110

11

00

011011

00 01 10

gangs und Ausgabefunktiongangs und Ausgabefunktionsymbolorientierte Uber- bitvektororientierte Uber-

s+ = fs(x, s)

s x :

AB

s x :

s+ = fs(x, s)

codierungZustands-

y = fa(x, s) y = fa(x, s)

Die drei bzw. vier symbolischen Werte für die Eingabe, dieAusgabe und den Zustand verlangen mindestens je zwei Bit. DieEingabecodierung ist im Beispiel willkürlich gewählt. DieAusgabecodierung ist so gewählt, das die Übergangs- und dieAusgabefunktion identisch sind. Das Zustandsregister muss zweiBit breit sein. Der Initialisierungswert �A� ist mit "00" codiert.Zustandscodierung ist so gewählt, dass y = s+ gilt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 19/140

1. Automaten 3. Entwurf mit KV-Diagrammen

Aufstellen der KV-Diagramme

Für jedes Zustands- und jedes Ausgabebit ist ein KV-Diagrammaufzustellen. Wegen y = s+ genügen im Beispiel zwei:

s1 s1

x1

x0

s0 s0

0

1

0

1 0 1

0 1

- - - -

1

1 1

0

0

1 0 1

0

- - - -

1 0 0 1

s+0 = y0s+1 = y1

0

V

H

R

-

A B D C A B D C

0 1aa

b

aaa

d

c

b e

y0 = s+0 = s0x0 ∨ s0x0

y1 = s+1 = s1s0x1x0 ∨ s1s0x1 ∨ s1s0x1 ∨ s1x0 ∨ s1s0x1

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 20/140

1. Automaten 3. Entwurf mit KV-Diagrammen

Vom KV-Diagramm zur Schaltung

Im nächsten Schritt sind die minimierten logischen Funktionendurch verfügbare digitale Bausteine nachzubilden. Früher, als derdigitale Schaltungsentwurf noch überwiegend Handarbeit war,wurden vorzugsweise Schaltkreise mit mehreren NAND-Gatterneingesetzt (vergl. Foliensatz F1). Die Gleichungsumformung ausder AND-OR-Form in die NAND-NAND-Form erfolgt mit Hilfeder de morganschen Regeln:

y0 = s+0 = s0x0 ∨ s0x0 = (s0x0) (s0x0)

y1 = s+1 = s1s0x1x0 ∨ s1s0x1 ∨ s1s0x1 ∨ s1s0x1 ∨ s1x0

= (s1s0x1x0) (s1s0x1) (s1s0x1) (s1s0x1) (s1x0)

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 21/140

1. Automaten 3. Entwurf mit KV-Diagrammen

y0 = s+0 = (s0x0) (s0x0)

y1 = s+1 = (s1s0x1x0) (s1s0x1) (s1s0x1) (s1s0x1) (s1x0)

Umsetzung der logischen Funktionen in eine Gatterschaltung.Ergänzung der Speicherzellen des Zustandsregisters, des Taktsund des Initialisierungssignals.

&Rx

s0s0 x1x1s1s1 x0x0

Rx

s0

y0

&

&

&

&

&

&

&

y1

s1&

x0

x1

I

T⇒Web-Projekt:

P2.2/Test VRZ.vhdl

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 22/140

1. Automaten 3. Entwurf mit KV-Diagrammen

Mit dem hier dargestellten Entwurfs�uss wurden noch vorwenigen Jahrzehnten Rechner und andere digitale Schaltungenentworfen.

Die Klausur zum Semesterende enthält traditionell eine Aufgabevon diesem Typ.

Für Übergangs- und Ausgabefunktionen mit mehr als vierEingabebits funktioniert der Bleistift-und-Papier-Entwurf nurnoch begrenzt. Übergang zu rechnergestützten Verfahren wieQuine und McCluskey.

Heute Beschreibung in einer Hochsprache mitFallunterscheidungen und Synthese.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 23/140

1. Automaten 4. Beschreibung in VHDL

Beschreibung in VHDL

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 24/140

1. Automaten 4. Beschreibung in VHDL

VHDL-Fallunterscheidung als Tabellenfunktion

} =>{ |WertWert

{Anweisung Anweisung}A0 A1 An

. . .

. . .

w0 w1

ssonst

case Ausdruck is

when

{when

} =>{ |WertWert

end case

=>

;{Anweisung }]]

{Anweisung Anweisung}} A1w1

A0

w0

Auswahlgroßeswi Auswahlwert(e) i

Anweisungsfolge iAi

An[[when others

Anweisung

s

Die aus Zustandsgraphen abgeleitete Übergangs- und Ausgabe-funktionen lassen sich am besten mit Auswahlanweisungen undFallunterscheidungen beschreiben, z.B.:

case Zustand is

when Zi => if Eingabe=... then Zustand <= Zj; ...

...when other => Zustand <= <Anfangswert 1>; end case;

1Siehe später absturzsichere Automaten in VHDL, Folie 35.Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 25/140

1. Automaten 4. Beschreibung in VHDL

Beispielbeschreibung für einen Mealy-Automaten

Zielstruktur

fs xI

00

0110

0/1

1/0

1/1

1/10/0

Ablaufgraph

0/0 s+ ysx

I

T T

fy

Teil des Automatenerforderlich, aber nicht

Eingabemenge: {0, 1} ⇒ BitZustandsmenge: {00, 01, 10} ⇒ 2-Bit-VektorAusgabemenge: {0, 1} ⇒ Bit

signal x, y, T, I: STD_LOGIC;signal s: STD_LOGIC_VECTOR(1 downto 0);

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 26/140

1. Automaten 4. Beschreibung in VHDL

Übergangsfunktion als Abtastprozess

s+

Ifsx

xI

T

s

00

0110

0/1

1/01/10/0

1/1

0/0

process(I, T)

variable sx: STD_LOGIC_VECTOR(2 downto 0);

beginif I='1' thens <= "00";

elsif RISING_EDGE(T) thensx := s & x;2

case sx iswhen "00"&'0' | "10"&'0' => s <= "00";

when "01"&'0' | "00"&'1' => s <= "01";

when "10"&'1' | "01"&'1' => s <= "10";

when others => s <= "00"; �- Neuinitialisierung

end case; �- bei Zustandsfehlern

end if;

end process;2Auswahl ist hier die Konkatenation aus Zustand und Eingabe.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 27/140

1. Automaten 4. Beschreibung in VHDL

Ausgabefunktion als kombinatorischer Prozess

00

0110

0/1

1/01/10/0

0/0

1/1process(x, s)

variable sx: STD_LOGIC_VECTOR(2 downto 0);

beginsx := s & x;

case sx iswhen "00"&'1' | "01"&'0' | "10"&'0' => y <= '0';

when others => y <= '1';

end case;end process;

Auswahl wieder Konkatenation aus Zustand und Eingabe3.3Von unserem Entwurfssystem als schlechter Entwurfsstil bemängelt. Die

empfohlene Beschreibung mit einer Case-Anweisung für die Zustands- und

If-Anweisungen für die Eingabeunterscheidung passt aber nicht auf Folien.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 28/140

1. Automaten 4. Beschreibung in VHDL

Beispiel Moore-Automat

process(s)begincase s iswhen "01" => y <= '0';

when others => y <= '1';

end case;end process; x

I

T

001 1

100

011001

1

0

s+ s

I

T

xy

fyfs

Die Eingabe-, Zustands- und Ausgabemenge sowie Übergangs-funktion und damit die Schnittstellenbeschreibung und derAbtastprozess sind wie im Beispiel zuvor. Die Ausgabe hängtvom Zustand ab und ist als kombinatorischer Prozess mit demZustand in der Weckliste beschrieben.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 29/140

1. Automaten 5. Redundante Zustände

Redundante Zustände

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 30/140

1. Automaten 5. Redundante Zustände

Beispiel Johnson-Zähler

0000

1000 1100 1110 1111

011100110001 s0 s1 s2 s3

II+

T

x

I I I

x x x

Ein Johnson-Zähler ist ein mit einem Inverter rückgekoppeltesSchieberegister. Ausgehend vom Initialzustand "0000" läuft erzyklisch zuerst mit Nullen und dann wieder mit Einsen voll. DieZykluslänge ist 2 · n (n � Bitanzahl des Zustandsregisters). Dieeinfache Übergangsfunktion erlaubt hohe Taktfrequenzen.Anwendung z.B. als Vorteiler für die Frequenzmessung imGigahertz-Bereich.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 31/140

1. Automaten 5. Redundante Zustände

Beschreibung in VHDLs0 s1 s2 s3

I

x

I I I

x x x

TI

signal T, I: STD_LOGIC;

signal s: STD_LOGIC_VECTOR(3 downto 0);

...

process(I, T)

beginif I='1' then s <= "0000";

elsif RISING_EDGE(T) thens <= s(2 downto 0) & (not s(3));

end if;end process;

Bestimmte Automatenformen wie der Johnson-Zähler lassen sichviel kompakter als mit Fallunterscheidungen nach Zuständen undEingabe beschreiben.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 32/140

1. Automaten 5. Redundante Zustände

Redundante Zustände und Systemabsturz

Viele Automaten nutzen nur einen kleinen Teil der 2n (n � Bitan-zahl des Zustandsregisters) Zustände, der 4-Bit-Johnson-Zählerz.B. nur 8 von 16 Zuständen. Was passiert, wenn der Automat ineinen ungenutzten (unzulässigen) Zustand übergeht?

0100

1011

Fehl-funktion

keinRuck-weg

s3s2s1s0

Soll-Funktion Funktion nach einem Absturz

0000

111111101100

1000

0001 0011

0111 0101

00101001

01101101

1010

Der Johnson-Zähler durchläuft seine acht ungenutzten (unzuläs-sigen) Zustände zyklisch. Bis zur Neuinitialisierung keinesinnvolle Reaktion mehr. Nicht nur bei Rechnern, sondern auchbei kleinen Automaten gibt es Abstürze.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 33/140

1. Automaten 5. Redundante Zustände

Absturzsichere Automaten

Schaltung zur automatischen Neuinitialisierung

0000.0

1111.0

I

T

xs0

I

x

I

x

s1 s2

&

I+

s3

I

xI+r≥1

- - - -.1

unzulassige Zustande Zyklus der zulassigen Zustande

Ubergange durchFehlfunktionen

s3s2s1s0.I

0111.00011.00001.0

1110.01100.01000.01101.0

0101.01001.00100.0

1010.0 0110.0

0010.0

1011.0

Erweiterung um eine Funktion zur automatischenNeuinitialisierung bei Erreichen eines unzulässigen Zustands. ImBeispiel automatisches Rücksetzen bei Erkennen der Zustände�1101� und �0101�.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 34/140

1. Automaten 5. Redundante Zustände

Absturzsichere Automaten in VHDL

Die pragmatische, wenn auchnicht unbedingt aufwands-

ärmste Lösung ist dieNeuinitialisierung bei

�allen anderen Zu-ständen�:

process(I, T)

beginif I='1' thens <= <Anfangswert >;

elsif RISING_EDGE(T) thencase s iswhen <1. genutzter Zustand > =>

if <Eingabe> then ... end if;

when <2. genutzter Zustand > =>

if <Eingabe> then ... end if;

...

when others =>

s <Anfangswert >; �- Neuinitialisierung

end case; �- bei Zustandsfehlern

end if;end process;

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 35/140

1. Automaten 5. Redundante Zustände

Watchdoguberwachter Automat Watchdog

RW

RA

RA

RW

Ein Uberlauf des Watchdogs initialisiert den Automaten neu

Bei einem bestimmten, regelmaßig stattfindenen Zustands-ubergang wird der Watchdog neu initialisiert

Bei einem programmierten Rechner mit Tausenden oder Millionenvon gespeicherten Bits gibt es unzählig ungenutzte (unzulässige)Zustände. Es ist nicht ausschlieÿbar, dass hin wieder einer dieserZustände, z.B. durch Entwurfsfehler, Eingabefehler oderStörungen erreicht wird. Rechner, vor denen kein Bediener sitzt,haben in der Regel einen Watchdog, der, wenn das System einegewisse Zeit nicht reagiert, es neu initialisiert.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 36/140

1. Automaten 6. Beispiel Zahlenschloss

Beispiel Zahlenschloss

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 37/140

1. Automaten 6. Beispiel Zahlenschloss

Entwurf der Steuerung eines Zahlenschlosses

Ein elektronisches Zahlenschloss wartet auf eine bestimmte Folgevon Eingaben. Bei der richtigen Eingabefolge ö�net das Schloss,sonst wird ein Eingabefehler signalisiert4. Präzisierung für dennachfolgenden Beispielentwurf:

Eingabefolge: Reset + richtige Zahlenfolge ⇒ leuchtendeAusgabe-LEDEingabefolge: Reset + falsche Zahlenfolge ⇒ LED bleibt aus

Entwurfsablauf:Schaltungsskizze mit dem Automaten als Black-Box,Spezi�kation des Zustandsgraphen für den Automaten,Beschreibung in VHDL,Simulation, Synthese, Test.

4Zwischending aus einem Transductor und einem Akzeptorautomaten.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 38/140

1. Automaten 6. Beispiel Zahlenschloss

Schaltungsskizze

xI

&x xU

x+

x+m−1

fs

sfy

xU’

s+

y

TI+

x+0

UV

· · ·x+1

I

m Zi�erntasten + Reset-Taste; asynchron prellend;Abtastung z.B. mit TP ≈ 10ms; �0� wenn gedrücktgültige Eingabe: Abtastfolge keine Taste - eine Tastebetätigt; mehrere Tasten gilt als falsche TasteAusgabe-LED + Vorwiderstand; leuchtet bei y = 0Moore-Automat (zustandszugeordnete Ausgabe)Neuinitialisierung mit abgetastetem Reset-Wert �0�xU � UND-Verknüpfung der Tasten; �1�, wenn imAbtastmoment keine Taste gedrückt, sonst �0�

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 39/140

1. Automaten 6. Beispiel Zahlenschloss

Spezi�kation des Ablaufs1110∗ 0111∗ 1101∗

LED ausZ2 Z3

LED einLED ausZ0 Z1

LED aus

LED ausF

sonst∗ sonst∗sonst∗

∗ ∧(xU = 0) ∧ (xU’= 1)

Akzeptorautomat; Zi Zustandsname; i � Nummer dernächsten GeheimzahlÜbergangsbedingung: aktive Takt�anke ∧ xU = 0 (Tastegedrückt) ∧ xU' (Abtastschritt zuvor keine Taste gedrückt)∧s 6= F ∧ s 6= Z3 (kein Endzustand)richtige Zahlenfolge 0-3-1 ⇒ Eingabefolge 1110-0111-1101(m = 4 Zi�erntasten)falsche Eingabe ⇒ Fehlerzustand Fdie Endzustände F und Z3 werden nur durchNeuinitialisierung verlassen

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 40/140

1. Automaten 6. Beispiel Zahlenschloss

Beschreibung in VHDL

xI

&x xU

x+

x+m−1

fs

sfy

xU’

s+

y

TI+

x+0

UV

· · ·x+1

I

signal T, I_next, I, xu, xu_del: STD_LOGIC;

signal s: STD_LOGIC_VECTOR(2 downto 0);

signal x_next, x: STD_LOGIC_VECTOR(3 downto 0);...

process(T) beginif RISING_EDGE(T) thenx <= x_next;

I <= I_next;

xu_del <= xu;

end if;end process;

xu <= x(0) and x(1) and x(2) and x(3);Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 41/140

1. Automaten 6. Beispiel Zahlenschloss

Endzustande: 1- -

000

100010001

111

Z0

Z1

Z2

Z3

F

Zustand Codierung

Z1

LED aus LED ausZ2

LED ausZ0 Z3

LED ein

∗ ∧(xU = 0)∧xU’= 1)LED aus

F

1110∗ 0111∗

sonst∗sonst∗

1101∗

sonst∗

process(I, T)

variable v: STD_LOGIC_VECTOR(6 downto 0);

beginif I='0' thens <= "000";

elsif RISING_EDGE(T) and xu='0'

and xu_del ='1' and s(2)='0' thenv:= s & x;

case v iswhen "000" & "1110" => s<="001";

when "001" & "0111" => s<="010";

when "010" & "1101" => s<="100";

when others => s <= "111";

end case;end if;end process;�- nebenläufige Anweisung zur Bildung von y

y <= not s(2) or s(1) or s(0);Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 42/140

1. Automaten 6. Beispiel Zahlenschloss

Zusammenfassung

Ein Automat ist ein mathematisches Modell, das sich gut für dieSpezi�kation von Steuerabläufen in digitalen Schaltungen eignet.Die Schaltung eines Automaten besteht aus einemZustandsregister, der Übergangs- und der Ausgabefunktion.Anfangszustand ist der Initialwert des Registers. DieÜbergangszeitpunkte legt der Takt fest. Der Schaltungsentwurfmit Automaten besteht in der Regel aus1 einem Schaltungsentwurf mit dem Automaten als Black-Box,2 der Spezi�kation des Zustandsgraphen und3 der Beschreibung der Gesamtfunktion in VHDL.

Der kreative Aufgabenteil steckt in den beiden erstenTeilaufgaben. Die abschlieÿende Beschreibung in VHDL ist nurnoch Fleiÿarbeit.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 43/140

1. Automaten 7. Aufgaben

Aufgaben

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 44/140

1. Automaten 7. Aufgaben

Aufgabe 1.1: Rückgekoppeltes Schieberegister

b)a)

x

I

x

I00

10

10

10

10

x

IT

y

s0 s1

T

x

I

s1s0

y

=1=1

1 Bestimmen Sie die Folgezustände s+1 s

+0 und den

Ausgabewert y für alle Variationen des Ist-Zustands s1s0

und des Eingabewerts von x.2 Zeichnen Sie den Ablaufgraphen.3 Ergänzen Sie die Signalverläufe für s1s0 und y in derAbbildung rechts.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 45/140

1. Automaten 7. Aufgaben

Aufgabe 1.2: Automat

Gegeben sind der Ablauf-graph und die Zustands-codierung. Zustands-wechsel bei steigenderTakt�anke und Initialisie-rung mit high-aktivemInitialisierungssignal.

Z1

y<=’0’

y<=’1’

Z4

Z2

y<=’1’

x=’1’

x=’1’

x=’1’

y<=’0’

Z3

x=’0’x=’0’

x=’0’

x=’1’

x=’0’

symbolische Zustandsbezeichnung Z1 Z2 Z3 Z4

Zustandsvektor �00� �01� "10" �11�

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 46/140

1. Automaten 7. Aufgaben

1 Füllen Sie die nachfolgende Übergangstabelle aus:

Eingabe 0 1 0 1 0 1 0 1

Zustand 00 00 01 01 10 10 11 11

Folgezustand

Ausgabe

2 Skizzieren Sie die Gesamtschaltung (Eingabeabtastung,Zustandsregister, Übergangsfunktion, Ausgabefunktion).

3 Wie viele Speicherzellen benötigt der Automat?4 Beschreiben Sie die Gesamtschaltung in VHDL (Entity- undArchitecture-Teil).

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 47/140

1. Automaten 7. Aufgaben

Aufgabe 1.3: Automatenentwurf

s0

s1

s2

s0

s1

s2

x x

s2s1s0

x/y

0/0

000

010

100

111

011 001

1/0 1/0

1/0

0/10/0

1/0

1/0

1/0 0/1

0/0

0/1

s+0y

s+2 s+1

1 Füllen Sie die KV-Diagramme rechts aus.2 Entwerfen Sie für den gegebenen Ablaufgraphen eineSchaltung aus Gattern und Registern.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 48/140

1. Automaten 7. Aufgaben

Aufgabe 1.4: Automatensynthese

Gegeben sind die Schaltungsstruktur eines Automaten undTabellen für die Übergangs- und Ausgabefunktion.

0100

1011

00011011

000110

11

00

011011

00 01 10

00011011

000110

11

00

011011

00 01 10

d)

s x :

s+ = fs(x, s)y

x xI

ss+

2

2

2

y = fa(x, s)fa(x, s)

I T

fs(x, s)

1 Beschreiben Sie die Funktion der Schaltung in VHDL ineiner synthesegerechten Form.

2 Entwerfen Sie mit Hilfe von KV-Diagrammen eine Schaltungfür den Automaten aus Gattern und Registern.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 49/140

1. Automaten 7. Aufgaben

Aufgabe 1.5: Überwachung eines Sendesignals

Für ein Sendesignal ist zu überwachen, dass die Di�erenz ∆ derAnzahl der gesendeten Einsen minus Anzahl gesendete Nullenden Bereich von −3 bis 3 nicht überschreitet. Bei ÜberschreitungFehlersignal y aktivieren. Beispielsignalverlauf:

x 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 . . .

∆ 0 1 0 -1 -2 -3 -3 -2 -3 -2 -1 0 1 2 3 3

y 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 . . .

(x � Eingabe; ∆ � Anz. �0� minus Anz. �1�; y � Fehlersignal)

1 Beschreiben Sie die Funktion durch einen Ablaufgraphen.2 Beschreiben Sie die Funktion synthesegerecht in VHDL(Schnittstelle, Architecture).

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 50/140

2. Operationsabläufe

Operationsabläufe

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 51/140

2. Operationsabläufe

Steuerung von Operationsabläufen

Die Zustands- und Kantenanzahl eines Automaten wächst expo-nentiell mit der Anzahl der Eingabe- und Zustandsbits. Bei zuvielen Zuständen Aufteilung in Ablaufzustände und Operanden.

Erweiterung der bisherigen Ablaufgraphen:Aktionen: bisher nur Ausgabezuweisung. Ab jetzt beliebigelogische und arithmetische Operationen.Übergangsbedingungen: Bisher nur Eingabewerte. Ab jetztbeliebige logische Ausdrücke von Eingaben und Operanden.Initialierung: Zusätzliche Operandeninitialisierung.

Z <= Z + 1

Zustand 0

Z <= Z−1

Zustand 1Z > 3Z <= 0

Bereits ein einzelner Zähler kann die Beschreibung einessequentiellen Ablaufs drastisch vereinfachen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 52/140

2. Operationsabläufe 1. Dreiecksignalgenerator

Dreiecksignalgenerator

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 53/140

2. Operationsabläufe 1. Dreiecksignalgenerator

Dreiecksignalgenerator

Aufgabe sei die zyklische Erzeugung des nachfolgendenSignalverlaufs:

Zeitablauf

000000010010

11101101

1111

0 15 30

y

Schritt

Ein Automat für diese Aufgabe hat 30 Zustände, die zyklischdurchlaufen werden, denen in Folge die nacheinanderauszugebenden Werte zugeordnet sind. Eine Ablaufsteuerungkommt mit zwei Zuständen aus:

Aufwärtszählen undAbwärtszählen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 54/140

2. Operationsabläufe 1. Dreiecksignalgenerator

Beschreibungen als autonomer Automat in der bisherigen Form:

Z0

0000Z1

0001Z2

0010Z14

1110Z15

1111

16Z17Z29Z30 Z28

11111110001000010000

Beschreibung als Operationsablauf:

Abwartszahlenz <= z − 1

Aufwartszahlenz <= z + 1

z =”1110”

z =”0001”sonst sonst

z <=”0000”

kleiner,skalierbar undeinfacher zu programmieren.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 55/140

2. Operationsabläufe 1. Dreiecksignalgenerator

Beschreibung in VHDL

000000010010

11101101

1111

0 15 30 Schritt

Aufwartszahlenz <= z + 1

z <= z − 1Abwartszahlen

z <=”0000”

z =”0001”

z =”1110”

signal T, I, S: std_logic;signal z: unsigned(3 downto 0);...process(I, T)beginif I='1' thenS <= '0'; z <= "0000";elsif rising_edge(T) thencase S iswhen '0' => z <= z +"1";if z="1110" then s<='1'; end if;

when others => z <= z -"1";if z="0001" then s<='0'; end if;

end case;end if;end process;

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 56/140

2. Operationsabläufe 2. Serieller Addierer

Serieller Addierer

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 57/140

2. Operationsabläufe 2. Serieller Addierer

Das Funktionsmodell eines (Ripple-) Addierers ist eine Schleifevom niedrigsten zum höchstwertigen Operandenbit mit derbitweisen Summen- und Übertragsfunktion im Schleifenkörper.

c

sVA

c

sVA

c

sVA

tdVA

cin

b0

a0

an−1

bn−1cout

a1b1

s0

s1

sn−1

signal a,b,s:std_logic_vector(n-1 downto 0);

signal cin, cout: std_logic;...

process(a, b, cin)

variable c: std_logic;

beginc:=cin;

for i in 0 to n-1 loops(i)<=VA_sum(a(i), b(i), c);

c:=VA_carry(a(i), b(i), c);

end loop;cout<=c;

end process;

Maximale Verzögerung:

tdRAdd ≈ n · tdVAProf. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 58/140

2. Operationsabläufe 2. Serieller Addierer

Die Funktionbeschreibungen für die Summen- und Übertrags-berechnung können im Deklarationsteil der �Architecture� oderdes �Process� oder besser in einem Package stehen:

function VA_sum(a, b, c: std_logic) return std_logic is

begin

return a xor b xor c;

end function;

function VA_carry(a, b, c: std_logic) return std_logic is

begin

return (a and b) or (a and c) or (b and c);

end function;

Ein serieller Addierer addiert pro Takt nur ein Bit undbraucht mindestens n Takte mit der Periode TP = 1..2 · tdVA.

Nur ein statt n Volladdierer und nicht viel langsamer aus einRipple-Addierer mit tdRAdd = n · tdVA.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 59/140

2. Operationsabläufe 2. Serieller Addierer

Aufteilung in Zeitschritte

Im einfachsten Fall durch Einfügen von Warteanweisungen:

signal a,b,s:std_logic_vector(n-1 downto 0);

signal c, cin, Start, busy: std_logic;...

processbeginbusy<='0';

wait until Start='1' and RISING_EDGE(T);

busy<='1'; c<=cin; -- cin, a, b seien bereit

wait until RISING_EDGE(T); -- warte vor erster Bitadd.

for i in 0 to n-1 loops(i)<=VA_sum(a(i), b(i), c);

c<=VA_carry(a(i), b(i), c);

wait until RISING_EDGE(T); -- w. nach jeder Bitadd.

end loop;end process;

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 60/140

2. Operationsabläufe 2. Serieller Addierer

Simulation

Nach Aktivierung von Start wird busy aktiviert, ein Taktgewartet, vier Takte addiert und busy deaktiviert.

Die Operanden a und b müssen während der gesamten Additionverfügbar sein.

Kontrolle und Optimierung der Abläufe.Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 61/140

2. Operationsabläufe 2. Serieller Addierer

Operationsablaufbeschreibung, VHDL-Entwurf 2

signal a, a_in, b , b_in, s:std_logic_vector(3 downto 0);

signal init, T, c, c_in, Start, busy: std_logic;

signal i: natural;

process(init,T)beginif init='1' then busy<='0';

elsif rising_edge(T) then

if busy='0' and Start='1' then

busy<='1'; i<=0;

a <= a_in; b<=b_in; c<= c_in;

elsif busy='1' then

s(i) <= VA_sum(a(i), b(i), c);

c <=VA_carry(a(i), b(i), c); i<= i+1;

if i=3 then busy<='0';end if;end if;

end if;end process;

Start=’1’c<=c ina<=a inb<=b ini<=0

busy=’0’

busy=’1’

i=3

i<=i+1c<=VA carry(a(i),b(i),c)s(i)<=VA sum(a(i),b(i),c)

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 62/140

2. Operationsabläufe 2. Serieller Addierer

Simulation

Als Verbesserung werden die Operanden a und b zwischen-gespeichert und müssen nur während Start=1 gültig sein.Synthesefähige Beschreibung.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 63/140

2. Operationsabläufe 2. Serieller Addierer

Schaltung und Verbesserung

E4

Ec

sVA

+1

E

E

E

E

Dec2:4

4

2

s(0)

s(1)

s(2)

s(3)

cStart

c in

b in

a in

In �s(i) <= VA_sum(a(i), b(i), c);� verlangtadressiertes Lesen und Schreiben.Einfacher sind Schieberegister.

b0b1b2b3 c

sVA

s0s1s2s3a0a1a2a3

+1c ct

c<=c in; i<=0a<=a in; b<=b in

Start=’1’ i=3

busy=’0’

c<=VA carry(a(0),b(0),c)s<=s(3:1)&VA sum(a(0),b(0),c)

a<a srl 1; b<=b srl 1; i<=i+1

busy=’1’

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 64/140

2. Operationsabläufe 2. Serieller Addierer

Operationsablauf mit Schieberegistern in VHDL

signal a, a_in, b, b_in, s:std_logic_vector(3 downto 0);signal init, T, c, c_in, Start, busy: std_logic;

signal i: natural range 0 to 3;

process(init,T)beginif init='1' then busy<='0';

elsif rising_edge(T) then

if busy='0' and Start='1' then

busy<='1'; i<=0;

a <= a_in; b<=b_in; c<= c_in;

elsif busy='1' then

s <= s(2 downto 0) & VA_sum(a(0), b(0), c);

c <= VA_carry(a(0), b(0), c); i<= i+1;

a <= '0' & a(3 downto 1); b <= '0' & b(3 downto 1);

if i=3 then busy<='0';end if;end if; end if;

end process;

busy=’0’

c<=VA carry(a(0),b(0),c)s<=s(3:1)&VA sum(a(0),b(0),c)

a<a srl 1; b<=b srl 1; i<=i+1

busy=’1’

c<=c in; i<=0a<=a in; b<=b inStart=’1’i=3

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 65/140

2. Operationsabläufe 2. Serieller Addierer

Simulationsergebnis mit Schieberegistern

Ab dieser Entwurfskomplexität ist eine Simulation des Entwurfsdringend zu empfehlen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 66/140

2. Operationsabläufe 2. Serieller Addierer

Zusammenfassung

Der serielle Addierer wurde in drei Schritten entworfen:Aufteilung der Addition in Zeitschritte mitWait-Anweisungen, um den Ablauf zu simulieren, aufPlausibilität zu prüfen und nachzubessern.Nachbildung durch einen Operationsablaufgraphen.Nachbildung des Operationsablaufs durch einesynthesefähige Beschreibung.Abschätzen der zu erwartenden Schaltung.Aufwandsbewertung. Nachbesserung des Operationsablaufsund darauf aufbauend der VHDL-Beschreibung.

Wenn Sie selbst eine so komplexe Schaltung entwerfen, sollten Siebeim ersten mal dafür Wochen und nicht nur Stunden anArbeitszeit einplanen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 67/140

2. Operationsabläufe 3. Divisionswerk

Divisionswerk

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 68/140

2. Operationsabläufe 3. Divisionswerk

Division von Binärzahlen

a

b= q +

r

b(a � Dividend; b � Divisor; q � (ganzzahliger) Quotient; r � Rest).

. . .

qr

diffb

r.a .i = 0 i = 1 i = 2 i = 3

RestQuotient

0001

0001

0110 110

0000

1111000 10 00 1000 100 00 100

0 110

00 0

1

00

00

10 110

1111

010

0 110

0

0101 100

001

0 1101 0 00

1100

010

Operation für jedes Bit:for i in 0 to 3 loop

diff := ('0' & r) - b;

q := q(2 downto 0) & not diff(4);

if diff(4)='0' then r := diff(3 downto 0); end if;

r:=r(2 downto 0) & a(2); a := a(1 downto 0) & '0';

end loop;Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 69/140

2. Operationsabläufe 3. Divisionswerk

Programmrahmen zur Simulation:signal a_in, b:std_logic_vector(3 downto 0);

signal T: std_logic;

process -- Erzeugung der Testbeispiele

begin

T <= '0' after 5 ns, '1' after 10 ns;

a_in <= "1011"; b<="0011";

wait until rising_edge(T);

T <= '0' after 5 ns, '1' after 10 ns;

a_in <= "1101"; b<="0101";

wait;

end process;

process

variable a, aa: std_logic_vector(2 downto 0);

variable diff: std_logic_vector(4 downto 0);

variable r, rr, q: std_logic_vector(3 downto 0);

begin

... -- Divisionsalgorithmus

end process;Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 70/140

2. Operationsabläufe 3. Divisionswerk

Division mit Textausgaben

Nutzt Tuc.Ausgabe.all und ieee.numeric_std.all.wait until rising_edge(T);

write(lf&"Divident="&str(a_in)&" Divisor="&str(b));

r := "000"&a_in(3); a := a_in(2 downto 0);

for i in 0 to 3 loop

rr := r; aa:=a; �- Aufbewahrung zur Ausgabediff := std_logic_vector5(unsigned('0'&r) - unsigend(b));

q := q(2 downto 0) & not diff(4);

if diff(4)='0' then r := diff(3 downto 0); end if;

write("i=" & str(i) & " | r.a=" & str(rr) & '.'&str(aa) &

"-" & str(b) & "=" & str(diff) & " | Rest="&str(r) &

" Quotient=" & str(q));

r:=r(2 downto 0) & a(2); a := a(1 downto 0) & '0';

end loop;

5tTyp(x) Konvertierungsfunktion nach tTyp, hier um dieSubtraktion von unsigned für std_logic_vector nutzen zu können.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 71/140

2. Operationsabläufe 3. Divisionswerk

Programmausgabe

. . .

qr

diffb

r.a .i = 0 i = 1 i = 2 i = 3

RestQuotient

0001

0001

0110 110

0000

1111000 10 00 1000 100 00 100

0 110

00 0

1

00

00

10 110

1111

010

0 110

0

0101 100

001

0 1101 0 00

1100

010

Divident=1011 Divisor=0011

i=0 | r.a=0001.011-0011=11110 | Rest=0001 Quotient=UUU0

i=1 | r.a=0010.110-0011=11111 | Rest=0010 Quotient=UU00

i=2 | r.a=0101.100-0011=00010 | Rest=0010 Quotient=U001

i=3 | r.a=0101.000-0011=00010 | Rest=0010 Quotient=0011

Divident=1101 Divisor=0101

i=0 | r.a=0001.101-0101=11100 | Rest=0001 Quotient=0110

i=1 | r.a=0011.010-0101=11110 | Rest=0011 Quotient=1100

i=2 | r.a=0110.100-0101=00001 | Rest=0001 Quotient=1001

i=3 | r.a=0011.000-0101=11110 | Rest=0011 Quotient=0010

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 72/140

2. Operationsabläufe 3. Divisionswerk

Aufrollen der Schleife zu einem Matrix-Dividierer

for i in 0 to 3 loop

diff := ('0' & r) - b;

q := q(2 downto 0) & not diff(4);

if diff(4)='0' then r := diff(3 downto 0); end if;

r:=r(2 downto 0) & a(2); a := a(1 downto 0) & '0';

end loop;

Pfad mit der großten Verzogerung: tDiv ≈ n · tAdd ∼ n2

sll sll

sll

Sub

01

r

d4Sub

01

d4

q2

”000”&a in

b

”XXXX”

a

r

q3

r

a

r

”XXXq3” · · ·

· · ·

· · ·· · ·

a

r

· · ·

”XXq3q2”sll

Logisch Linksverschiebung um ein Bit (einfache Verbindungen)sll

Dauer: ≈ tAdd ∼ nDivisionsschritt

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 73/140

2. Operationsabläufe 3. Divisionswerk

Serieller Dividierer busy=’0’

busy=’1’

div:=(’0’& r) - b;if div(4)=0 vr:=div(3:0)else vr:=rq<=q(2:0) & not div(4)a<=a(1:0) & ’0’r<=vr(2:0) & a(2)i<=i+1

Start=’1’

r<=”000” & a in(3)a<=a in(2:0)i<=0

sll

sll

Sub

01

d4

q2

r

a

r

b

q

i=3n Div.-Schritte, tSerDiv ≈ n · tAdd ∼ n2

Nur einen statt n Subtrahierer undetwa dieselbe Ausführungszeit wie ein Array-Dividierer.

Division erfolgt deshalb in der Regel seriell statt in einem Schritt.Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 74/140

2. Operationsabläufe 3. Divisionswerk

Zusammenfassung

Auch der Dividierer wurde wieder in Schritten entworfen:

Formulierung eines Beispielablaufs.

Nachbildung mit einem Programm und Beispielsimulationen.

Untersuchung der resultierenden Schaltung.

Beschreibung als Operationsablauf, ...

Die nächst Stufe wäre die Aufstellung einer synthesefähigenVHDL-Schaltung. Die Entwicklung eines generischen Modells füreinen n-Bit-Dividierer, Testrahmenentwicklung, Simulation bishin zum Test hat den Arbeistumfang einer halben Bachelorarbeit.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 75/140

2. Operationsabläufe 4. Aufgaben

Aufgaben

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 76/140

2. Operationsabläufe 4. Aufgaben

Aufgabe 2.1: Taktteiler

Entwerfen Sie eine Taktteilerschaltung mit dem Teilerfaktor 2 · n,die mit jeder n-ten Eingabetakt�anke den Ausgabetakt invertiert.

1 Skizzieren Sie die Signalverläufe des Eingabe- und desAusgabetakts für n = 2.

2 Beschreiben Sie die Zielfunktion als Operationsablaufgraphmit einem Zähler.

3 Beschreibung als VHDL-Prozess.Hinweis: Der Datentyp für den Zähler kann auch ein Zahlentypsein (INTEGER, NATURAL oder POSITIVE), z.B.

signal i: natural range 0 to 3;

Die Wertebereichsbeschränkung, hier auf den Bereich von 0 bis 3,braucht die Synthese für die Bestimmung der Bitanzahl.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 77/140

2. Operationsabläufe 4. Aufgaben

Aufgabe 2.2: Morse-Empfänger

4 6 8 102

A R I SP

0

1

0x

t in s

Morse-Zeichen bestehen auskurzen Pulsen (Punkt, tP = 200...300 ms) undlangen Pulsen (Strich, tS = 600...900 ms).

Taktfrequenz: fT = 20 HzPrellzeit viel kleiner als Taktperiode.zwei low-aktive Tasteneingänge

Signal x: Morse-SignalSignal I: Initialisierungssignal

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 78/140

2. Operationsabläufe 4. Aufgaben

Drei bitorientierte Ausgänge, zu aktivieren für je einen Takt

Signal p: nach einem PunktSignal s: nach einem StrichSignal err: nach einem Puls unzulässiger Breite

Skizze der Gesamtschaltung mit Tasten, Abtastregistern,Zustandsregister und der Übergangs- und Ausgabefunktionals Black-Box.

Operationsablaufgraph unter Verwendung eines Zählers

VHDL-Beschreibung (nur Vereinbarungen der Datenobjekteund Beschreibung der Prozesse)

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 79/140

2. Operationsabläufe 4. Aufgaben

Aufgabe 2.3: Entwurf eines seriellen Divisidierers

1 Beschreiben Sie den seriellen 4-Bit-Dividierer mit demOperationsablaufgraph auf Folie 74 in VHDL.

2 Entwicklen Sie einen Testrahmen zur Simulation derDivision mit den Beispielen auf Folie 72.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 80/140

2. Operationsabläufe 4. Aufgaben

Aufgabe 2.4: Schrittzähler für Quadratur-Encoder

vorwartsruckwarts

vorwarts ruckwarts

1 2 30 44 5 3 2 1 0

a’

b’ b”

a”0000

0 0 000 1

10

000

111

0 10 01 1

111

000

1 01 10 0

111

111

1 11

10

0

b’a” b” a’

−1

−1+1

+1

+1−1

+1−1

ct

T

0

01

1b’

a’

ct

a

b

Lochscheibe auf der Radachse z.B. eines mobilen Roboters.Bei einer Vorwärtsdrehung ändert sich das Signal a und beieiner Rückwärtsdrehung das Signal b zuerst.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 81/140

2. Operationsabläufe 4. Aufgaben

(a', b' sind die einmal abgetastet, a�, b� die zweimal abgetastetSensorsignale. Übergangsfunktion:

a�b� <= a'b'

Aufgaben:1 Aufstellen von je einem KV-Diagramm für die Bildung einesInc- (Increment) und eines Dec- (Decrement) Signals6.

2 Beschreibung der Schrittzählschaltung in VHDL.Schnittstelle:entity SchrittZaehler isport ( T, I: in STD_LOGIC; �- Takt und Init.-Signal7

a, b: in STD_LOGIC; �- Sensorausgangssignale

y: out signed(15 downto 0) �- Zaehler

);6Inc soll für Zähloberation �+1� und �Dec� für Zähloperation �-1� eins

und sonst null sein.7 Bei I=1 ist der Zähler y<= 0 zu setzen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 82/140

3. Zeitverhalten

Zeitverhalten

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 83/140

3. Zeitverhalten

Zeitverhalten

Foliensatz F2, Abschnitt 1 (Simulation) wurde u.a. eingeführt,wie das Zeitverhalten von Schaltungen simuliert wird:

Verarbeitungsfunktionen mit konstanter Verzögerung,Verarbeitungsfunktionen mit Toleranzbereich für dieVerzögerung,Zeitverhalten von Latches, Registern und Blockspeichern.

Die Synthese erlaubt keine Vorgaben für das Zeitverhalten.

Dieser Abschnitt wiederholt die behandelten Beschreibungen desZeitverhaltes und erweitert um:

weitere Simulationsmodelle,Laufzeitanalyse zur Compile-Zeit undasynchrone Eingabe.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 84/140

3. Zeitverhalten 1. Simulation von Laufzeittoleranzen

Simulation von Laufzeittoleranzen

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 85/140

3. Zeitverhalten 1. Simulation von Laufzeittoleranzen

Verzögerung als Toleranzbereich

Die Verzögerungszeiten sind nur mit begrenzter Genauigkeitbekannt. Bei jedem Wechsel ist ein Signal kurzzeitig ungültig.

y

x

f(x) yx

th, td

th

f(wi+1)

wi+1

td

t

wi

f(wi)

Signalwert ungultig

Die Verzögerung einer Verarbeitungsfunktion lässt sich alsToleranzbereich aus Halte- und Verzögerungszeit beschreiben:

th Haltezeit, Zeit, die der alte gültige Ausgabewert nacheiner Eingabeänderung garantiert noch erhalten bleibt.td Verzögerungszeit, Zeit, nach Anliegen des neuen gültigenEingabe bis die Ausgabe spätestens gültig ist.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 86/140

3. Zeitverhalten 1. Simulation von Laufzeittoleranzen

Beschreibung in VHDL

x

y

f(x) yx

th, td

wi+1wi

f(wi+1)f(wi)

tdth

Signalwert ungultig

Ungültig kann bedeuten, dass sein Wertim verbotenen Bereich liegt, nicht sicherist, dass die Änderung schon begonnenoder noch nicht abgeschlossen ist oderGlitches, d.h. mehrfache Signalwechselzwischen null und eins.

Zur Beschreibung in VHDL werden dem Ausgabesignal bei jederEingabeänderung zwei Ausgabeänderungen zugewiesen,�ungültig� nach der Haltezeit und der neue gültige Wert nachder Verzögerungszeit:

y <= ungültig after th, f(x) after td;

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 87/140

3. Zeitverhalten 1. Simulation von Laufzeittoleranzen

Inverter mit Halte- und Verzögerungszeit

signal x, y: STD_LOGIC;

...

�- Erzeuge Signal mit mehreren Änderungenx <= '0' after 0.5 ns, 'X' after 4 ns, '1' after 4.5 ns,

'X' after 8 ns, '0' after 9.5 ns, '1' after 12 ns,

'0' after 12.5 ns;

�- Modellierung des Invertersy <= 'X' after 1 ns, not x after 2 ns;

10y

0 2 4 6 8 10

thtd

tsim

10x

nicht initialisiert (U) ungultig (X)

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 88/140

3. Zeitverhalten 1. Simulation von Laufzeittoleranzen

Schaltung mit mehreren Gattern th, td1

th, td1

th, td2&G1

G2

G3z2

z1

&x4

x3

x2

x1

≥1 y

signal x1, x2, x3, x4,

z1, z2, y: STD_LOGIC;

constant th: DELAY_LENGTH:= 500 ps8;

constant td1: DELAY_LENGTH:= 1 ns;

constant td2: DELAY_LENGTH:= 2 ns;

...G1:z1<= 'X' after th, x1 and x2 after td1;

G2:z2<= 'X' after th, x3 and x4 after td1;

G3: y<= 'X' after th, z1 or z2 after td2;

Eingabe: process begin

wait for 1 ns; x3<='1';

wait for 2 ns; x1<='1'; x4<='1';

wait for 4 ns; x2<='1'; wait for 3 ns; x4<='0';

wait for 2 ns; x3<='0'; wait;

end process;8Verzögerungszeiten haben den Typ delay_length. Zeitangaben

bestehen aus einem positiven Wert und ein Maÿeinheit (ps, ns, us, ...).Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 89/140

3. Zeitverhalten 1. Simulation von Laufzeittoleranzen

G1:z1<= 'X' after th, x1 and x2 after td1;

G2:z2<= 'X' after th, x3 and x4 after td1;

G3: y<= 'X' after th, z1 or z2 after td2;

x1

x2

x3

x4

z1

z2

y

0 5 10 15 20

01

01

01

01

01

01

01

nicht initialisiert (U) ungultig (X)

tsim

ohne th

In der Beispielsimulation ist die Ausgabe die meiste Zeitungültig, d.h. für die Richtigkeit kann nicht garantiert werden.Die Verarbeitung ungültiger Signalwerte führt zu schwer zulokalisierbaren Fehlern, z.B. auch Abstürzen von Automaten.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 90/140

3. Zeitverhalten 2. Laufzeitanalyse

Laufzeitanalyse

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 91/140

3. Zeitverhalten 2. Laufzeitanalyse

Laufzeitanalyse

Die Laufzeitanalyse berechnet die Halte- und Verzögerungszeiteiner übergeordneten kombinatorischen Schaltung aus den Halte-und Verzögerungszeiten der Teilschaltungen durch Additionentlang aller Pfade.

x5

x4

x3

x2

x1

td3 = 2nsth3=1ns

td4=3nsth4=1ns

td1=2nsth1=1ns td5 = 2ns

th5 = 1ns

G3

G4y2

&

&

td2=3nsth2=1ns

&G1

G2&

G5& y1

Pfade∑

th.i∑

td.i

G1-G3-G5 3 ns 6 ns

G2-G3-G5 3 ns 7 ns

G2-G4-G5 3 ns 8 ns

G2-G4 2 ns 6 ns

G4-G5 2 ns 5 ns

G4 1 ns 3 nsProf. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 92/140

3. Zeitverhalten 2. Laufzeitanalyse

Die automatische Laufzeitanalyse im Rechner arbeitet mitZeitgruppen. Eine Zeitgruppe ist eine Zusammenfassung vonSignalen, z.B. aller Eingabesignale.

x1

x2

x4

x3

x5

1

&&

&&

td4th4

td5th5

Zeitgruppe

y1td2th2

&

y2

th1 td1 th3 td30

2

3

4

5

6

78 9

Halte- und Verzögerungszeiten zwischen Zeitgruppen:

Zeitgruppe th td

von 0 bis 1 th1 td1

von 0 bis 2 th2 td2

von 0 bis 3 min (th1, th2) max (td1, td2)Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 93/140

3. Zeitverhalten 2. Laufzeitanalyse

Zeitgruppenweise Berechnung der Halte- und Verzögerungszeitendurch fortgesetzte Additionen, Minimum- und Maximumbildung.

1

23

67

89

45

Zeitgruppenverzog.Zeitgruppenhaltezeit

td.2

th.4

th.2

th.1

td.1

td.3

td.4

th.5

th.3

td.5

Ungultigkeitsfenster ZG0

tD.1 = td.1

tD.3 = max(tD.1, tD.2)

tD.2 = td.2

tD.5 = tD.3 + td.3tD.4 = max(tD.2, 0)

tDs.6 = tD.4 + td.4tD.7 = max(tD.5, tD.6)

tD.8 = tD.7 + tD.5

tD.9 = max(tD.6, tD.8)

tH.1 = th.1

tH.3 = min(tH.1, tH.2)

tH.2 = th.2

tH.5 = tH.3 + th.3tH.4 = min(tH.2, 0)

tH.6 = tH.4 + th.4tH.7 = min(tH.5, tH.6)

tH.8 = tH.7 + th.5tH.9 = min(tH.6, tH.8)

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 94/140

3. Zeitverhalten 3. Register

Register

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 95/140

3. Zeitverhalten 3. Register

Register als Abtastelement

Die Ergebnisse einer Verarbeitungsfunktion dürfen nur innerhalbder Gültigkeitsfenster weiterverarbeitet oder gespeichert werden.Die laufzeitrobusteste Art der Abtastung ist mit einem Register.Ein Register übernimmt seine Eingaben in einem kleinenZeitfenster im Bereich der aktiven Takt�anke.

tstn

ts, tn

AbtastfensterWert ungultig

VorhaltezeitNachhaltezeit

thr, tdr

n n

T

x y

Verzogerungszeittdrthr Haltezeit

y

T

x

thrtdr

tn

w1w0

ts

w2

w2w1

ts tn

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 96/140

3. Zeitverhalten 3. Register

Registerbeschreibung mit Zeitverhalten

tstn

ts, tn

AbtastfensterWert ungultig

VorhaltezeitNachhaltezeit

Verzogerungszeittdrthr Haltezeit

thr, tdr

n n

T

x y

y

T

x

thrtdr

tn

w1w0

ts

w2

w2w1

ts tn

process(T)beginif RISING_EDGE(T) thenif x'LAST_EVENT>ts thenx_del <= ungültig after

thr, x after tdr;wait for tn;

if x'LAST_EVENT<tn thenx_del <= ungültig;

end if;elsex_del <= ungültig after thr;

end if;end if;end process;

Das Zeitverhalten eines Register inkl. Vor-und Nachhaltezeit ist in VHDL abbildbar.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 97/140

3. Zeitverhalten 3. Register

Register nach dem Master-Slave-Prinzip

Master speichertSlave speichert

10

10

10

10

Ex

Ex

T

x

z

y

T

x y

AbtastfensterUbernahmeflanke

x

T

zy

SlaveMaster Symbol

Vor der aktiven Takt�anke übernimmt der Master und der Slavespeichert. Nach der aktiven Takt�anke gibt der Master diegespeicherten Daten an den Slave weiter. Die Eingabedatenbrauchen eine Vorhaltezeit (ts > 0), aber keine Nachhaltezeit(tn = 0).

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 98/140

3. Zeitverhalten 3. Register

Gepulstes Latch als Register

AbtastfensterWert ungultig

RegisterverzogerungRegisterhaltezeitNachhaltezeitVorhaltezeit

nn

tdr

thr

tn

01

10z

T

E10

x

y

td1

ts = 0 tn = td1

w1

w0 w1

td2

⇒Bezugszeit derUbernahme

Tz

td2

&E

E

x y

thL, tdL

td1 x

tdR = tdLthR = thL

Datenwert

td2

wi

ts

Erzeugung eines kurzen Freigabeimpulses für ein Latch an deraktiven Takt�anke. Halbe Latch-Anzahl gegenüber Master-Slave-Lösung. Emp�ndlicher gegenüber Laufzeitungenauigkeiten,d.h. schwerer zu entwerfen. Eingabedaten brauchen keineVorhaltezeit (ts = 0), dafür eine Nachhaltezeit (tn > 0).

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 99/140

3. Zeitverhalten 3. Register

Verarbeitung mit Abtastung

Bei der Abtastung von Verarbeitungsergebnissen ist derAbtastwert auch nur bei jeder aktiven Takt�anke neu zuberechnen. Halte und Verzögerungszeit sind die des Registers. DieEingabedaten für die Verarbeitung müssen vor der aktivenTakt�anke gültig sein von tdf + ts bis thf − tn (tn in derAbbildung vernachlässigt).

ts

notwendigesGultigkeitsfenster

ts

x

T

y

f(x)x

thf , tdf

T

thr, tdr

yy+

thftdf + ts

wi

f(wi)tdrthr

f(wi−1) f(wi)

y+

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 100/140

3. Zeitverhalten 3. Register

Verarbeitung abgetasteter Signale

ts

ts

y

T

x

tdfthf

f(wi−1) f(wi)

thr, tdr

f(x)

thf , tdf

yx’

xwi

thftdf

x’ wi−1 wi

T

process(T)beginif RISING_EDGE(T) thenif x'LAST_EVENT>ts theny<= ungültig after thr+thf,

f(x) after tdr+tdf;

elsey<= ungültig after thr+thf;

end if;end if;

end process; (Modell ohne Nachhaltezeit)Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 101/140

3. Zeitverhalten 4. Register-Transfer-Funktionen

Register-Transfer-Funktionen

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 102/140

3. Zeitverhalten 4. Register-Transfer-Funktionen

Register-Transfer-Funktion

Bei einer Register-Transfer-Funktion beginnt die Verarbeitungmit der aktiven Takt�anke und endet mit der nächsten aktivenTakt�anke.

thr, tdr

y

TP

w2

tdf

tdrthr

tdrthr

w1x’

thfthftn

y = f(x)x y’

T

TP

x’ y

x’, y’TP

abgetastete Werte

ts, tn

ts

thf , tdf

T

f(w1)f(w0)

w0

Taktperiode

Die Werte von y sind im weiÿen Zeitfenster gültig und müssenzur korrekten Übernahme im roten Zeitfenster gültig sein. Das istmit einer Laufzeitanalyse kontrollierbar und erfordert keineBerücksichtigung im Simulationsmodell.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 103/140

3. Zeitverhalten 4. Register-Transfer-Funktionen

y

TP

w2

tdf

tdrthr

tdrthr

w1x’

thfthftnts

T

f(w1)f(w0)

w0Die Summe aus den Verzögerungs-zeiten des Registers und der Ver-arbeitungsfunktion darf nicht gröÿerals die Taktperiode sein

TP ≥ TPmin = tdr + tdf + ts

und die Nachhaltezeit des Registers darf nicht gröÿer als dieSumme der Haltezeiten sein:

tn ≤ tnmax = thr + thf

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 104/140

3. Zeitverhalten 4. Register-Transfer-Funktionen

Taktversatz

Abtastfenster

ts

t∆T12

yf(x’)

x′ y′

ts, tn

VerzogerungT2T1

x

thr, tdr

a)

Ubernahmeflanke Eingaberegister

Ubernahmeflanke Ausgaberegister0

t∆T12

T1

T2

y

b)

TP

tdr

tdf

thr

thf

x′

thf , tdf

t

tn

Die Takt�anken zwischen Eingangs- und Ausgangsregisterkönnen um einen Zeit t∆T12 versetzt sein, absichtlich zurErhöhung der max. Taktfrequenz oder unbeabsichtigt durchunterschiedliche Verzögerungen von der gemeinsamen Taktquelle.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 105/140

3. Zeitverhalten 4. Register-Transfer-Funktionen

Abtastfenster

ts

t∆T12

yf(x’)

x′ y′

ts, tn

VerzogerungT2T1

x

thr, tdr

a)

Ubernahmeflanke Eingaberegister

Ubernahmeflanke Ausgaberegister0

t∆T12

T1

T2

y

b)

TP

tdr

tdf

thr

thf

x′

thf , tdf

t

tn

Die Bedingung für eine korrekte Datenübernahme mitTaktversatz lauten:

tdr + tdf + ts ≤ TP + t∆T12

thr + thf ≥ tn + t∆T12

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 106/140

3. Zeitverhalten 4. Register-Transfer-Funktionen

tdr + tdf + ts ≤ TP + t∆T12

thr + thf ≥ tn + t∆T12

Aus diesen Bedingungen ergibt sich für den maximal zulässigenTaktversatz:

t∆T12 ≤ thr + thf − tnMit dem maximal zulässigen Taktversatz beträgt die maximaleTaktfrequenz:

fT ≤1

tdr + tdf + ts +−tn − (thr + thf)

Die maximal mögliche Anzahl von Berechnungsschritten pro Zeithängt nicht von der Verzögerung, sondern von der Di�erenz ausVerzögerungs- und Haltezeit ab. Man kann sogar Rechenwerkebauen, die gleichzeitig mehr als eine Berechnung durchführen,eine sog. Wellen-Pipeline.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 107/140

3. Zeitverhalten 5. Constraints

Constraints

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 108/140

3. Zeitverhalten 5. Constraints

Zeit-Constraints

Constraints sind Zusatzinformationen für die Synthese in dieUCF-Datei. Der Zeit-Constraints umfassen

Mindesttaktfrequenzen bzw. Obergrenzen für dieTaktperiode, für unsere Versuchsbaugruppe:

clk=50MHz

Zeitgruppen von Ein- und Ausgabesignale undMaximalverzögerungen zwischen Zeitgruppen.

Mit demselben Takt abgetastete Signale bilden immer eineZeitgruppe. Die Obergrenze der Register-Register-Verzögerunggibt das Takt-Constraint vor, das nie fehlen sollte. Zeitgruppenetc. werden für die Kopplung mit anderen schnellen Schaltkreisen(d.h. nicht in unseren praktischen Übungen) benötigt undgehören zur fortgeschrittenen Magie des digitalenSchaltungsentwurfs.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 109/140

3. Zeitverhalten 5. Constraints

Zusammenfassung

Ergebnisse müssen innerhalb der Gültigkeitsfensterabgetastet werden. Dazu dienen Register.Register werden durch Abtastprozesse beschrieben.Abtastprozesse haben nur den Takt in der Weckliste;Datenübernahme nur bei aktiver Takt�anke; wenn vor- oderNachhaltebedingung verletzt, Übernahme �ungültig�.Abtastprozesse können auch vor- oder nachgelagerteFunktionen mit einschlieÿen; vereinfacht die Simulation.Einrahmung in Ein- und Ausgaberegister ⇒Register-Transfer-Funktion; Zeitbedingungen mit einerLaufzeitanalyse kontrollierbar; stark vereinfachteSimulationsmodelle.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 110/140

3. Zeitverhalten 6. Aufgaben

Aufgaben

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 111/140

3. Zeitverhalten 6. Aufgaben

Aufgabe 3.1: Beschreibung als Abtastprozess

thr, tdr

y+

ts

Abtastfensterungultig

t3t4

t5

x1x0

y+

y

t6t7

t1t2

x2

T

a)

G1G2

& y

TReg

=1x0

x1

x2

th1, td1 th2, td2

b)

signal x0, x1, x2, y_next, T, y: STD_LOGIC;Beschreibung von t1 bis t7 als Funktion der Werte von th..,td... etc.Beschreibung der Gesamtschaltung als Abtastprozess

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 112/140

3. Zeitverhalten 6. Aufgaben

Aufgabe 3.2: Register-Transfer-Funktion

x+ 1

xn−1

0

1

n

nn

x

nn

y+

tdr = 1ns

T

td1 = 0,5 ns td2 = n · 1 ns td3 = 2nsts = 0,5 ns

Gesucht:maximal zulässige Taktfrequenz in Abhängigkeit von derBitbreite n?maximal zulässige Taktfrequenz für n = 16?

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 113/140

3. Zeitverhalten 6. Aufgaben

Aufgabe 3.3: Taktversatz

thr = 0nstdr = 1ns

Takt 1

x y

Takt 2

y = f(x)

thf = 5nstdf = 11ns

tn = 0ts = 2ns

In welchem Zeitbereich muss der Taktversatz t∆T12 liegen, damitbei Taktfrequenz fT = 100MHz die Vorhalte- und dieNachhaltebedingungen für das Ausgaberegisters erfüllt sind?

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 114/140

4. Asynchrone Eingabe

Asynchrone Eingabe

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 115/140

4. Asynchrone Eingabe 1. Abtastung

Abtastung

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 116/140

4. Asynchrone Eingabe 1. Abtastung

Asynchrone Eingabe

Asynchron bedeutet, dass die Eingabe nicht zeitlich zumSystemtakt ausgerichtet ist. Damit kann das Signal auch imAbtastfenster ungültig sein. Erfordert spezielle Schaltungen.

Ein abgetastetes Bitsignal hat auch, wenn es im Abtastmomentungültig ist, den Abtastwert �0� oder �1�. Der abgetastete Wertim Register ist immer glitch-frei und für eine Taktperiode stabil.

TP

T

x

x’

x′x

ts thr, tdr

T

ts ts ts ts

txT txT

tdrthr

tdrthr

tdrthr

tdrthr

Erste Regel: Asynchrone Eingaben vor der Verarbeitung abtasten!

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 117/140

4. Asynchrone Eingabe 1. Abtastung

Fehler: Verarbeitung nicht abgetasteter Eingaben

x

y

y′

a a′

T

x f(..)y

th, td

w1 w2

f(w1, 1) f(w2, 1)f(w1, 0)

f(w0, 0) XX f(w2, 1)

y′

ts th

ts

ththtdtd td

a

T

a

T

Das Signal y wird aus einem zum Takt ausgerichteten Signal xund einem nicht ausgerichteten Signal a gebildet. Änderungenvon y, ausgelöst durch Änderungen von x sind zur nächsten akti-ven Takt�anke immer gültig, aber von a ausgelöste Änderungennicht. Wenn y ein Bitvektor ist, wird bei Abtastung auÿerhalbdes Gültigkeitsfensters ein nicht vorhersehbarer Bitvektor ausNullen und Einsen abgetastet. Unvorhersagbare Wirkung.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 118/140

4. Asynchrone Eingabe 1. Abtastung

x

y

y′

a a′

T

x f(..)y

th, td

w1 w2

f(w1, 1) f(w2, 1)f(w1, 0)

f(w0, 0) XX f(w2, 1)

y′

ts th

ts

ththtdtd td

a

T

a

T

Fakt 1

Jedes asynchrone Signal ist vor der Weiterverarbeitungabzutasten.

Vor der Verarbeitungsfunktion ist in den Signalpfad von a einRegister einzufügen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 119/140

4. Asynchrone Eingabe 2. Entprellen

Entprellen

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 120/140

4. Asynchrone Eingabe 2. Entprellen

Entprellen von Schaltern und Tastern

Mechanische Eingabeelemente (Taster und Schalter) prellen. BeiBetätigung ist es schwer auszuschlieÿen, dass der Kontakt durchmechanische Schwingungen mehrfach ö�net und schlieÿt. ZuVerhinderung, dass das abgetastete Signal bei einerEinzelbetätigung mehrfach ein- und ausschaltet, ist dieAbtastperiode länger als die maximale Prellzeit zu wählen.

tPr

Abtastperiodemaximale Prellzeit

tP > tPr

&

Schaltung zur Erkennung derfallenden Flanken

tP

tPr

1011 00 01 11

T

x

x’

x”

x”x’

x”x’y

x

T

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 121/140

4. Asynchrone Eingabe 2. Entprellen

Zur Erzeugung eines Impulses bei einer Tasterbetätigung ist dasEingabesignal ein zweites mal abzutasten. Tasterbetätigungensind dann an der Abtastfolge �01� bzw. �10� zu erkennen.

tPr

Abtastperiodemaximale Prellzeit

tP > tPr

&

Schaltung zur Erkennung derfallenden Flanken

tP

tPr

1011 00 01 11

T

x

x’

x”

x”x’

x”x’y

x

T

Achtung, dass funktioniert nicht ohne die erste Abtastung, weil ysonst von einem asynchronen Signal abhängt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 122/140

4. Asynchrone Eingabe 2. Entprellen

Beschreibung in VHDL

x

Tx’ x”

y&

th, td

y’

(Takt)

signal T, x, x_del, x_del2, y:

STD_LOGIC;

...

process(T)beginif RISING_EDGE(T) thenx_del <= x; �- Synthesebeschreibung

x_del2 <= x_del; �- der beiden Register

end if;end process;y <= not x_del and x_del2;

Wichtig ist, dassdas erste Register nicht vergessenund der Abtasttakt nicht gröÿer als die maximale Prellzeitgewählt wird.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 123/140

4. Asynchrone Eingabe 3. Asynchrone Initialisierung

Asynchrone Initialisierung

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 124/140

4. Asynchrone Eingabe 3. Asynchrone Initialisierung

Register mit asynchroner Initialisierung

Register haben in der Regel einen asynchron wirkenden Initiali-sierungseingang, der Vorrang vor der Datenübernahme mit demTakt hat, der aber nicht asynchron angesteuert werden darf.

I

x yx

I

T

signal x, y: tTyp;

signal T, I: std_logic;

...

process(T, I)

beginif I='1' theny <= aw;

elsif RISING_EDGE(T) theny <= x;

end if;end process;

(tTyp � std_logic oderstd_logic_vector;

aw � Anfangswert, den das Registerbei Initialisierung übernehmen soll).

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 125/140

4. Asynchrone Eingabe 3. Asynchrone Initialisierung

Potentielle Fehlfunktionen

Pulsdauer des Initialisierungssignals zu kurz:

01

01

w1 w2w0

w1 w2

T

x′x

I

f()

tsthf , tdfthr, tdr

yx’I

x

I

x

T≪ TP

y’

Selbst wenn das Eingaberegister seinen Anfangswert korrektübernimmt, liegt der Initialwert am Registerausgang zu kurzeZeit stabil an, so dass das nachfolgende Register im ersten Schritteinen ungültigen Wert übernimmt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 126/140

4. Asynchrone Eingabe 3. Asynchrone Initialisierung

Bei Master-Slave-Registern wirkt die asynchrone Initialisierungauf den Slave. Sie muss mindestens eine Taktperiode anliegenund in der Masterphase deaktiviert werden.

Zeitfenster fur die Deaktivierungdes Initialisierungssignals

01

01T

I

w1 w2

w0 w1 w2

w0

z

y w1 w2

EEx

E

I

T

Symbol

Ix yI

zx

I

x

T

zSlaveMaster

x

II

yx

AW

Bei Deaktivierung in der Slave-Phase liegt der anschlieÿendübernommene Wert zu kurz am Registerausgang an, so dass dasRegister hinter den nachfolgenden Verarbeitungsfunktionmöglicherweise einen ungültigen Wert abtastet.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 127/140

4. Asynchrone Eingabe 3. Asynchrone Initialisierung

01

01

01

01

EEx

E

zyx

I

x

T

zy

SlaveMaster

x

II

I

T

Symbol

Ix yI

T

I

w1 w2

w0 w1 w2

w0

z

y w1 w2

AW oder w0

in der Slave-PhaseDeaktivierung von I

am Ende der Slave-PhaseDeaktivierung von I

T

I

w1 w2

w0 w1 w2

w0

z

y w0 w1 w2

≪ TP

x

AWAW

Bei Deaktivierung am Ende der Slave Phase ist es unsicher, obder Slave den Initialisierungswert behält oder den Wert vomMaster übernimmt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 128/140

4. Asynchrone Eingabe 3. Asynchrone Initialisierung

Laufzeitrobuste Lösung Power-on-Reset-

Schaltung

≥1

T

I

TasteReset-

Abtasten

UVsignal T, I, I_POR,

I_Tast: STD_LOGIC;

...

I_POR <= '1', '0'

after 1 ms;

process(T)

begin

if RISING_EDGE(T) then

if I_POR='0' or I_Tast='0' then I<='1';

else I<='0';

end if;

end if;

end process;

Bildung eines Gesamtinitialisierungssignals und Ausrichtung ander aktiven Takt�anke durch Abtasten.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 129/140

4. Asynchrone Eingabe 4. Eingabesynchronisation

Eingabesynchronisation

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 130/140

4. Asynchrone Eingabe 4. Eingabesynchronisation

Unterschiedlich getaktete Teilsysteme

Beim Datenaustausch zwischen Teilsystemen mit zeitlichunausgerichteten Takten benötigt der Empfänger eineZusatzinformation über die Gültigkeitszeitpunkte. Bei einersynchronen Übertragung wird der Takt des Senders mitübertragen, bei der Fern- und Funkübertragung werden dieGültigkeitszeitpunkte an den Änderungszeitpunkten derDatensignale ermittelt.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 131/140

4. Asynchrone Eingabe 4. Eingabesynchronisation

Synchrone Schnittstelle

Im nachfolgenden Beispiel einer parallelen Datenübertragungwird der Sendetakt mit übertragen. Die übertragenen Daten sindjeweils ab der Takt�anke von Tx für eine Dauer tg gültig.

xw1 w2 w3 w4 w5

G

G

Tx’Tx

=1

x’

abgetastetes EingabesignalSystemtaktSendetaktasynchrones Eingabesignalx

Tx

Gx’

Gultigkeitssignal fur x’

T

T

Tx”

TPtg

w2w1w0 w3 w4 w5

w0x

Tx

T

x’

Tx’

Tx”

Der Empfänger muss Daten und Takt mit einer TaktperiodeTp < tg abtasten, um garantiert jeden gültigen Wert mindestenseinmal zu erfassen.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 132/140

4. Asynchrone Eingabe 4. Eingabesynchronisation

xw1 w2 w3 w4 w5

G

G

Tx’Tx

=1

x’

abgetastetes EingabesignalSystemtaktSendetaktasynchrones Eingabesignalx

Tx

Gx’

Gultigkeitssignal fur x’

T

T

Tx”

TPtg

w2w1w0 w3 w4 w5

w0x

Tx

T

x’

Tx’

Tx”

Die Eingabedaten sind immer genau dann neu und gültig, wennsich der Abtastwert des Sendetakts vom vorherigen Abtastwertunterscheidet d.h., wenn die EXOR-Verknüpfung des ein- undzweimal abgetasteten Sendetakts eins ist.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 133/140

4. Asynchrone Eingabe 4. Eingabesynchronisation

VHDL-Beschreibung der Synchronisationsschaltung

signal T, Tx, Tx_del, Tx_del2, G: STD_LOGIC;

signal x, y: STD_LOGIC_VECTOR(...);

...process(T)beginif RISING_EDGE(T) theny<= x;

if Tx='1' then tx_del <= '1';

else tx_del <= '0';

end if;tx_del2 <= Tx_del;

end if;end process;G <= Tx_del xor Tx_del2;

x

Tx’f(...)

=1G

schaltungSynchronisations-

y

TTx

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 134/140

4. Asynchrone Eingabe 4. Eingabesynchronisation

Zusammenfassung

Asynchrone Signale sind vor ihrer Verarbeitung abzutasten.Bei prellenden Signalen von mechanischen Kontakten mussdie Abtastperiode gröÿer als die maximale Prelldauer sein.Auch asynchrone Initialisierungssignale müssen vor denRegistern durch Abtasten synchronisiert werden.An Schnittstellen zwischen Systemen mit unterschiedlichenTakten muss der Empfänger der Empfangsdatensynchronisieren, d.h. am eigenen Takt ausrichten. DieGültigkeit wird erst danach anhand der abgetasteten Wertebestimmt.

Vergessen Abtastung hat manchem Studierenden imArbeitsbereich eine wochenwährende Fehlersuche eingebracht.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 135/140

4. Asynchrone Eingabe 5. Aufgaben

Aufgaben

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 136/140

4. Asynchrone Eingabe 5. Aufgaben

Aufgabe 4.1: Addition Schaltereingabe

UV Versorgungsspannung

Addiererschaltung

(Signalwert Eins)

(Signalwert Null)Bezugspotential

· · ·

T

+

UV

xn−1

x1

x0+

Unter welchen Betriebsbedingungen kann es zu einemunerwarteten Fehlverhalten kommen?Wie ist die Schaltung zu verändern, damit sie zuverlässigarbeitet?

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 137/140

4. Asynchrone Eingabe 5. Aufgaben

Aufgabe 4.2: Asynchrone parallele Übertragung

Bei einer asynchronen Übertragung seien die mit dem Signal xübertragenen Datenworte immer dann gültig, wenn das mitübertragene Gültigkeitssignal g 6= 0 ist:

Maximaldauer g =X

Periodendauer von gTPg

tgx

Mindestdauer g = 1tg1

Mindestdauer g = 0tg0

0g

x wi+1wi

tg1

TPg

tgxtg0

1

Mit welcher Taktfrequenz muss die Empfangsschaltung diebeiden Signale abtasten9?Wie ist das Gültigkeitssignal für die abgetastetenDatenworte zu bilden, damit es für jedes abgetastete gültigeDatenwort genau einen Takt lang aktiv ist?

9Zeit für g = 0 gleich Zeit für g = 1

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 138/140

4. Asynchrone Eingabe 5. Aufgaben

Aufgabe 4.3: Handtakt

Entwurf einer Schaltung mit Eingabetaste x, Eingabetakt T(fT = 50 MHz) und internem Taktteiler zur Erzeugung einesglitch- und prellfreien Handtakt Tout:

entity Handtakt isport(x: in std_logic; -- Eingabesignal von der Taste

T: in std_logic; -- 50MHz-Eingabetakt

Tout: out std_logic); -- glitch- und prellfreier Handtakt

end entity;

maximalen Prelldauer 20msminimale Betätigungszeit 100ms.Teilerverhältnis des Taktteilers sei eine Zweierpotenz.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 139/140

4. Asynchrone Eingabe 5. Aufgaben

1 Welchen Vorteil hat eine Zweierpotenz als Teilerverhältnis?(Hinweis, die Schaltung hat keinen Initialisierungseingang.)

2 Welche Werte darf das Taktteilerverhältnis haben?

3 Zeichnen der Gesamtschaltung mit dem Taktteiler alsBlack-Box.

4 Beschreiben der Gesamtschaltung in VHDL.

Prof. G. Kemnitz · Institut für Informatik, Technische Universität Clausthal 23. Juni 2015 140/140