Ich versuche gerade einen digitalen Multiplizierer zu programmieren, der zwei positive, vier-Bit-breiten Zahlen im Binärsystem multiplizieren soll. Frage:
Wie oft wird die Multiplikationsschleife bei der Multiplikation zwei vierstelliger Zahlen durchlaufen?
Wie groß ist der Ergebnisvektor zu wählen, damit selbst die Multiplikation der größtmöglichen Werten keinen Überlauf verursacht? 4,8..oder 16Bit?
Re: Multiplikationsschleife
Hallo Student,
mit einer 4-bit breiten positiven Zahl lassen sich die Werte 0 bis 15 darstellen, d.h. mit einer Multiplikation liegt das Ergebnis irgendwo zwischen 0 und 225 -> d.h. Du brauchts 8 bit für die Darstellung des Ergebnisses (n-Bit mal n-Bit benötigt immer 2n-Bit).
> Wie oft wird die Multiplikationsschleife durchlaufen ... ??? Hängt davon ab, wie Du die Multiplikation implementierst. Bei 4 Bit kann man eine Multiplikation durchaus direkt in einem Taktzyklus ausführen, also "keine" Schleife - nur ein Durchlauf. Will man beispielsweise zwei 16-Bit-Vektoren multiplizieren, kann man das z.B. durch 4 Multiplikationen machen, die unteren beiden Bytes, die oberen beiden Bytes und die Paare jeweils über Kreuz. Das ganze noch entsprechent an die richtige Stelle geschoben und addiert.
Man kann allerdings auch die eine Zahl immer um eine Stelle nach links schieben (entspricht einer Multiplikation mit 2) und auf das Ergebnis aufaddieren, abhängig davon, ob das zugehörige Bit in der anderen Zahl =1 ist oder nicht. Dann würde man bei 4*4 vier Multiplikationen (und 3 Shift und 3 Add) benötigen, bei 8*8 entsprechend 8 Multiplikationen usw. (Genaugenommen sind's nur 3 (bzw. 7) Multiplikationen, da der erste Wert nur eine Multiplikation mit 1 (oder 0) ist, also nicht als Multiplikation ausgeführt werden muss.)