Hello all,

I am attempting to expand the 18x18 multipliers as provided in the xilinx Spartan 3 series. I followed the proposed implemention of expanding the multipliers as described in the xapp467.pdf app note (figure 5). However, I arrived at an impasse: When the operand is splitted up in 2 or more partial operands of 18 bits, the sign-extension of the operand does not carry over -I'll expalin: E.g Lets say we want to multiply (-1)in18bitsx(1)in 22bits.The 22 bit operand is splitted in 2 4-bit(lsb) and 18-bit(msb) operands. Thus, when we multiply the lsb part: 3FFFFh(=-1)x1h=3FFFFFh(=-1), we obtain a non-nil answer. However, when we multiply the msb part:

3FFFFh(=-1)x00000h=000000000h, we obtain a nil answer. When the 2 partial products are added and the bits properly weighed as to constructed the final product, the msb bit(sign bit) will be 0. Consequently, resulting in a positive product when a negative one was expected (-1 was expected, FFFFFFFFFFh.)I feel I must be doing something wrong.. Please advise

-Roger