1ss 07 fakultät für informatik der technischen universität münchen vortrag: praktikum technische...
TRANSCRIPT
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
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
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
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)
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.
6SS 07
Fakultät für Informatik
der Technischen Universität München
Vortrag: Praktikum Technische Informatik
Grobe Funktionsweise des Multiplizierers
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
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);
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
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 ,,,
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, , ,
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, , ,
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
, , ,
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, , ,
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, , ,
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, , ,
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
, , ,
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
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
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
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
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
23SS 07
Fakultät für Informatik
der Technischen Universität München
Vortrag: Praktikum Technische Informatik
Divisionsbaustein
24SS 07
Fakultät für Informatik
der Technischen Universität München
Vortrag: Praktikum Technische Informatik
Divisionsbaustein
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
,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
42SS 07
Fakultät für Informatik
der Technischen Universität München
Vortrag: Praktikum Technische Informatik
Probleme
• Zahlendarstellung• Zero-Flag
43SS 07
Fakultät für Informatik
der Technischen Universität München
Vortrag: Praktikum Technische Informatik
Fragen?