Registro Universal: Error al compliar

Hola que tal, en esta ocasión estoy haciendo un registro universal, en el estoy utilzando las sentencias de desplazamiento logico (sll y srl), estoy seguro de que el programa (la logica) esta bien, pero hay un error que no se a que se debe, incluso ya busqué por la red pero no encontre nada que me pudiera ayudar. El codigo es el siguiente:

Código:
library ieee;
use ieee.std_logic_1164.all;

entity registro is
   port(clr, clk, CI, CD: in std_logic;
        sel: in std_logic_vector(1 downto 0);
		dato: inout std_logic_vector(7 downto 0);
		salida: inout std_logic_vector(7 downto 0)
		);
end entity;

architecture a_registro of registro is begin
   process(clr, clk, sel) begin
      if(clr = '1') then
	     salida <= "00000000";
	  elsif(clk'event and clk = '1') then
	     if(sel = "00") then
		    salida <= dato;
		 elsif(sel = "01") then
		    salida <= salida;
		 elsif(sel = "10") then
		    salida <= to_stdlogicvector(to_bitvector(dato)srl 1);
			dato <= CD & dato(6 downto 0);
		 else
		    salida <= to_stdlogicvector(to_bitvector(dato)sll 1);
			dato <= CI & dato(6 downto 0);
		 end if;
	  end if;
   end process;
end architecture;

Y los errores al momento de la compilacion son estos:


.
.
.
Device fitting (pla2jed)
Error: Logic equation for signal dato(7).AR is redefining a banked expression.
Error: Logic equation for signal dato(6).AR is redefining a banked expression.
Error: Logic equation for signal dato(5).AR is redefining a banked expression.
Error: Logic equation for signal dato(4).AR is redefining a banked expression.
Error: Logic equation for signal dato(3).AR is redefining a banked expression.
Error: Logic equation for signal dato(2).AR is redefining a banked expression.
Error: Logic equation for signal dato(1).AR is redefining a banked expression.
Error: Logic equation for signal dato(0).AR is redefining a banked expression.
.
.
.


Lo unico que puedo imaginar es que el problema está en que no cabe en la GAL por que los errores aparecen al momento de hacer el DEVICE FITTING asi que ya traté de reducir el numero de bits y aun no funciona, la unica forma de hacerlo funcionar es quitando las lineas de codigo siguientes:

salida <= to_stdlogicvector(to_bitvector(dato)srl 1);
salida <= to_stdlogicvector(to_bitvector(dato)sll 1);


Espero me puedan echar una mano con esto, no se por donde mas corregirle. GRacias.



Ha sido solucionado.
 
Atrás
Arriba