⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numeric_std-body.vhdl

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 VHDL
📖 第 1 页 / 共 5 页
字号:
    variable L01 : UNSIGNED(L_LEFT downto 0);    variable R01 : UNSIGNED(R_LEFT downto 0);  begin    if ((L'LENGTH < 1) or (R'LENGTH < 1)) then      assert NO_WARNING          report "NUMERIC_STD.""="": null argument detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    L01 := TO_01(XL, 'X');    R01 := TO_01(XR, 'X');    if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then      assert NO_WARNING          report "NUMERIC_STD.""="": metavalue detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    return UNSIGNED_EQUAL(RESIZE(L01, SIZE), RESIZE(R01, SIZE));  end "=";  -- Id: C.26  function "=" (L, R: SIGNED) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XL: SIGNED(L_LEFT downto 0) is L;    alias XR: SIGNED(R_LEFT downto 0) is R;    constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH);    variable L01 : SIGNED(L_LEFT downto 0);    variable R01 : SIGNED(R_LEFT downto 0);  begin    if ((L'LENGTH < 1) or (R'LENGTH < 1)) then      assert NO_WARNING          report "NUMERIC_STD.""="": null argument detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    L01 := TO_01(XL, 'X');    R01 := TO_01(XR, 'X');    if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then      assert NO_WARNING          report "NUMERIC_STD.""="": metavalue detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    return SIGNED_EQUAL(RESIZE(L01, SIZE), RESIZE(R01, SIZE));  end "=";  -- Id: C.27  function "=" (L: NATURAL; R: UNSIGNED) return BOOLEAN is    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XR: UNSIGNED(R_LEFT downto 0) is R;    variable R01 : UNSIGNED(R_LEFT downto 0);  begin    if (R'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""="": null argument detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    R01 := TO_01(XR, 'X');    if (R01(R01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""="": metavalue detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    if UNSIGNED_NUM_BITS(L) > R'LENGTH then return FALSE;    end if;    return UNSIGNED_EQUAL(TO_UNSIGNED(L, R01'LENGTH), R01);  end "=";  -- Id: C.28  function "=" (L: INTEGER; R: SIGNED) return BOOLEAN is    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XR: SIGNED(R_LEFT downto 0) is R;    variable R01 : SIGNED(R_LEFT downto 0);  begin    if (R'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""="": null argument detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    R01 := TO_01(XR, 'X');    if (R01(R01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""="": metavalue detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    if SIGNED_NUM_BITS(L) > R'LENGTH then return FALSE;    end if;    return SIGNED_EQUAL(TO_SIGNED(L, R01'LENGTH), R01);  end "=";  -- Id: C.29  function "=" (L: UNSIGNED; R: NATURAL) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    alias XL: UNSIGNED(L_LEFT downto 0) is L;    variable L01 : UNSIGNED(L_LEFT downto 0);  begin    if (L'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""="": null argument detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    L01 := TO_01(XL, 'X');    if (L01(L01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""="": metavalue detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    if UNSIGNED_NUM_BITS(R) > L'LENGTH then return FALSE;    end if;    return UNSIGNED_EQUAL(L01, TO_UNSIGNED(R, L01'LENGTH));  end "=";  -- Id: C.30  function "=" (L: SIGNED; R: INTEGER) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    alias XL: SIGNED(L_LEFT downto 0) is L;    variable L01 : SIGNED(L_LEFT downto 0);  begin    if (L'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""="": null argument detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    L01 := TO_01(XL, 'X');    if (L01(L01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""="": metavalue detected, returning FALSE"          severity WARNING;      return FALSE;    end if;    if SIGNED_NUM_BITS(R) > L'LENGTH then return FALSE;    end if;    return SIGNED_EQUAL(L01, TO_SIGNED(R, L01'LENGTH));  end "=";  --============================================================================  -- Id: C.31  function "/=" (L, R: UNSIGNED) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XL: UNSIGNED(L_LEFT downto 0) is L;    alias XR: UNSIGNED(R_LEFT downto 0) is R;    constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH);    variable L01 : UNSIGNED(L_LEFT downto 0);    variable R01 : UNSIGNED(R_LEFT downto 0);  begin    if ((L'LENGTH < 1) or (R'LENGTH < 1)) then      assert NO_WARNING          report "NUMERIC_STD.""/="": null argument detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    L01 := TO_01(XL, 'X');    R01 := TO_01(XR, 'X');    if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then      assert NO_WARNING          report "NUMERIC_STD.""/="": metavalue detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    return not(UNSIGNED_EQUAL(RESIZE(L01, SIZE), RESIZE(R01, SIZE)));  end "/=";  -- Id: C.32  function "/=" (L, R: SIGNED) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XL: SIGNED(L_LEFT downto 0) is L;    alias XR: SIGNED(R_LEFT downto 0) is R;    constant SIZE: NATURAL := MAX(L'LENGTH, R'LENGTH);    variable L01 : SIGNED(L_LEFT downto 0);    variable R01 : SIGNED(R_LEFT downto 0);  begin    if ((L'LENGTH < 1) or (R'LENGTH < 1)) then      assert NO_WARNING          report "NUMERIC_STD.""/="": null argument detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    L01 := TO_01(XL, 'X');    R01 := TO_01(XR, 'X');    if ((L01(L01'LEFT)='X') or (R01(R01'LEFT)='X')) then      assert NO_WARNING          report "NUMERIC_STD.""/="": metavalue detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    return not(SIGNED_EQUAL(RESIZE(L01, SIZE), RESIZE(R01, SIZE)));  end "/=";  -- Id: C.33  function "/=" (L: NATURAL; R: UNSIGNED) return BOOLEAN is    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XR: UNSIGNED(R_LEFT downto 0) is R;    variable R01 : UNSIGNED(R_LEFT downto 0);  begin    if (R'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""/="": null argument detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    R01 := TO_01(XR, 'X');    if (R01(R01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""/="": metavalue detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    if UNSIGNED_NUM_BITS(L) > R'LENGTH then return TRUE;    end if;    return not(UNSIGNED_EQUAL(TO_UNSIGNED(L, R01'LENGTH), R01));  end "/=";  -- Id: C.34  function "/=" (L: INTEGER; R: SIGNED) return BOOLEAN is    constant R_LEFT: INTEGER := R'LENGTH-1;    alias XR: SIGNED(R_LEFT downto 0) is R;    variable R01 : SIGNED(R_LEFT downto 0);  begin    if (R'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""/="": null argument detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    R01 := TO_01(XR, 'X');    if (R01(R01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""/="": metavalue detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    if SIGNED_NUM_BITS(L) > R'LENGTH then return TRUE;    end if;    return not(SIGNED_EQUAL(TO_SIGNED(L, R01'LENGTH), R01));  end "/=";  -- Id: C.35  function "/=" (L: UNSIGNED; R: NATURAL) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    alias XL: UNSIGNED(L_LEFT downto 0) is L;    variable L01 : UNSIGNED(L_LEFT downto 0);  begin    if (L'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""/="": null argument detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    L01 := TO_01(XL, 'X');    if (L01(L01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""/="": metavalue detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    if UNSIGNED_NUM_BITS(R) > L'LENGTH then return TRUE;    end if;    return not(UNSIGNED_EQUAL(L01, TO_UNSIGNED(R, L01'LENGTH)));  end "/=";  -- Id: C.36  function "/=" (L: SIGNED; R: INTEGER) return BOOLEAN is    constant L_LEFT: INTEGER := L'LENGTH-1;    alias XL: SIGNED(L_LEFT downto 0) is L;    variable L01 : SIGNED(L_LEFT downto 0);  begin    if (L'LENGTH < 1) then      assert NO_WARNING          report "NUMERIC_STD.""/="": null argument detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    L01 := TO_01(XL, 'X');    if (L01(L01'LEFT)='X') then      assert NO_WARNING          report "NUMERIC_STD.""/="": metavalue detected, returning TRUE"          severity WARNING;      return TRUE;    end if;    if SIGNED_NUM_BITS(R) > L'LENGTH then return TRUE;    end if;    return not(SIGNED_EQUAL(L01, TO_SIGNED(R, L01'LENGTH)));  end "/=";  --============================================================================  -- Id: S.1  function SHIFT_LEFT (ARG: UNSIGNED; COUNT: NATURAL) return UNSIGNED is  begin    if (ARG'LENGTH < 1) then return NAU;    end if;    return UNSIGNED(XSLL(STD_LOGIC_VECTOR(ARG), COUNT));  end SHIFT_LEFT;  -- Id: S.2  function SHIFT_RIGHT (ARG: UNSIGNED; COUNT: NATURAL) return UNSIGNED is  begin    if (ARG'LENGTH < 1) then return NAU;    end if;    return UNSIGNED(XSRL(STD_LOGIC_VECTOR(ARG), COUNT));  end SHIFT_RIGHT;  -- Id: S.3  function SHIFT_LEFT (ARG: SIGNED; COUNT: NATURAL) return SIGNED is  begin    if (ARG'LENGTH < 1) then return NAS;    end if;    return SIGNED(XSLL(STD_LOGIC_VECTOR(ARG), COUNT));  end SHIFT_LEFT;  -- Id: S.4  function SHIFT_RIGHT (ARG: SIGNED; COUNT: NATURAL) return SIGNED is  begin    if (ARG'LENGTH < 1) then return NAS;    end if;    return SIGNED(XSRA(STD_LOGIC_VECTOR(ARG), COUNT));  end SHIFT_RIGHT;  --============================================================================  -- Id: S.5  function ROTATE_LEFT (ARG: UNSIGNED; COUNT: NATURAL) return UNSIGNED is  begin    if (ARG'LENGTH < 1) then return NAU;    end if;    return UNSIGNED(XROL(STD_LOGIC_VECTOR(ARG), COUNT));  end ROTATE_LEFT;  -- Id: S.6  function ROTATE_RIGHT (ARG: UNSIGNED; COUNT: NATURAL) return UNSIGNED is  begin    if (ARG'LENGTH < 1) then return NAU;    end if;    return UNSIGNED(XROR(STD_LOGIC_VECTOR(ARG), COUNT));  end ROTATE_RIGHT;  -- Id: S.7  function ROTATE_LEFT (ARG: SIGNED; COUNT: NATURAL) return SIGNED is  begin    if (ARG'LENGTH < 1) then return NAS;    end if;    return SIGNED(XROL(STD_LOGIC_VECTOR(ARG), COUNT));  end ROTATE_LEFT;  -- Id: S.8  function ROTATE_RIGHT (ARG: SIGNED; COUNT: NATURAL) return SIGNED is  begin    if (ARG'LENGTH < 1) then return NAS;    end if;    return SIGNED(XROR(STD_LOGIC_VECTOR(ARG), COUNT));  end ROTATE_RIGHT;  --============================================================================--START-V93  ------------------------------------------------------------------------------  -- Note : Function S.9 is not compatible with VHDL 1076-1987. Comment  -- out the function (declaration and body) for VHDL 1076-1987 compatibility.  ------------------------------------------------------------------------------  -- Id: S.9  function "sll" (ARG: UNSIGNED; COUNT: INTEGER) return UNSIGNED is  begin    if (COUNT >= 0) then      return SHIFT_LEFT(ARG, COUNT);    else      return SHIFT_RIGHT(ARG, -COUNT);    end if;  end "sll";  ------------------------------------------------------------------------------  --   Note : Function S.10 is not compatible with VHDL 1076-1987. Comment  --   out the function (declaration and body) for VHDL 1076-1987 compatibility.  ------------------------------------------------------------------------------  -- Id: S.10  function "sll" (ARG: SIGNED; COUNT: INTEGER) return SIGNED is  begin    if (COUNT >= 0) then      return SHIFT_LEFT(ARG, COUNT);    else      return SIGNED(SHIFT_RIGHT(UNSIGNED(ARG), -COUNT));    end if;  end "sll";  ------------------------------------------------------------------------------  --   Note : Function S.11 is not compatible with VHDL 1076-1987. Comment  --   out the function (de

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -