I now got this:
I only need to sign extend it, any tips to do that?
mux:PROCESS(fftexp,fftvalid)
-- VARIABLE sel : STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
-- sel := s1 & s0; -- concatenate s1 and s0
if (fftvalid = '1') then
CASE fftexp IS
WHEN "110011" =>
full_range_real_out(26 downto 13) <= fftreal; --sll 13; -- -13
full_range_imag_out(26 downto 13) <= fftimag; --sll 13; -- -13
WHEN "110100" =>
full_range_real_out(25 downto 12) <= fftreal; --sll 12; -- -12
full_range_imag_out(25 downto 12) <= fftimag;-- sll 12; -- -12
WHEN "110101" =>
full_range_real_out(24 downto 11) <= fftreal;-- sll 11; -- -11
full_range_imag_out(24 downto 11) <= fftimag; --sll 11; -- -11
WHEN "110110" =>
full_range_real_out(23 downto 10) <= fftreal;-- sll 10; -- -10
full_range_imag_out(23 downto 10) <= fftimag;-- sll 10; -- -10
WHEN "110111" =>
full_range_real_out(22 downto 9) <= fftreal; --sll 9; -- -9
full_range_imag_out(22 downto 9) <= fftimag; -- sll 9; -- -9
WHEN "111000" =>
full_range_real_out(21 downto 8) <= fftreal; --sll 8; -- -8
full_range_imag_out(21 downto 8) <= fftimag; --sll 8; -- -8
WHEN "111001" =>
full_range_real_out(20 downto 7) <= fftreal; --sll 7; -- -7
full_range_imag_out (20 downto 7)<= fftimag; --sll 7; -- -7
WHEN "111010" =>
full_range_real_out(19 downto 6) <= fftreal; --sll 6; -- -6
full_range_imag_out (19 downto 6) <= fftimag; --sll 6; -- -6
WHEN "111011" =>
full_range_real_out(18 downto 5) <= fftreal; --sll 5; -- -5
full_range_imag_out(18 downto 5) <= fftimag; --sll 5; -- -5
WHEN "111100" =>
full_range_real_out(17 downto 4) <= fftreal; --sll 4 -- -4
full_range_imag_out(17 downto 4) <= fftimag; --sll 4; -- -4
WHEN "111101" =>
full_range_real_out(16 downto 3) <= fftreal; --sll 3; -- -3
full_range_imag_out (16 downto 3)<= fftimag; --sll 3; -- -3
WHEN OTHERS =>
END CASE;
end if;
END PROCESS mux;