Koen_Be3840 wrote
the first c=0/1 can be used to store the lower 16-bit array of the result or the high 16-bit array
To get the upper 16 bits will require a full 16x16 multiplier generating a 32-bit product.
For unsigned multiplication, this has the obvious structure
AAAA
BBBB
--------
NNNN
NNNN
NNNN
NNNN
--------
XXXXXXXX
This structure is a bit more complicated for 2's compliment multiplication. Note that 's' is a sign extension bit—a copy of the partial product's sign bit. Also note that the final partial product is subtracted.
AAAA
BBBB
--------
ssssNNNN
+ sssNNNN
+ ssNNNN
-(sNNNN )
--------
XXXXXXXX
With some not so obvious manipulation, most of the extra adders can be eliminated. 'Ñ' is ~N.
AAAA
BBBB
--------
1ÑNNN
ÑNNN
ÑNNN
1NÑÑÑ
--------
XXXXXXXX
--Mark