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

📄 std_logic_arith.vhdl

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 VHDL
📖 第 1 页 / 共 5 页
字号:
    function "+"(L: STD_ULOGIC; R: UNSIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to plus	-- synopsys subpgm_id 269	constant length: INTEGER := R'length;    begin	return STD_LOGIC_VECTOR (		unsigned_plus(-- pragma label plus		CONV_UNSIGNED(L, length), CONV_UNSIGNED(R, length)));     end;    function "+"(L: SIGNED; R: STD_ULOGIC) return STD_LOGIC_VECTOR is	-- pragma label_applies_to plus	-- synopsys subpgm_id 270	constant length: INTEGER := L'length;    begin	return STD_LOGIC_VECTOR (		plus(-- pragma label plus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "+"(L: STD_ULOGIC; R: SIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to plus	-- synopsys subpgm_id 271	constant length: INTEGER := R'length;    begin	return STD_LOGIC_VECTOR (		plus(-- pragma label plus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: UNSIGNED; R: UNSIGNED) return UNSIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 248	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_minus(CONV_UNSIGNED(L, length),		      	      CONV_UNSIGNED(R, length)); -- pragma label minus    end;    function "-"(L: SIGNED; R: SIGNED) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 249	constant length: INTEGER := max(L'length, R'length);    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: UNSIGNED; R: SIGNED) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 250	constant length: INTEGER := max(L'length + 1, R'length);    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: SIGNED; R: UNSIGNED) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 251	constant length: INTEGER := max(L'length, R'length + 1);    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: UNSIGNED; R: INTEGER) return UNSIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 252	constant length: INTEGER := L'length + 1;    begin	return CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1);    end;    function "-"(L: INTEGER; R: UNSIGNED) return UNSIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 253	constant length: INTEGER := R'length + 1;    begin	return CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1);    end;    function "-"(L: SIGNED; R: INTEGER) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 254	constant length: INTEGER := L'length;    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: INTEGER; R: SIGNED) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 255	constant length: INTEGER := R'length;    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: UNSIGNED; R: STD_ULOGIC) return UNSIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 256	constant length: INTEGER := L'length + 1;    begin	return CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1);    end;    function "-"(L: STD_ULOGIC; R: UNSIGNED) return UNSIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 257	constant length: INTEGER := R'length + 1;    begin	return CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1);    end;    function "-"(L: SIGNED; R: STD_ULOGIC) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 258	constant length: INTEGER := L'length;    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: STD_ULOGIC; R: SIGNED) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 259	constant length: INTEGER := R'length;    begin	return minus(CONV_SIGNED(L, length),		     CONV_SIGNED(R, length)); -- pragma label minus    end;    function "-"(L: UNSIGNED; R: UNSIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 272	constant length: INTEGER := max(L'length, R'length);    begin	return STD_LOGIC_VECTOR (		unsigned_minus(-- pragma label minus		CONV_UNSIGNED(L, length), CONV_UNSIGNED(R, length)));     end;    function "-"(L: SIGNED; R: SIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 273	constant length: INTEGER := max(L'length, R'length);    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: UNSIGNED; R: SIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 274	constant length: INTEGER := max(L'length + 1, R'length);    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: SIGNED; R: UNSIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 275	constant length: INTEGER := max(L'length, R'length + 1);    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: UNSIGNED; R: INTEGER) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 276	constant length: INTEGER := L'length + 1;    begin	return STD_LOGIC_VECTOR (CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1));    end;    function "-"(L: INTEGER; R: UNSIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 277	constant length: INTEGER := R'length + 1;    begin	return STD_LOGIC_VECTOR (CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1));    end;    function "-"(L: SIGNED; R: INTEGER) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 278	constant length: INTEGER := L'length;    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: INTEGER; R: SIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 279	constant length: INTEGER := R'length;    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: UNSIGNED; R: STD_ULOGIC) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 280	constant length: INTEGER := L'length + 1;    begin	return STD_LOGIC_VECTOR (CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1));    end;    function "-"(L: STD_ULOGIC; R: UNSIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 281	constant length: INTEGER := R'length + 1;    begin	return STD_LOGIC_VECTOR (CONV_UNSIGNED(		minus( -- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)), length-1));    end;    function "-"(L: SIGNED; R: STD_ULOGIC) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 282	constant length: INTEGER := L'length;    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "-"(L: STD_ULOGIC; R: SIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 283	constant length: INTEGER := R'length;    begin	return STD_LOGIC_VECTOR (		minus(-- pragma label minus		CONV_SIGNED(L, length), CONV_SIGNED(R, length)));     end;    function "+"(L: UNSIGNED) return UNSIGNED is	-- synopsys subpgm_id 284    begin	return L;    end;    function "+"(L: SIGNED) return SIGNED is	-- synopsys subpgm_id 285    begin	return L;    end;    function "-"(L: SIGNED) return SIGNED is	-- pragma label_applies_to minus	-- synopsys subpgm_id 286    begin	return 0 - L; -- pragma label minus    end;    function "ABS"(L: SIGNED) return SIGNED is	-- synopsys subpgm_id 287    begin	if (L(L'left) = '0' or L(L'left) = 'L') then	    return L;	else	    return 0 - L;	end if;    end;    function "+"(L: UNSIGNED) return STD_LOGIC_VECTOR is	-- synopsys subpgm_id 289    begin	return STD_LOGIC_VECTOR (L);    end;    function "+"(L: SIGNED) return STD_LOGIC_VECTOR is	-- synopsys subpgm_id 290    begin	return STD_LOGIC_VECTOR (L);    end;    function "-"(L: SIGNED) return STD_LOGIC_VECTOR is	-- pragma label_applies_to minus	-- synopsys subpgm_id 292	variable tmp: SIGNED(L'length-1 downto 0);    begin	tmp := 0 - L;  -- pragma label minus	return STD_LOGIC_VECTOR (tmp);     end;    function "ABS"(L: SIGNED) return STD_LOGIC_VECTOR is	-- synopsys subpgm_id 294	variable tmp: SIGNED(L'length-1 downto 0);    begin	if (L(L'left) = '0' or L(L'left) = 'L') then	    return STD_LOGIC_VECTOR (L);	else	    tmp := 0 - L;	    return STD_LOGIC_VECTOR (tmp);	end if;    end;    -- Type propagation function which returns the type BOOLEAN    function UNSIGNED_RETURN_BOOLEAN(A,B: UNSIGNED) return BOOLEAN is      variable Z: BOOLEAN;      -- pragma return_port_name Z    begin      return(Z);    end;	    -- Type propagation function which returns the type BOOLEAN    function SIGNED_RETURN_BOOLEAN(A,B: SIGNED) return BOOLEAN is      variable Z: BOOLEAN;      -- pragma return_port_name Z    begin      return(Z);    end;	    -- compare two signed numbers of the same length    -- both arrays must have range (msb downto 0)    function is_less(A, B: SIGNED) return BOOLEAN is	constant sign: INTEGER := A'left;	variable a_is_0, b_is_1, result : boolean;	-- pragma map_to_operator LT_TC_OP	-- pragma type_function SIGNED_RETURN_BOOLEAN        -- pragma return_port_name Z    begin	if A(sign) /= B(sign) then	    result := A(sign) = '1';	else	    result := FALSE;	    for i in 0 to sign-1 loop		a_is_0 := A(i) = '0';		b_is_1 := B(i) = '1';		result := (a_is_0 and b_is_1) or			  (a_is_0 and result) or			  (b_is_1 and result);	    end loop;	end if;	return result;    end;    -- compare two signed numbers of the same length    -- both arrays must have range (msb downto 0)    function is_less_or_equal(A, B: SIGNED) return BOOLEAN is	constant sign: INTEGER := A'left;	variable a_is_0, b_is_1, result : boolean;	-- pragma map_to_operator LEQ_TC_OP	-- pragma type_function SIGNED_RETURN_BOOLEAN        -- pragma return_port_name Z    begin	if A(sign) /= B(sign) then	    result := A(sign) = '1';	else	    result := TRUE;	    for i in 0 to sign-1 loop		a_is_0 := A(i) = '0';		b_is_1 := B(i) = '1';		result := (a_is_0 and b_is_1) or			  (a_is_0 and result) or			  (b_is_1 and result);	    end loop;	end if;	return result;    end;    -- compare two unsigned numbers of the same length    -- both arrays must have range (msb downto 0)    function unsigned_is_less(A, B: UNSIGNED) return BOOLEAN is	constant sign: INTEGER := A'left;	variable a_is_0, b_is_1, result : boolean;	-- pragma map_to_operator LT_UNS_OP	-- pragma type_function UNSIGNED_RETURN_BOOLEAN        -- pragma return_port_name Z

⌨️ 快捷键说明

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