Hi tricky,
--- Quote Start ---
Signed and Unsigned arithmatic is identical.
--- Quote End ---
I am afraid they are not. not only MSB meaning is different, addition/subtraction are similar(taking into account carry bit difference).
multiplication/div are different.
--- Quote Start ---
the only difference is that signed arithmatic has the sign extended forward. This is why it is a parameter, not an input signal to select signed or unsigned.
--- Quote End ---
actually the document referred to, does say signa signb are inputs and not parameters.
--- Quote Start ---
so for example:
take the following 4 bit number:
1011 = 11 or -5
if this was put into an 8 bit multiplier (or 18 bits in the case of a cyclone 2), the number becomes:
00001011 for unsigned
11111011 for signed
--- Quote End ---
why do you think 1011 is negative or positive to start with. The multiplier inputs are meant to fully represent the range of bitwidth in each case, no room for sign extention...
--- Quote Start ---
You can do real time selection of signed or unsigned yourself, and therefor only use 1 mulitplier. What you have to do is set the signed/unsigned parameter to unsigned and then do all the sign extension yourself (or preferably, dont use the lpm library at all, just imply it). Rmember that all inputs then have to become 18 bit numbers. But it can be done quite easily.
--- Quote End ---
I am not sure?