I'm using an AD SHARC-DSP (32 bit fixed/float) and I'm implementing an IIR-filter in fixed pont data format. My design needs more than 32x32 bit MAC for accurate calculations. The best choise could be 64x64 multiplication/mac. But I can't get my multiplication algorithm working. I use something like:
I see it must work and I tried it. The only problem is taking signed/unsigned while multiplication of parts, so the result doesn't match the theoretical 128 bit value (the last 64 bits).
only x1.y1 is signed multipication and others are unsigned and the last multipication result is 64-bit so if you shift it left the sign bit goes to 64 bit and the result is ok.
z =
x0.y0(unsigned) +
x1.y0<<32(unsigned) +
y1.x0<<32(unsigned) +
x1.y1<<64 (signed) ? And then "last multipication result is 64-bit so if you shift it left the sign bit goes to 64 bit", do you mean x1.y1?