Es como esto:
use ieee.numeric_std.all;
...
signal din :std_logic_vector (15 downto 0); -- must be "downto 0"
signal sel :std_logic_vector (3 downto 0);
...
dout <= din(conv_integer(sel));
Espero que ayude!
Adición:
Si necesitas un mux de varios bits, entonces ...
type data_bus_array is array(7 downto 0) of std_logic_vector (31 downto 0);
signal din :data_bus_array;
signal dout :std_logic_vector (31 downto 0);
signal sel :std_logic_vector (3 downto 0);
...
dout <= din(conv_integer(sel));
Aquí es donde VHDL se vuelve un poco ruidoso, ya que a veces no es "compacto" rellenar esa matriz de bus de datos solo para hacer un mux simple. Pero, ahí lo tienes ...