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

📄 std_logic_unsigned.vhdl

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 VHDL
字号:
----------------------------------------------------------------------------                                                                      ---- Copyright (c) 1990, 1991, 1992 by Synopsys, Inc.                     ----                                             All rights reserved.     ----                                                                      ---- This source file may be used and distributed without restriction     ---- provided that this copyright statement is not removed from the file  ---- and that any derivative work contains this copyright notice.         ----                                                                      ----	Package name: STD_LOGIC_UNSIGNED                                ----                                 					----									----      Date:        	09/11/92	KN				----			10/08/92 	AMT				----									----	Purpose: 							----	 A set of unsigned arithemtic, conversion,                      ----           and comparision functions for STD_LOGIC_VECTOR.            ----									----	Note:  comparision of same length discrete arrays is defined	----		by the LRM.  This package will "overload" those 	----		definitions						----									----------------------------------------------------------------------------library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;package STD_LOGIC_UNSIGNED is    function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "+"(L: STD_LOGIC_VECTOR; R: INTEGER) return STD_LOGIC_VECTOR;    function "+"(L: INTEGER; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC) return STD_LOGIC_VECTOR;    function "+"(L: STD_LOGIC; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "-"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "-"(L: STD_LOGIC_VECTOR; R: INTEGER) return STD_LOGIC_VECTOR;    function "-"(L: INTEGER; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "-"(L: STD_LOGIC_VECTOR; R: STD_LOGIC) return STD_LOGIC_VECTOR;    function "-"(L: STD_LOGIC; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "+"(L: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "*"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function "<"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "<"(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;    function "<"(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "<="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "<="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;    function "<="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN;    function ">"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN;    function ">"(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;    function ">"(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN;    function ">="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN;    function ">="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;    function ">="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;    function "="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "/="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN;    function "/="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN;    function "/="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN;    function SHL(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function SHR(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR;    function CONV_INTEGER(ARG: STD_LOGIC_VECTOR) return INTEGER;-- remove this since it is already in std_logic_arith--    function CONV_STD_LOGIC_VECTOR(ARG: INTEGER; SIZE: INTEGER) return STD_LOGIC_VECTOR;end STD_LOGIC_UNSIGNED;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;package body STD_LOGIC_UNSIGNED is    function maximum(L, R: INTEGER) return INTEGER is    begin        if L > R then            return L;        else            return R;        end if;    end;    function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        -- pragma label_applies_to plus        constant length: INTEGER := maximum(L'length, R'length);        variable result  : STD_LOGIC_VECTOR (length-1 downto 0);    begin        result  := UNSIGNED(L) + UNSIGNED(R);-- pragma label plus        return   std_logic_vector(result);    end;    function "+"(L: STD_LOGIC_VECTOR; R: INTEGER) return STD_LOGIC_VECTOR is        -- pragma label_applies_to plus        variable result  : STD_LOGIC_VECTOR (L'range);    begin        result  := UNSIGNED(L) + R;-- pragma label plus        return   std_logic_vector(result);    end;    function "+"(L: INTEGER; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        -- pragma label_applies_to plus        variable result  : STD_LOGIC_VECTOR (R'range);    begin        result  := L + UNSIGNED(R);-- pragma label plus        return   std_logic_vector(result);    end;    function "+"(L: STD_LOGIC_VECTOR; R: STD_LOGIC) return STD_LOGIC_VECTOR is        -- pragma label_applies_to plus        variable result  : STD_LOGIC_VECTOR (L'range);    begin        result  := UNSIGNED(L) + R;-- pragma label plus        return   std_logic_vector(result);    end;    function "+"(L: STD_LOGIC; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is            -- pragma label_applies_to plus    variable result  : STD_LOGIC_VECTOR (R'range);    begin        result  := L + UNSIGNED(R);-- pragma label plus        return   std_logic_vector(result);    end;    function "-"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        -- pragma label_applies_to minus        constant length: INTEGER := maximum(L'length, R'length);        variable result  : STD_LOGIC_VECTOR (length-1 downto 0);    begin        result  := UNSIGNED(L) - UNSIGNED(R); -- pragma label minus        return   std_logic_vector(result);    end;    function "-"(L: STD_LOGIC_VECTOR; R: INTEGER) return STD_LOGIC_VECTOR is        -- pragma label_applies_to minus        variable result  : STD_LOGIC_VECTOR (L'range);    begin        result  := UNSIGNED(L) - R; -- pragma label minus        return   std_logic_vector(result);    end;    function "-"(L: INTEGER; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        -- pragma label_applies_to minus        variable result  : STD_LOGIC_VECTOR (R'range);    begin        result  := L - UNSIGNED(R);  -- pragma label minus        return   std_logic_vector(result);    end;    function "-"(L: STD_LOGIC_VECTOR; R: STD_LOGIC) return STD_LOGIC_VECTOR is        variable result  : STD_LOGIC_VECTOR (L'range);    begin        result  := UNSIGNED(L) - R;        return   std_logic_vector(result);    end;    function "-"(L: STD_LOGIC; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        -- pragma label_applies_to minus        variable result  : STD_LOGIC_VECTOR (R'range);    begin        result  := L - UNSIGNED(R);  -- pragma label minus        return   std_logic_vector(result);    end;    function "+"(L: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        variable result  : STD_LOGIC_VECTOR (L'range);    begin        result  := + UNSIGNED(L);        return   std_logic_vector(result);    end;    function "*"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is        -- pragma label_applies_to mult        constant length: INTEGER := maximum(L'length, R'length);        variable result  : STD_LOGIC_VECTOR ((L'length+R'length-1) downto 0);    begin        result  := UNSIGNED(L) * UNSIGNED(R); -- pragma label mult        return   std_logic_vector(result);    end;            function "<"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN is        -- pragma label_applies_to lt        constant length: INTEGER := maximum(L'length, R'length);    begin        return   UNSIGNED(L) < UNSIGNED(R); -- pragma label lt    end;    function "<"(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN is        -- pragma label_applies_to lt    begin        return   UNSIGNED(L) < R; -- pragma label lt    end;    function "<"(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN is        -- pragma label_applies_to lt    begin        return   L < UNSIGNED(R); -- pragma label lt    end;    function "<="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN is       -- pragma label_applies_to leq    begin        return   UNSIGNED(L) <= UNSIGNED(R); -- pragma label leq    end;    function "<="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN is       -- pragma label_applies_to leq    begin        return   UNSIGNED(L) <= R; -- pragma label leq    end;    function "<="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN is       -- pragma label_applies_to leq    begin        return   L <= UNSIGNED(R); -- pragma label leq    end;    function ">"(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN is        -- pragma label_applies_to gt    begin        return   UNSIGNED(L) > UNSIGNED(R); -- pragma label gt    end;    function ">"(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN is        -- pragma label_applies_to gt    begin        return   UNSIGNED(L) > R; -- pragma label gt    end;    function ">"(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN is        -- pragma label_applies_to gt    begin        return   L > UNSIGNED(R); -- pragma label gt    end;    function ">="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN is        -- pragma label_applies_to geq    begin        return   UNSIGNED(L) >= UNSIGNED(R);  -- pragma label geq    end;    function ">="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN is        -- pragma label_applies_to geq    begin        return   UNSIGNED(L) >= R;  -- pragma label geq    end;    function ">="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN is        -- pragma label_applies_to geq    begin        return   L >= UNSIGNED(R);  -- pragma label geq    end;    function "="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN is    begin        return   UNSIGNED(L) = UNSIGNED(R);    end;    function "="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN is    begin        return   UNSIGNED(L) = R;    end;    function "="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN is    begin        return   L = UNSIGNED(R);    end;    function "/="(L: STD_LOGIC_VECTOR; R: STD_LOGIC_VECTOR) return BOOLEAN is    begin        return   UNSIGNED(L) /= UNSIGNED(R);    end;    function "/="(L: STD_LOGIC_VECTOR; R: INTEGER) return BOOLEAN is    begin        return   UNSIGNED(L) /= R;    end;    function "/="(L: INTEGER; R: STD_LOGIC_VECTOR) return BOOLEAN is    begin        return   L /= UNSIGNED(R);    end;    function CONV_INTEGER(ARG: STD_LOGIC_VECTOR) return INTEGER is        variable result    : UNSIGNED(ARG'range);    begin        result    := UNSIGNED(ARG);        return   CONV_INTEGER(result);    end;    function SHL(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is    begin       return STD_LOGIC_VECTOR(SHL(UNSIGNED(ARG),UNSIGNED(COUNT)));    end;     function SHR(ARG:STD_LOGIC_VECTOR;COUNT: STD_LOGIC_VECTOR) return STD_LOGIC_VECTOR is    begin       return STD_LOGIC_VECTOR(SHR(UNSIGNED(ARG),UNSIGNED(COUNT)));    end;-- remove this since it is already in std_logic_arith    --function CONV_STD_LOGIC_VECTOR(ARG: INTEGER; SIZE: INTEGER) return STD_LOGIC_VECTOR is        --variable result1 : UNSIGNED (SIZE-1 downto 0);        --variable result2 : STD_LOGIC_VECTOR (SIZE-1 downto 0);    --begin        --result1 := CONV_UNSIGNED(ARG,SIZE);        --return   std_logic_vector(result1);    --end;end STD_LOGIC_UNSIGNED;

⌨️ 快捷键说明

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