Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
9 years ago

Resize function not working

I'm trying to use the resize function in order to convert a signed 12 bit value to a 31 bit value. But whenever I'm using the resize function the output value is 0. But when I'm manually converting it, it's getting converted correctly. Can anyoone please help me with this ?

Thanks,

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    I'm trying to use the resize function in order to convert a signed 12 bit value to a 16 bit value. But whenever I'm using the resize function the output value is 0. But when I'm manually converting it, it's getting converted correctly. Can anyoone please help me with this ?

    Thanks,

    --- Quote End ---

    you didn't show your code. if it is std_logic_vector you need to define if it is resized as signed or unsigned so that negative values are filled with ones.

    data_resized <= resize(signed(data),18); -- assuming data is 16 bits std_logic_vector
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    you didn't show your code. if it is std_logic_vector you need to define if it is resized as signed or unsigned so that negative values are filled with ones.

    data_resized <= resize(signed(data),18); -- assuming data is 16 bits std_logic_vector

    --- Quote End ---

    data_in : IN std_logic_vector(11 downto 0); ( including the signed bit )

    -- converting to 31 bit

    signal l_data_in : signed(30 downto 0);

    l_data_in <= resize(signed(data_in),31);

    I was using the same thing that you posted, but all my converted values were 0 when I checked in signaltap
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    data_in : IN std_logic_vector(11 downto 0); ( including the signed bit )

    -- converting to 31 bit

    signal l_data_in : signed(30 downto 0);

    l_data_in <= resize(signed(data_in),31);

    I was using the same thing that you posted, but all my converted values were 0 when I checked in signaltap

    --- Quote End ---

    I can assume your problem of zeros is not related to resize function failure. resize is simple function that extends the sign bit.