楼主:空白 时间:2015-4-29 08:45

错误提示:Error (10327): VHDL error at add.vhd(76): can't determine definition of operator ""/"" -- found 0 possible definitions

如果加上:USE IEEE.numeric_std.ALL;
错误提示:Error (10621): VHDL Use Clause error at add.vhd(8): more than one Use Clause imports a declaration of simple name "unsigned" -- none of the declarations are directly visible


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ADD IS
   PORT(A:IN UNSIGNED(9 DOWNTO 0);
        B:IN UNSIGNED(9 DOWNTO 0);
        C:IN UNSIGNED(3 DOWNTO 0);
        Y:INOUT UNSIGNED(3 DOWNTO 0);
        Z:OUT UNSIGNED(3 DOWNTO 0));
END ADD;
ARCHITECTURE BHV OF ADD IS
   SHARED VARIABLE G:UNSIGNED(1 DOWNTO 0):="00";
SHARED VARIABLE N:UNSIGNED:="0";
   SHARED VARIABLE X:UNSIGNED(4 DOWNTO 0):="00000";
BEGIN
   PROCESS (A)
BEGIN
    IF(G = 00) THEN
     CASE A IS
            WHEN"0000000001" => Y<="0000";
                                 X:="00000";
                G:="01";
            WHEN"0000000010" => Y<="0001";
                                 X:="00001";
           G:="01";
            WHEN"0000000100" => Y<="0010";
                                 X:="00010";
           G:="01";
            WHEN"0000001000" => Y<="0011";
                                 X:="00011";
           G:="01";
            WHEN"0000010000" => Y<="0100";
                                 X:="00100";
           G:="01";
            WHEN"0000100000" => Y<="0101";
                                 X:="00101";
           G:="01";
            WHEN"0001000000" => Y<="0110";
                                 X:="00110";
           G:="01";
            WHEN"0010000000" => Y<="0111";
                                 X:="00111";
           G:="01";
            WHEN"0100000000" => Y<="1000";
                                 X:="01000";
             G:="01";
            WHEN"1000000000" => Y<="1001";
                                 X:="01001";
             G:="01";
            WHEN OTHERS =>NULL;
       END CASE;
      END IF;
END PROCESS;
PROCESS (C)
BEGIN
    IF (G = 01) THEN
     CASE C IS
      WHEN"1000" => N:="1";
                  G:="10";
    WHEN"01000" => N:="0";
                  G:="10";
    WHEN OTHERS =>NULL;
   END CASE;
  END IF;
  IF  (G = 11 AND C = 0010) THEN
     CASE N IS
      WHEN"1"=> X:=X + Y;
    WHEN"0"=> X:=X - Y;
    WHEN OTHERS =>NULL;
   END CASE;
   Y<=X / 10;
   Z<=(X - X REM 10) / 10;
  END IF;
  IF (C = 0000) THEN
     G:="00";
   N:="0";
   X:="00000";
   Y<="0000";
   Z<="0000";
  END IF;
END PROCESS;
PROCESS (B)
BEGIN
    IF (G = 10) THEN
     CASE B IS
      WHEN"0000000001" => Y<="0000";
                G:="11";
            WHEN"0000000010" => Y<="0001";
           G:="11";
            WHEN"0000000100" => Y<="0010";
           G:="11";
            WHEN"0000001000" => Y<="0011";
           G:="11";
            WHEN"0000010000" => Y<="0100";
           G:="11";
            WHEN"0000100000" => Y<="0101";
           G:="11";
            WHEN"0001000000" => Y<="0110";
           G:="11";
            WHEN"0010000000" => Y<="0111";
           G:="11";
            WHEN"0100000000" => Y<="1000";
             G:="11";
            WHEN"1000000000" => Y<="1001";
             G:="11";
            WHEN OTHERS =>NULL;
   END CASE;
  END IF;
END PROCESS;
END BHV;