entity decalage is
   port(hor,entre : in bit;
        sort : out bit_vector (7 downto 0)) ;
end decalage;

architecture registre of decalage is
   signal vecteur : bit vector ( 7 downto 0) ;
-- définition de la fonction,
-- ici dans l'architecture

function decale (e: in bit; v in bit_vector) return    bit_vector is
variable s : bit_vector(v'left downto 0) ;
begin
   for i in 1 to v'left loop
      s(i-1) := v(i);
   end loop ;
-- ou, sans mettre de boucle :  
-- s(v'left-1 downto 0) := v(v'left downto 1);
   s(v'left) := e;
   return s;
end decale;
-- fin de la fonction
begin
sort <= vecteur;
process
begin
   wait until hor = '1';
      vecteur <= decale (entree, vecteur);
end process ;
end registre ;