1ss 07 fakultät für informatik der technischen universität münchen vortrag: praktikum technische...

43
1 SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco Volbracht Gruppe 2 Thema: Multiplikations- und Divisionseinheit in VHDL Vortrag: Praktikum Technische Informatik Sommersemester 2007

Upload: katrina-karrer

Post on 05-Apr-2015

109 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

1SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Von Jonas Zaddach, Johannes Kohl und Marco Volbracht

Gruppe 2

Thema: Multiplikations- und Divisionseinheit in VHDL

Vortrag: Praktikum Technische Informatik

Sommersemester 2007

Page 2: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

2SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Inhalt

• Vorstellung der Teilnehmer• Vorstellung der Aufgabe• Erläuterung Multiplizierer

– Grobe Übersicht

– Erläuterung der einzelnen Zustände

– Feine Übersicht

– Eckdaten

Page 3: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

3SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Inhalt (2)

• Erläuterung Dividierer– Grobe Übersicht– Erläuterung ausgewählter Zustände– Feine Übersicht– Eckdaten

• Zeiteinteilung• Organisation• Probleme

Page 4: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

4SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Vorstellung der Teilnehmer

• Marco Antonio Volbracht (Projektleiter)• Jonas Zaddach (Vortrag)• Johannes Michael Kohl (Dokumentation)

Page 5: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

5SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Vorstellung der Aufgabe

• Es ist eine Multiplikations- und Divisionseinheit zu implementieren, welche Binärzahlen in einer vorgegebenen Zahlendarstellung miteinander verrechnen.

• Die Schaltung wird in VHDL realisiert und mit Hilfe des Programms Altera Quartus II entworfen und getestet.

Page 6: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

6SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Grobe Funktionsweise des Multiplizierers

Page 7: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

7SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Reset

• Warte darauf, dass ena = Reset auf High gesetzt wird

• Setze alle Flags und internen Signale zurück

Page 8: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

8SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Einlesen

• Berechung des Vorzeichens• Prüfen, ob eine der

Eingabezahlen Null ist Setzen des Zero-Flags und Wechsel in Endzustand

• Speichern der Eingabewerte in internen Signalen (als positive Zahlen)

-- Hoechstwertiges Bit des -- ersten Einganges (Vorzeichen)in1_msb: IN std_logic;-- Vorkommastellen des ersten -- Einganges bis auf MSB in1_vk: IN std_logic_vector(14 downto 0);-- Nachkommastellen des ersten Eingangesin1_nk: IN std_logic_vector(7 downto 0);

Page 9: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

9SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 1 0 1 = 0 0 0 0

In1 In2 Ergebnis

0 0 0 00, , ,

Bit zur Überlauferkennung

Ergebnis ist doppelt so lang wie Eingabe

Page 10: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

10SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 1 0 1 =

In1 In2

•Wenn niedrigstes Bit von In2 gesetzt ist, addiere In1 zu Ergebnis (von links)

0 0 1 1

Ergebnis

0 0 0 00 ,,,

Page 11: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

11SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 1 0 =

In1 In2

•Verschiebe In2 nach rechts

•Verschiebe Ergebnis nach rechts

0 0 0 1

Ergebnis

1 0 0 0

Shift Logical Right Shift Logical Right

0, , ,

Page 12: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

12SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 1 0 =

In1 In2

•Fange wieder von vorne an (führe Addition hier 4 mal, bei VHDL-Einheit insgesamt 23 Mal aus)

•Keine Addition wenn In2(0) = 0

0 0 0 1

Ergebnis

1 0 0 00, , ,

Page 13: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

13SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 0 1 =

In1 In2

0 0 0 0

Ergebnis

1 1 0 0

Shift Logical Right

0

Shift Logical Right

, , ,

Page 14: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

14SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 0 1 =

In1 In2

0 0 1 1

Ergebnis

1 1 0 00, , ,

Page 15: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

15SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 0 0 =

In1 In2

0 0 0 1

Ergebnis

1 1 1 0

Shift Logical Right Shift Logical Right

0, , ,

Page 16: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

16SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 0 0 =

In1 In2

0 0 0 1

Ergebnis

1 1 1 00, , ,

Page 17: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

17SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 0 0 =

In1 In2

0 0 0 0

Ergebnis

1 1 1 1

Shift Logical Right

0

Shift Logical Right

, , ,

Page 18: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

18SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Multiplizieren

0 0 1 1 * 0 0 0 0 =

In1 In2

0 0 0 0

Ergebnis

1 1 1 10, , ,

Effektive Ausgabe

Page 19: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

19SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Ausgabe anpassen

• Falls Ergebnis negativ ist, Bildung des Zweierkomplements

Page 20: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

20SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Ausgabe

• Anlegen des internen Ergebnissignals an äußere Pins

• Anlegen der Flagsignale (Overflow)• Setzen des Ready-Flags

Page 21: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

21SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Eckdaten Multiplizieren

• Rechendauer– Genau 23 Takte für die eigentliche Multiplikation

– 2 Takte für Wechsel Reset-Zustand Einlesen und Multiplizieren Ausgabe

– 3 Takte für Einlesen, Ausgabe anpassen und Ausgabe Es werden genau 28 Takte benötigt (außer wenn In = 0 oder

In2 = 0) (≈ 280 ns bei Taktdauer von 10 ns)

• Es können Zahlen zwischen –32‘767,99609375 = -(215-2-8) und 32‘767,99609375 = 215-2-8 ein- und ausgegeben werden

Page 22: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

22SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Eckdaten Multiplizieren (2)

• Flags– zero: Zeigt an, dass das Ergebnis echt Null ist (weil

eine der Eingabezahlen Null war)

– ovr: Ergebnis hat nicht in Ausgabevektor gepasst, es ist ein Überlauf aufgetreten

– rdy: Wird gesetzt, wenn Chip Rechnung beendet hat

Page 23: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

23SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Divisionsbaustein

Page 24: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

24SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Divisionsbaustein

Page 25: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

25SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Nenner anpassen

• Sicherungskopie des ursprünglichen Nenners anlegen

• Nenner wird so lange nach links geschoben, bis es keine führenden Nullen mehr gibt

0 1 0 1

In2

,

Page 26: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

26SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Nenner anpassen

• Nenner wird so lange nach links geschoben, bis es keine führenden Nullen mehr gibt

0 1 0 1

In2

,Auf 1 testen

Page 27: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

27SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Nenner anpassen

• Nenner wird so lange nach links geschoben, bis es keine führenden Nullen mehr gibt

1 0 1 0

In2

,

Shift Logical Left

Page 28: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

28SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Nenner anpassen

• Nenner wird so lange nach links geschoben, bis es keine führenden Nullen mehr gibt

1 0 1 0

In2

,Test auf 1 erfolgreich, fertig

Page 29: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

29SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

1 1 1 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

0 0 0, , ,0 0 0

1 0 1 0, 0-

In1 ist ein Bit länger, um festzustellenob Subtraktion Überlauf verursacht hat

In1 und In2 sind haben doppelt so viele Nachkommastellen,damit das Ergebnis bis in die letzte Stelle genau ist

0

Bei der Subtraktion wird eine0 an In2 angehängt, um gleicheBreite wie In1 zu haben

Page 30: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

30SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

1 1 1 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

0 0 1, , ,0 0 0

1 0 1 0, 0- 0

0 1 0 0,0 0

Übertragsbit ist 0 Subtraktion erfolgreich

Ergebnisbit setzen

Page 31: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

31SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

0 0 1, , ,0 0 0

1 0 1 0, 0- 0

0 1 0 1

Vergleichen von untersten Bitsvon In2 mit Original-EingabevektorIn2

Ungleich weiter machen

Page 32: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

32SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

0 0 1, , ,0 0 0

0 1 0 1, 0- 0

In2 rechts schieben

Ergebnis links schieben

Page 33: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

33SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

0 1 0, , ,0 0 0

0 1 0 1, 0- 0

1 1 1 1,1 0

Übertragsbit ist 1 Subtraktion nicht erfolgreich

Ergebnisbit löschen

In1 in ursprünglichem Zustand belassen

Page 34: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

34SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

0 1 0, , ,0 0 0

0 1 0 1, 0- 0

0 1 0 1Vergleichen von untersten Bitsvon In2 mit Original-EingabevektorIn2

Ungleich Weiter machen

Page 35: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

35SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

1 0 0, , ,0 0 0

0 0 1 0, 1- 0

In2 rechts schieben

Ergebnis links schieben

Page 36: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

36SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

1 0 1, , ,0 0 0

0 0 1 0, 1- 0

0 0 0 1,0 1

Übertragsbit ist 0 Subtraktion erfolgreich

Ergebnisbit setzen

Page 37: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

37SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Dividieren

0 1 0 0 / 0 1 0 1 =

In1 In2

0

Ergebnis

1 0 1, , ,0 0 0

0 0 1 0, 1- 0

0 1 0 1Vergleichen von untersten Bitsvon In2 mit Original-EingabevektorIn2

Gleich Fertig

Page 38: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

38SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Eckdaten Dividieren

• Rechendauer– Max. 23 Takte um den Nenner nach links zu schieben

– Max. 3 * (22 + 8+1) Takte für die Subtraktionen und Vergleiche

– 4 Takte für Einlesen externer Signale und Ausgabe interner Signale

Es werden für die Division maximal 121 Takte benötigt (≈ 1,21 µs bei Taktdauer von 10 ns)

• Es können Zahlen zwischen –32‘767,99609375 = -(215-2-8) und 32‘767,99609375 = 215-2-8 ein- und ausgegeben werden

Page 39: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

39SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Eckdaten Dividieren (2)

• Flags– zero: Zeigt an, dass das Ergebnis echt Null ist (weil

Zähler Null war)

– dze: Fehlerflag für Null im Nenner

– ovr: Ergebnis hat nicht in Ausgabevektor gepasst, es ist ein Überlauf aufgetreten (kann vorkommen, da mit Brüchen gerechnet wird)

– rdy: Wird gesetzt, wenn Chip Rechnung beendet hat

Page 40: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

40SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Zeiteinteilung

• Grobanalyse

• Feinanalyse

• Pflichtenheft

• Spezifikation

• Implementierung Multiplikationseinheit

• Implementierung Divisionseinheit

• Testdokumentation

• Vortrag

• Ausarbeitung

15 Treffen

Page 41: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

41SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Weitere Informationen

Titel und Datum

Kurze Erläuterung

Versionsverwaltung mittels CVS

Organisation mittels eigener Webseite

Page 42: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

42SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Probleme

• Zahlendarstellung• Zero-Flag

Page 43: 1SS 07 Fakultät für Informatik der Technischen Universität München Vortrag: Praktikum Technische Informatik Von Jonas Zaddach, Johannes Kohl und Marco

43SS 07

Fakultät für Informatik

der Technischen Universität München

Vortrag: Praktikum Technische Informatik

Fragen?