signed multiplication

P

priya

hi all
Y<=Y+(A*B-C*D);
where y,A,B,C,D are STD_LOGIC_VECTOR form.
here A,B,C,D are all variables
since by default STD_LOGIC_VECTOR is Unsigned .
so the result which i m getting is not what is required. since its
taking the unsigned equivalent of A*B and C*D while subtracting
reply soon
best regards,
priya
 
N

Niv

priya said:
hi all
Y<=Y+(A*B-C*D);
where y,A,B,C,D are STD_LOGIC_VECTOR form.
here A,B,C,D are all variables
since by default STD_LOGIC_VECTOR is Unsigned .
so the result which i m getting is not what is required. since its
taking the unsigned equivalent of A*B and C*D while subtracting
reply soon
best regards,
priya

Assuming you're using ieee.numeric_std, you have to cast SLV's into
SIGNED or UNSIGNED before doing the math, then cast back to a SLV

Y <= STD_LOGIC_VECTOR(UNSIGNED(Y) + ((UNSIGNED(A) * (UNSIGNED(B)) -
(UNSIGNED(C) * UNSIGNED(D)) )

(Replace UNSIGNED with SIGNED where appropriate. Why not declare A,B,
C & D as UNSIGNED if they not ports?)

That's what I'd try anyway,

Kev P.
 
P

priya

hi
i had taken y,A,B,C,D are STD_LOGIC_VECTOR
n tried wat u said
but ended up wwith failure
one more thing i want 2 ask i m using max n min function
for that i had included NUMERIC_STD library.
still i m ending up with errors
best regards,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top