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

📄 std_logic_arith.vhdl

📁 vhdl集成电路设计软件.需要用gcc-4.0.2版本编译.
💻 VHDL
📖 第 1 页 / 共 5 页
字号:
    begin	result := FALSE;	for i in 0 to sign 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;	return result;    end;    -- compare two unsigned numbers of the same length    -- both arrays must have range (msb downto 0)    function unsigned_is_less_or_equal(A, B: UNSIGNED) return BOOLEAN is	constant sign: INTEGER := A'left;	variable a_is_0, b_is_1, result : boolean;	-- pragma map_to_operator LEQ_UNS_OP	-- pragma type_function UNSIGNED_RETURN_BOOLEAN        -- pragma return_port_name Z    begin	result := TRUE;	for i in 0 to sign 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;	return result;    end;    function "<"(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 305	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less(CONV_UNSIGNED(L, length),				CONV_UNSIGNED(R, length)); -- pragma label lt    end;    function "<"(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 306	constant length: INTEGER := max(L'length, R'length);    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 307	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 308	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 309	constant length: INTEGER := L'length + 1;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 310	constant length: INTEGER := R'length + 1;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 311	constant length: INTEGER := L'length;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<"(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to lt	-- synopsys subpgm_id 312	constant length: INTEGER := R'length;    begin	return is_less(CONV_SIGNED(L, length),			CONV_SIGNED(R, length)); -- pragma label lt    end;    function "<="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 314	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less_or_equal(CONV_UNSIGNED(L, length),			     CONV_UNSIGNED(R, length)); -- pragma label leq    end;    function "<="(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 315	constant length: INTEGER := max(L'length, R'length);    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 316	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 317	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 318	constant length: INTEGER := L'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 319	constant length: INTEGER := R'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 320	constant length: INTEGER := L'length;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function "<="(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to leq	-- synopsys subpgm_id 321	constant length: INTEGER := R'length;    begin	return is_less_or_equal(CONV_SIGNED(L, length),				CONV_SIGNED(R, length)); -- pragma label leq    end;    function ">"(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 323	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less(CONV_UNSIGNED(R, length),				CONV_UNSIGNED(L, length)); -- pragma label gt    end;    function ">"(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 324	constant length: INTEGER := max(L'length, R'length);    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 325	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 326	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 327	constant length: INTEGER := L'length + 1;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 328	constant length: INTEGER := R'length + 1;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 329	constant length: INTEGER := L'length;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">"(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to gt	-- synopsys subpgm_id 330	constant length: INTEGER := R'length;    begin	return is_less(CONV_SIGNED(R, length),		       CONV_SIGNED(L, length)); -- pragma label gt    end;    function ">="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 332	constant length: INTEGER := max(L'length, R'length);    begin	return unsigned_is_less_or_equal(CONV_UNSIGNED(R, length),			CONV_UNSIGNED(L, length)); -- pragma label geq    end;    function ">="(L: SIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 333	constant length: INTEGER := max(L'length, R'length);    begin	return is_less_or_equal(CONV_SIGNED(R, length),			CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 334	constant length: INTEGER := max(L'length + 1, R'length);    begin	return is_less_or_equal(CONV_SIGNED(R, length),			CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 335	constant length: INTEGER := max(L'length, R'length + 1);    begin	return is_less_or_equal(CONV_SIGNED(R, length),			CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 336	constant length: INTEGER := L'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 337	constant length: INTEGER := R'length + 1;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: SIGNED; R: INTEGER) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 338	constant length: INTEGER := L'length;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    function ">="(L: INTEGER; R: SIGNED) return BOOLEAN is	-- pragma label_applies_to geq	-- synopsys subpgm_id 339	constant length: INTEGER := R'length;    begin	return is_less_or_equal(CONV_SIGNED(R, length),				CONV_SIGNED(L, length)); -- pragma label geq    end;    -- for internal use only.  Assumes SIGNED arguments of equal length.    function bitwise_eql(L: STD_ULOGIC_VECTOR; R: STD_ULOGIC_VECTOR)						return BOOLEAN is	-- pragma built_in SYN_EQL    begin	for i in L'range loop	    if L(i) /= R(i) then		return FALSE;	    end if;	end loop;	return TRUE;    end;    -- for internal use only.  Assumes SIGNED arguments of equal length.    function bitwise_neq(L: STD_ULOGIC_VECTOR; R: STD_ULOGIC_VECTOR)						return BOOLEAN is	-- pragma built_in SYN_NEQ    begin	for i in L'range loop	    if L(i) /= R(i) then		return TRUE;	    end if;	end loop;	return FALSE;    end;    function "="(L: UNSIGNED; R: UNSIGNED) return BOOLEAN is	-- synopsys subpgm_id 341	constant length: INTEGER := max(L'length, R'length);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_UNSIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_UNSIGNED(R, length) ) );    end;    function "="(L: SIGNED; R: SIGNED) return BOOLEAN is	-- synopsys subpgm_id 342	constant length: INTEGER := max(L'length, R'length);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: UNSIGNED; R: SIGNED) return BOOLEAN is	-- synopsys subpgm_id 343	constant length: INTEGER := max(L'length + 1, R'length);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: SIGNED; R: UNSIGNED) return BOOLEAN is	-- synopsys subpgm_id 344	constant length: INTEGER := max(L'length, R'length + 1);    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: UNSIGNED; R: INTEGER) return BOOLEAN is	-- synopsys subpgm_id 345	constant length: INTEGER := L'length + 1;    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;    function "="(L: INTEGER; R: UNSIGNED) return BOOLEAN is	-- synopsys subpgm_id 346	constant length: INTEGER := R'length + 1;    begin	return bitwise_eql( STD_ULOGIC_VECTOR( CONV_SIGNED(L, length) ),		STD_ULOGIC_VECTOR( CONV_SIGNED(R, length) ) );    end;

⌨️ 快捷键说明

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