Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > VHDL > Multiply using shift, for signed numbers

Thread Tools

Multiply using shift, for signed numbers
Posts: n/a
I'm trying to achieve multiply using one or more shift operations. For
A = 5*B can be written as
A = 4*B + B or
A = (B sll 2) + B

Now, B is a signed number, so when I do (B sll 2), the shift operation
doesn't discriminate the sign bit, and I end up losing it (falls off to
the left side).

One solution would be to save the MSb of B, perform 'sll' on the rest,
and concatenate them together. If B were signed(7 downto 0) :
A = ((B(7) & (B(6 downto 0) sll 2)) + B;

Is there a better way to do this, perhaps some built-in function I
couldn't find?

I'm thinking that there has to be an easier way. I'm not concerned
about the overflow (yet). Can anyone help? I'm not that fluent in
VHDL. Thank you.

Reply With Quote
Posts: n/a
I think you misunderstood something. signed is two's complement, so
using 8 bits you have

2: 00000010
1: 00000001
0: 00000000
-1: 11111111
-2: 11111110
-3: 11111101
-4: 11111100

if you shift left, sign bits won't fall off.


Reply With Quote
Posts: n/a
Having thought a bit on this topic, the sll operator does not multiply
by 2**n on 2s complement negative numbers. Since you want to use Logic
Half- and fulladdres, 2s complement should be the representation of
choice. (Note: If you use a sign bit and a mantissa, you have to
redefine the +/- operations as well).

So you have to convert a negative number to a positive, shift, add and
invert it again, like this (without test)

variable highbit: std_logic;
if highbit='1' then
end if;
Btimes5:=B ssl 4 + B;
if highbit='1' then
end if;


Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
Convert a signed binary number into a signed one ? Rob1bureau VHDL 1 02-27-2010 12:13 AM
signed(12 downto 0) to signed (8 downto 0) kyrpa83 VHDL 1 10-17-2007 06:58 PM
VHDL and signed numbers salman sheikh VHDL 3 12-20-2004 05:05 PM
Representing signed numbers in VHDL Kingsley Oteng VHDL 0 05-04-2004 02:00 AM
Re: (CSS) Aligning signed numbers in cells Jukka K. Korpela HTML 0 08-10-2003 06:24 AM