I'm assuming doing this on platforms without a hardware multiplier or a multiply instruction. Otherwise multiplying with a constant is the same as multiplying with a variable.
In which case, I don't get it. 2's complement is as easy to multiply as it is to add. There's no need to convert it to signed digit first.
Lets look at some examples of 2's complement multiplication of negative numbers, we'll stick to 8 bits to make it short:
-1 * 2 = -2 11111111 (-1, shift left by 1 to multiply by 2) 11111110 (equals -2)
-5 * 4 = -20 11111011 (-5 shift left by 2 to multiply by 4) 11101100 (equals -20)
-3 * 5 = -15 11111101 (-3 shift left by 2 to multiply by 4) 11110100 (equals -12 add -3) 11110001 (equals -15)
In none of the examples above do I need to convert to signed digit. If multiplying by a negative constant, then simply use the positive version of the constant and 2's complement the variable before multiplying (in effect multiplying it by -1):
1 * -2 = -2 00000001 (1, 2's complement to multiply by -1) 11111111 (-1, shift left to multiply by 2) 11111110 (equals -2)
-1 * -2 = 2 11111111 (-1, 2's complement to multiply by -1) 00000001 (1, shift left to multiply by 2) 00000010 (equals 2)
And of course if you do want the double size product, just remember that the 2-s compliment number is the same as (-2^n)+unsignedNum, so you can just subtract the other number in the upper half of the product:
That is, if you have an unsigned product A*B=[C:D] with A, B, C and D all n bits long, if A is signed and B is not, the product is [C-B:D] and if both are signed, then it is [C-A-B:D].