سلام من یه پروژه آز معماری دارم با عنوان : طراحی یه شیفت رجیستر منطقی و حسابی و چرخشی با ورودی 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'event and clk = '1') then
case SEL is
when "000" => Temp <= std_logic_vector(M);
when "001" => Temp <= std_logic_vector(M srl 1);
when "010" => Temp <= std_logic_vector(M ror 1);
when "100" => 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 - "D:/Sahar/ShiftRegister2/prj/code.vhd" 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