VHDL-Forum - Anfänger

Multiplikationsschleife

Multiplikationsschleife

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.)

Gruss,

Alex

Re: Multiplikationsschleife

Vielen Dank Alex. Das Problem hat sich erledigt.