• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

YAHT <Yet Another Homework Thread>

CountZero

Golden Member
I am implementing and laying out a Radix-4 modified Booth signed multiplier. Its based on the one found in figure 10.79 of Weste and Harris CMOS VLSI Design.

Anyways it seems to work except when there is a 1 in the MSB of the number not booth encoded (Y).

For example if
Y= 1 0000
X= 0 0000

Then all the partial products will be 00 0000 (the extra bit of space is for possible shifting). And the Mi of every partial product is 0. So Figure 10.79 has you combine partial products as follows:

000<ebar0> <e0> <e0> <pp0> == line 1
01<ebar1> <pp1> 0 <M0> == line 2
<ebar2> <pp2> 0 <M1> 00 == line 3
where ei = (MSB of Y) XOR (Mi); and ebari = NOT(ei);

so if you use the example above you should end up getting a result of all zeroes but if you follow those rules you add the following:
000 1100 0000 == line 1
010 0000 0000 == line 2
000 0000 0000 == line 3

which gives:

010 1100 0000

What am I missing? I know e and ebar are suppose to be doing sign extension but they don't seem to work in this example. Like I said mine works with zero in the MSB (the one I'm doing is 9 bit instead of 5 as well).
 
Back
Top