Fachgebiet Rechnerarchitektur Fachbereich Informatik 6. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Aufgabe 6.1: Multiplikation von positiven Dualzahlen Berechnen Sie gemäß folgendem Beispiel die Multiplikationen. 1 0 1 0 1010 * 1101 = 10000010 * 1 1 0 1 0 1 0 + 1 0 1 1 0 0 0 = 1010 = 1310 0 1 0 = 13010 1010 *1101 = = –610 –310 1 0 1 0 0 0 1 0 0 0 0 a) 1001 * 0010 b) 1101 * 1001 c)10101 * 0100 Aufgabe 6.2: Multiplikation von 2K-Zahlen Multiplizieren Sie die folgenden 2K-Zahlen. Beispiel: 1010 * 1101 = 10010 1010 0000 1010 1010 10000010 +0110 +0011 100010010 a) 1101 * 1001 Seite 1 von 3 Compl. Compl. = 1810 Aufgabe 6.3: Division Dividieren Sie die folgenden Zahlen mit den beiden dargestellten Methoden. Vergleichsmethode: 0 1 0 ( – 0 1 0 1 0 – 0 1 0 – 0 0 1 0 0 1 1 0 ( – 0 0 0 ) 0 1 1 0 1 1 1 1 0 ÷0 1 0 1 = nicht möglich 1 1 0 0 0 1 ) 0 0 0 1 1 0, Rest 0 1 0 0 0 passt passt nicht möglich 1 1 0 Rest Methode ohne Rückstellen des Restes: mit D = 0101, D’ = 1011 0 +1 1 + 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 +1 0 1 0 0 +1 1 +0 1 0 0 1 0 ÷0 1 0 1 = 0 1 1 0, Rest 0 1 0 0 +D’, Test auf Overflow im ersten Schritt 0 negativ Quotientenbit 0, kein Overflow 1 +D 1 1 positiv Quotientenbit 1 1 1 +D’ 1 0 0 positiv Quotientenbit 1 0 1 1 +D’ 1 1 1 negativ Quotientenbit 0 1 0 1 +D für positiven Rest-Wert 1 0 0 Rest a) 0101010 ÷ 0101 b) 0101010 ÷ 0110 Aufgabe 6.4: IEEE 754 – Gleitkommadarstellung, Multiplikation Hinweis: Die tiefgestellte Zahl bezeichnet die Zahlenbasis, falls diese nicht aus dem Zusammenhang ersichtlich ist. Gegeben sind die beiden Gleitkommazahlen in einfacher Genauigkeit: X = 1 1001 0101 111 0010 0000 0000 0000 0000 Y = 1 1001 0100 110 0001 1000 0000 0000 0000 a) Die beiden Gleitkomma-Zahlen X und Y sollen multipliziert werden (P = X * Y). Führen Sie die Multiplikation aus. Aufgabe 6.5: Serienparallele Multiplikation a) Führen Sie für die Zahlen x = -4 und y = 6 die serienparallele Multiplikation durch. b) Ergänzen Sie das Verilog HDL Programm, welches zwei vorzeichenbehaftete 4-BitZahlen serienparallel multipliziert. Seite 2 von 3 module mult(x, y, p1, p2, pv, xv, yv); parameter n = 4; input [n-1 : 0] x, y; input xv, yv; output reg[n-1 : 0] p1, p2; output pv; assign pv = …. always @(x or y) begin end endmodule module testbed(p1, p2, pv); reg [3 : 0] x, y; reg xv, yv; output [3 : 0] p1, p2; output pv; mult test(x, y, p1, p2, pv, xv, yv); `timescale 1ns/1ns initial begin x = 4'b0011; y = 4'b0100; xv = 0; yv = 0; #5 x = 4'b0111; y = 4'b0100; xv = 1; yv = 0; #5 x = 4'b0111; y = 4'b1100; xv = 0; yv = 0; end initial #30 $finish; initial begin $dumpfile("mult.vcd"); $dumpvars(0); end endmodule c) Simulieren Sie Ihre Schaltung und weisen Sie die korrekte Funktionsweise nach. Seite 3 von 3