Forum Discussion

KBill3's avatar
KBill3
Icon for New Contributor rankNew Contributor
6 years ago

failed to evaluate call to operator ""&""

Hallo everyone,

i need to shift a signal " mantissa_D" with a value, this value "D_shift" is the different between exponent of two floating point number (Q, D). Unfortunately, i got an error "failed to evaluate call to operator ""&"" "

, because "D_shift" is declared as a variable (it is not possible to declare it as constant). here is what i did:

--------------------------

variable mantissa_Q: unsigned (23 downto 0);

variable mantissa_D: unsigned (23 downto 0);

variable zeros : unsigned (23 downto 0);

variable D_shift: integer;

variable Q_shift: integer;

--------------------------

D_shift:= (exp_Q - exp_D);

mantissa_D := unsigned (zeros (23 downto 23 - D_shift+1)) & mantissa_D(23 downto D_shift);

can someone help me to solve this issue?

Thanks in advance.

1 Reply

  • sstrell's avatar
    sstrell
    Icon for Super Contributor rankSuper Contributor

    I think you're missing an outer set of parentheses.

    mantissa_D := unsigned ((zeros (23 downto 23 - D_shift+1)) & mantissa_D(23 downto D_shift));

    #iwork4intel