سلام من یه پروژه آز معماری دارم با عنوان : طراحی یه شیفت رجیستر منطقی و حسابی و چرخشی با ورودی 8 بیتی و خروجی 8 بیتی و کنترلر 3 بیتی برنامه ای که نوشتم ارور میده ... خطای برنامه را نمیفهمم و نمیتونم رفعش کنم ... لطفا کمکم کنید ... وقت ندارم و باید تا آخر شب تحویل بدم و گرنه میفتم این درسا و بدبخت میشم .... این برنامه :


کد:
	
	library IEEE;
	    use IEEE.std_logic_1164.all;
	    use IEEE.numeric_std.all;
	    use IEEE.std_logic_unsigned.all;
	    
	    -- Uncomment the following library declaration if using
	    -- arithmetic functions with Signed or Unsigned values
	    --use IEEE.NUMERIC_STD.ALL;
	    
	    -- Uncomment the following library declaration if instantiating
	    -- any Xilinx primitives in this code.
	    --library UNISIM;
	    --use UNISIM.VComponents.all;
	    
	    entity vhdl is
	    Port ( Din : in STD_LOGIC_VECTOR (7 downto 0);
	    Dout : out STD_LOGIC_VECTOR (7 downto 0);
	    clk : in STD_LOGIC;
	    SEL : in STD_LOGIC_VECTOR(2 downto 0));
	    
	    end vhdl;
	    
	    architecture Behavioral of vhdl is
	    
	    signal M : unsigned(7 downto 0);
	    signal Mb: bit_vector(7 downto 0);
	    signal Temp: std_logic_vector(7 downto 0);
	    signal Temp1: std_logic_vector(7 downto 0);
	    signal Temp2: std_logic_vector(7 downto 0);
	    
	    
	    begin
	    --M <= unsigned(Din);
	    process (clk,Din)
	    
	    begin
	    M <= unsigned(Din);
	    Mb <= To_bitvector(Din);
	    if (clk&#39;event and clk = &#39;1&#39;) then
	    case SEL is
	    when &quot;000&quot; => Temp <= std_logic_vector(M);
	    
	    when &quot;001&quot; => Temp <= std_logic_vector(M srl 1);
	    
	    when &quot;010&quot; => Temp <= std_logic_vector(M ror 1);
	    
	    when &quot;100&quot; => Temp <= To_stdLogicVector(bit_vector(Mb sra 1));
	    
	    when others => Temp <= std_logic_vector(M);
	    
	    end case;
	    Dout <= Temp;
	    M <= unsigned(Temp);
	    end if;
	    
	    
	    end process;
	    
	    end Behavioral;
اینم ارور برنامه :

ERROR:Xst:827 - &quot;D:/Sahar/ShiftRegister2/prj/code.vhd&quot; line 53: Signal M cannot be synthesized, bad synchronous description. The description style you are using to describe a synchronous element (register, memory, etc.) is not supported in the current software release