Вот как более правильно описывать сдвиговые регистры:
Код
library ieee;
use ieee.std_logic_1164.all;
entity shift_reg is
port
(
clk : in std_logic;
data_in : in std_logic;
data_out : out std_logic
);
end entity;
architecture RTL of shift_reg is
signal reg : std_logic_vector(7 downto 0) := (others => '0');
begin
shift_reg_proc : process(clk)
begin
if (rising_edge(clk)) then -- по каждому переднему фронту
reg <= data_in & reg(7 downto 1); -- Сдвинем данные вправо на 1 разряд.
end if;
end process;
data_out <= reg(0);
end architecture;
Ваше описание ужас.
Я специально скинул сдвиговый регистр вправо. Разберетесь и поймете как он работает, то написать сдвиговый регистр влево - дело 15 секунд. За вас тут никто лабораторные делать не будет. Для этого есть другая тема : "Предлагаю работу".